중간에 인수가있는 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, 래퍼 함수는 지금까지 가장 좋은 방법입니다. 그러나 다음과 같은 몇 가지 해결 방법이 발명되었음을 알고 있습니다.
다음은 호출 방법에 따라 다른 작업을 수행하는 샘플 함수입니다.
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 이 경우이 답변에서 사용 하십시오 .
'Program Club' 카테고리의 다른 글
| Angular 4+ ngOnDestroy () 서비스 중-Observable 제거 (0) | 2020.11.21 |
|---|---|
| C ++ 17 : 튜플 압축을 풀 때 일부 멤버 만 유지 (0) | 2020.11.21 |
| CSS3 단방향 전환? (0) | 2020.11.21 |
| _를 어떻게 제거합니까? (0) | 2020.11.21 |
| Windows에서 cd / d % ~ dp0 명령은 무엇을 의미합니까? (0) | 2020.11.20 |