インタラクティブシェルには大抵「エイリアス」と呼ばれる機能が用意されている。UNIX系のインタラクティブシェルであれば、エイリアスは文字列の置き換えとして機能することが多く、多用するコマンドの羅列を1つの言葉で代替するといった使い方でよく用いられる。エイリアスを使うことでタイピングの負担やタイプミスを減らし、時短を実現することができるのだ。

PowerShellにもエイリアスと呼ばれる機能が用意されているのだが、UNIX系のインタラクティブシェルで使われているエイリアスとはかなり趣向が異なる。PowerShellのエイリアスは「コマンドレット」や「コマンド」に別名を付けるものだ。UNIX系インタラクティブシェルのエイリアスのように自由に置き換えができるものではなく、かなり限定的な機能である。

しかし、だからと言って使えない機能ということではない。PowerShelllではエイリアスと関数に明確な用途の違いがある。逆に言えば、UNIX系インタラクティブシェルのエイリアスが強力過ぎると言えなくもない。PowerShellのエイリアスは、それはそれで利用できる。今回はこのエイリアス機能を見ていこう。

PowerShellのエイリアス

PowerShellではデフォルトの状態でいくつものエイリアスが設定されている。何となくDOSコマンドやUNIX系コマンドを入力しても動作するのは、このエイリアスによってコマンドレットが呼び出されているからだ。設定されているエイリアスは、以下のように「Get-Alias」コマンドレットを実行することで一覧表示させることができる。

Get-Alias

Get-Aliasコマンドレットは、次のようにエイリアス名を指定して、特定のエイリアスの情報だけを表示させることもできる。

Get-Alias -Name エイリアス名

エイリアスは、次のように「Set-Alias」コマンドレットで設定する。

Set-Alias -Name エイリアス名 -Value コマンドレットやコマンド

この設定はPowerShellが終了するまで有効だ。つまり、「Set-Alias」によるエイリアスの設定を「$PROFILE」に書いておけば、PowerShell起動直後からそのエイリアスを利用できる。例えば、「Set-Alias -Name ls -Value Get-ChildItem」とすれば、「ls」という入力で「Get-ChildItem」が実行されるといった具合だ。

アプリケーションを起動する

PowerShellのエイリアスで最も便利なのは、長い入力が必要になるコマンド(アプリケーション)の入力を短縮することだ。メモ帳なら「notepad」、ファイルエクスプローラなら「explorer」、Windows Terminalなら「wt」、タスクマネージャなら「taskmgr」で、ディスククリーンアップなら「cleanmgr」で起動できる。あらかじめこうした短いコマンドが用意されているアプリケーションは、PowerShellから簡単に起動できる。

これが、Microsoft Edgeであれば「C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe」のように入力する必要があるし、Google Chromeであれば「C:\Program Files (x86)\Google\Chrome\Application\chrome.exe」のように入力する必要がある。面倒なので、これらもできれば「edge」や「chrome」といった短い入力で起動したい。

こういった場合に使えるのがエイリアスだ。次のような設定を「$PROFILE」に書き込んでおく。

Set-Alias -Name edge -Value "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
Set-Alias -Name chrome -Value "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

この設定で、「edge」でMicrosoft Edgeが、「chrome」でGoogle Chromeが起動するようになる。どのパスがアプリケーションの本体なのかを探して指定しなければいけないが、そこさえクリアしてしまえば短いコマンドで素早い起動が可能になる。慣れてしまえば、マウスでメニューやアイコンを選択して起動するよりも、PowerShellからエイリアスを入力して起動したほうが早くアプリケーションを起動できるはずだ。

なお、PowerShellのエイリアスにはオプションを含めることはできない。エイリアスに指定したオプションはSet-Aliasコマンドレットに対するオプションとして解釈されるためだ。エイリアスはあくまでも「名前に別名を付けるもの」として機能する。

アプリケーションに別名を付ける

エイリアスは、すでに短い名前が用意されているコマンドに、さらに別の名前を付けるという使い方もできる。

Windowsでファイルエクスプローラを起動するコマンドは「explorer」だが、macOSだと「open」を使うことが多い。Windowsだと、とりあえずエディタはメモ帳ということで「notepad」と入力するが、LinuxやmacOSだと「vi」や「vim」と入力することも多いだろう。こういう操作はもはや手癖になっていて、必要なときに何も考えずに自然と入力していることもある。同じ操作なら、同じコマンドで実行できるようにしたいところだ。

こういったコマンドも、エイリアスに設定してしまおう。次のような感じだ。

Set-Alias -Name open -Value explorer
Set-Alias -Name vi -Value notepad
Set-Alias -Name vim -Value notepad

上記を「$PROFILE」に書いておけば、PowerShellでエイリアスを使用できる。エイリアスはたくさん追加すればよいというものではないのだが、入力が面倒だと感じているコマンドがあるなら設定したほうがよい。ちょっとしたことだが、作業が快適になる。

エイリアスはコツコツ改善していく

エイリアスは普段PowerShellを使用するなかで徐々にカスタマイズしていくのがよい。追加しても使わないようなら削除し、繰り返し同じコマンドやコマンドレットを使っていると感じたらそれをエイリアスとして設定する。そうやって毎日コツコツと「$PROFILE」の内容をブラッシュアップしていけば、最終的によく使うエイリアスだけが「$PROFILE」に残るような状態になるはずだ。

エイリアスの確認サンプル

UNIX系インタラクティブシェルと同じ要領でPowerShellのエイリアスを使おうとすると、あまりの機能のなさにびっくりするかもしれない。だが、そもそも別名を用意するだけの機能なので、それを踏まえた上で活用してほしい。長いパスを入力しなければならないアプリケーションを短いエイリアス名で起動できるようになると、この機能の便利さを実感できると思う。