PowerShellをインタラクティブシェルとして使う場合、コマンドやコマンドレットの入力をいかに短縮するかが操作効率化の要の一つとなる。その方法として、これまで2回に渡り、エイリアスを利用する方法を紹介した。エイリアスはコマンドやコマンドレットに別名を当てるものだ。より短い名前を割り当てれば、その分だけ入力を短くすることができる。

PowerShellのエイリアスは実にシンプルだが、効果的な機能だ。例えば、PowerShellからアプリケーションを起動する際、場合によっては長いパスを入力しなければならない。入力補完機能が動作するとはいえ、面倒な作業だ。しかし、エイリアスを設定しておけば短い入力でこれを実現することができる。

次のエイリアスは、Google Chromeに対して設定したものだ。この設定で「edge」というコマンド(エイリアス)でGoogle Chromeを起動することができるようになる。フルパスを入力する手間と比べれば雲泥の差だ。

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

ただし、PowerShellのエイリアスは名前だけを置き換えるものだ。エイリアスにオプションを含ませたり、引数を持たせるといったことはできない。しかし、実際にはオプションや引数も含めて別のコマンド(エイリアス)に割り当てたい。そんな場合に使うのが、「関数」だ。

関数で入力をもっと簡単に

関数の使い方については、本連載でもかつて数回に渡って取り上げている。詳しくはそちらを見ていただくとして、本稿ではおさらい程度に使い方を説明しておく。簡単な関数の利用だけでも、インタラクティブシェルとしてのPowerShellの利便性を引き上げることができるはずだ。

LinuxやmacOSではエイリアスが最初から用意されていることが多い。LinuxやmacOSで使われるシェルのエイリアスは、オプションや引数も含めて設定できるため、任意の文字列を割り当てることができるのだが、PowerShellで同じことをするなら関数を使うことになる。

次の関数で、「ll」によって「Get-ChildItem -Force」を実行することができる。PowerShellのエイリアスにはオプションを含めることができないので、こうしたコマンドのエイリアス化を実現するには関数を使うしかないわけだ。

function ll {
    Get-ChildItem -Force
}

次の例は「tree」というコマンドを実際には「wsl tree」で実行するためのものだ。Linux環境にインストールされているtreeコマンドを呼び出して使うことを意味する。

function tree {
    wsl tree
}

これだけの簡単な関数だが、かなり便利になるはずだ。PowerShellに対する批判の一つにコマンドレットの名前の長さやオプションの長さから来る「覚えにくさ」がある。関数を使えば、これらを短い名前に置き換えることができる。

今回はもう一歩進んだ例として、パイプラインと連動する方法も取り上げておこう。LinuxやmacOSでよく使われるコマンドの一つに「grep」がある。全文検索のコマンドで、これを使うといろいろなデータ検索が可能になる。当然、Windows 10からもこのコマンドが使いたい。

次のような関数を用意しておけば、このgrepコマンドを使用できるようになる。

function grep {
    $input | wsl grep $args
}

「ll | grep キーワード」の実行サンプル

上記のような感じで関数を用意しておけば「ll | grep キーワード」のようにしてコマンドを実行することができるようになる。まるでmacOSやLinuxでコマンドを実行しているようだ。こうしたコマンドの短縮が可能になれば、PowerShellを使う際のストレスをかなり低減できるだろう。

PowerShellとWSLとのシームレスな連動は、半年または1年おきに提供されるフィーチャーアップデート版で随時改善が進む可能性があり、いずれは上記のような関数を使わずとも利用できるようになる可能性があるが、それまでは自分で関数を定義して使うことになりそうだ。

関数を使えば、もっと複雑な方法もいける

PowerShellの関数はそれだけで強力な機能だ。この機能をフルに発揮すれば、もっと複雑なことも可能になる。しかし、今回紹介したようなシンプルな使い方だけでもPowerShellをインタラクティブシェルとして使う際の作業効率を引き上げられる。使うと使わないのとでは、大きな違いがある。

PowerShellをインタラクティブシェルとして利用していく際のポイントは、使いながら細かくエイリアスや関数を調整していくことだ。便利だと思ったらすぐに追加し、使わないと思ったらサクッと削除するかコメントアウトしておく。こうした調整を繰り返していくことで、自分にとって使いやすいとインタラクティブシェルへ仕上げていくことができる。