programing

인수가 중간에 있는 PowerShell 별칭을 작성하려면 어떻게 해야 합니까?

bestprogram 2023. 5. 7. 12:02

인수가 중간에 있는 PowerShell 별칭을 작성하려면 어떻게 해야 합니까?

특정 매개 변수로 MinGW의 g++ 실행 파일을 실행하기 위해 Windows PowerShell 별칭을 설정하려고 합니다.그러나 이러한 매개 변수는 파일 이름과 다른 인수 뒤에 와야 합니다.저는 기능을 설정하는 등의 번거로움을 겪고 싶지 않습니다.간단히 다음과 같은 말을 할 수 있는 방법이 있습니까?

alias mybuild="g++ {args} -lib1 -lib2 ..."

아니면 그 노선들을 따라 뭔가?PowerShell에 익숙하지 않아서 솔루션을 찾는 데 어려움을 겪고 있습니다.누구라도 있나요?

당신은 로만이 언급한 것처럼 가명이 아닌 함수를 사용하기를 원합니다.이와 같은 것:

function mybuild { g++ $args -lib1 -lib2 ... }

다음은 간단한 예입니다.

PS> function docmd { cmd /c $args there }
PS> docmd echo hello
hello there
PS> 

또한 PowerShell을 실행할 때마다 프로필을 사용할 수 있도록 프로필에 저장할 수도 있습니다.프로필 파일의 이름은 다음에 포함되어 있습니다.$profile.

그런 방법은 기본 제공되지 않습니다.IMHO, 래퍼 기능이 가장 좋은 방법입니다.하지만 몇 가지 해결 방법이 발명되었다는 것은 알고 있습니다. 예를 들어 다음과 같습니다.

https://web.archive.org/web/20120213013609/http ://huddledmasses.org/powershell-power-user-tips-bash-style-alias-command

함수를 빌드하고 별칭으로 저장한 후 나중에 전체를 프로필에 유지하려면 다음을 사용합니다.

$g=[guid]::NewGuid();
echo "function G$g { COMMANDS }; New-Alias -Force ALIAS G$g">>$profile

당신이 대체한 곳ALIAS당신이 원하는 가명으로COMMANDS명령 또는 실행할 명령 문자열을 사용합니다.

물론 그렇게 하는 대신 다음과 같은 방법으로 위의 별칭을 만들 수 있습니다.

echo 'function myAlias {
    $g=[guid]::NewGuid();
    $alias = $args[0]; $commands = $args[1]
    echo "function G$g { $commands }; New-Alias -Force $alias G$g">>$profile
}; New-Alias alias myAlias'>>$profile

두 번째 코드 블록을 PowerShell에 붙여넣고 PowerShell을 다시 시작한 후 모든 재귀(에일리어스의 별칭 지정 등)로 인해 뇌가 뒤집힐 경우를 대비하여 간단한 사용 예는 다음과 같습니다.

alias myEcho 'echo $args[0]'

또는 인수 없음:

alias myLs 'ls D:\MyFolder'

만약 당신이 아직 프로필이 없다면.

아직 프로필이 없는 경우 위의 방법은 실패합니다!이 경우, 사용New-Item -type file -path $profile -force 이 대답에서

다음은 호출 방법에 따라 다른 작업을 수행하는 샘플 함수입니다.

Function Do-Something {
[CmdletBinding()] 
[Alias('DOIT')]
Param(
    [string] $option1,
    [string] $option2,
    [int] $option3)
#$MyInvocation|select *|FL
If ($MyInvocation.InvocationName -eq 'DOIT'){write-host "You told me to do it...so i did!" -ForegroundColor Yellow}
Else {Write-Host "you were boring and said do something..." -ForegroundColor Green}
}

'필터'를 만드는 것도 하나의 선택사항이며, 기능에 대한가벼운 대안입니다.파이프라인의 각 요소를 처리하여 $_자동 변수를 할당합니다.예를 들어, 다음과 같습니다.

filter test { Write-Warning "$args $_" }
'foo','bar' | test 'This is'

반환:

WARNING: This is foo
WARNING: This is bar

언급URL : https://stackoverflow.com/questions/4166370/how-can-i-write-a-powershell-alias-with-arguments-in-the-middle