2010年3月25日木曜日

WindowsPowerShellのプロンプトを短くする

Windows 7を導入する強い動機にさえなる「Windows Power Shell」ですが、これは本当に便利。プライベートに仕事に、Windowsそのものの使い勝手を劇的に変えてくれます。

さて、そんなWindows Power Shellですが、初期状態だとプロンプトの表示が長くて困ってしまうかも。
カレントディレクトリをフルパス表示しているのが原因なので、今回はこれを短くしてみようかと思います。
フルパスじゃなくて、カレントディレクトリだけを表示します。

その方法は、初期設定ファイルにprompt()関数を作ります
初期設定ファイルは、標準状態では以下のディレクトリにあります。
C:\Users\ユーザー名\Documents\WindowsPowerShell

ファイル名は、WindowsPowerShell用がMicrosoft.PowerShell_profile.ps1
ISE用だと、Microsoft.PowerShellISE_profile.ps1
になりますね。

ファイルの中に、以下の関数を記述します。globalもいらないし、returnで結果を返す書き方もしないのがポイントです。

#プロンプト表示
function prompt()
{
   "[" + (Split-Path(Get-Location) -leaf) + "]>";
}

■関数のご説明■

Get-Locationは、カレントディレクトリをフルパス表示します。
まさに初期状態のプロンプトって、これ+装飾なんですよね。

Split-Path(フルパス) -leaf は、フルパスの情報を受け取ったら、そこから最後のディレクトリ要素、つまりカレントディレクトリだけを抜き出して表示してくれます。

"["と"]>"は、単なる装飾なので、好きな記号に変えられます。

Windows Power Shellは、全ての結果が、テキストではなくて、オブジェクトで返ってくるのが特長。
Get-Locationで返ってくるフルパスは、テキスト形式に見えますけれど、実はPathInfo型です。
だから、その結果をSplit-Pathに渡して・・・って次の処理に繋げる事が出来るわけです。

ちなみに、Windowsは、ディレクトリの事をフォルダ(今は語尾を伸ばしてフォルダー)と言いますが、WindowsPowerShell、Windows 7などでは、やっぱりディレクトリに回帰しているし、Linuxは元々ディレクトリなので、もうディレクトリで統一して良い気がします。