我正在尝试设置Windows PowerShell别名以使用某些参数运行MinGW的g ++可执行文件。但是,这些参数必须位于文件名和其他参数之后。我不想麻烦地尝试设置一个函数以及所有这些。有没有一种方法可以简单地说:
alias mybuild="g++ {args} -lib1 -lib2 ..."
或类似的规定?我对PowerShell并不是很熟悉,而且我很难找到解决方案。任何人?
Answers:
要构建功能,请将其存储为别名,并将整个内容保留在配置文件中以备后用,请使用:
$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
此答案。
ps | grep
在哪里grep
别名有效。grep
函数在哪里,上面无限期地挂起。有没有解决方法?
>>
创建一个按需文件,幸运的是,不需要额外的逻辑来处理$PROFILE
尚不存在的文件。
这是一个示例函数,将根据其调用方式执行不同的操作:
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}
}
Function SCP-Filetransfer { cmd /c pscp.exe -i ~\.ssh\id_rsa.ppk $args } New-Alias -Force pscp SCP-Filetransfer