PowerhsellでBashのようなaliasコマンドを使用できるようにする方法についてメモです。
powershellのaliasでは、bashと違い、cd
などができない。また、ruby.exe
ようなaliasは設定できても、ruby.exe dev.rb
のような引数を含むaliasはbashと違い設定できない。
cdができない問題は、function+set-locationを使用して代替策とする。
Aliases can’t use parameters, so define a function instead.
function cdt { set-location "F:\a" }
これで、alias cdt="cd F:/a"
と同様のコマンドになる。
exeでも引数が使用できないのは痛い。この問題を解決するには以下のスクリプトを使用する。
function New-BashStyleAlias([string]$name, [string]$command)
{
$sb = [scriptblock]::Create($command)
New-Item "Function:\global:$name" -Value $sb | Out-Null
}
New-BashStyleAlias openDev_ "notepad.exe C:\pg\dev.txt"
openDev_
# => 成功
new-alias openDev "notepad.exe C:\pg\dev.txt"
openDev
# => 失敗
使用例:
New-BashStyleAlias railsdev "ssh -R 52698:localhost:52698 -p 3022 yuis@192.168.99.1"
# => 成功
# 蛇足:sshconfigよりもこっちが好きです。
django – Equivalent to Bash alias in PowerShell – Stack Overflow