Program Club

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

proclub 2020. 11. 21. 08:55
반응형

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


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

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

아니면 그 라인을 따라 뭔가? PowerShell에 익숙하지 않고 솔루션을 찾는 데 어려움을 겪고 있습니다. 누군가?


Roman이 언급했듯이 별칭이 아닌 함수를 사용하고 싶습니다. 이 같은:

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


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

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}
}

함수를 빌드하고 별칭으로 저장하고 나중에 프로필에 모든 것을 유지하려면 다음을 사용하십시오.

$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 이 경우이 답변에서 사용 하십시오 .

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

반응형