PowerShell 7をインタラクティブシェルとして使う - 関数で短縮入力

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第108回】PowerShell 7をインタラクティブシェルとして使う - 関数で短縮入力

[2020/07/17 08:00]後藤大地 ブックマーク ブックマーク

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

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
知りたい! カナコさん 皆で話そうAIのコト
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る