特定のパラメーターを使用して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
に含まれています。
そのような方法は組み込まれていません。私見、ラッパー関数はこれまでのところ最善の方法です。しかし、次のようないくつかの回避策が考案されたことを知っています。
これは、呼び出された方法に基づいて異なることを行うサンプル関数です。
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に2番目のコードブロックを貼り付けた(そしてPowerShellを再起動した)後、脳がすべての再帰(エイリアスのエイリアスなど)で裏返しになった場合に備えて、簡単な使用例を次に示します。
alias myEcho 'echo $args[0]'
または引数なし:
alias myLs 'ls D:\MyFolder'
まだプロファイルがない場合、上記の方法は失敗します!その場合は、New-Item -type file -path $profile -force
この回答から 。