C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2008/11/02 00:57
先日オライリー・ジャパンさんより刊行された「Windows PowerShellクックブック」を献本頂きました。
僕もまだ読み途中ではありますが、この本を簡単に紹介したいと思います。

本書は、PowerShell 開発メンバーの方が執筆され、MS のエバンジェリストチームの方々が監訳された本です。
260 に及ぶ「レシピ」を紹介していて、ページ数も 600 ページとボリューム満点です。
大きく分けると 3 つの部から構成されていて、第一部が「PowerShell の基本」、第二部が「一般的なタスク」、第三部が「管理者タスク」となってます。

本書を通じて、様々なレシピを身に付けることができます。本書で紹介されている豊富なレシピは初級者から上級者まで幅広い層の方々の役に立つことと思います。
そして、本書を一通り読み終えた後は、リファレンス本としても重宝することと思います。

ではここで、僕が本書を読んですぐに profile.ps1 ファイルに追加した、一つの関数をご紹介したいと思います。

function Prompt
{
    $Host.UI.RawUI.WindowTitle = "$(Get-Location)";
    $id = 1;
    $historyItem = Get-History -Count 1;
    if ($historyItem)
    {
        $id = $historyItem.Id + 1;
    }
    return "PS {0:00000}> " -f $id;
}

Prompt 関数を定義すると、PowerShell のプロンプトをカスタマイズすることができます。上記の Prompt 関数では、プロンプトにセッション履歴番号を表示するようにしています。それだけだと現在のパスがわからなくなってしまうので、現在のパスをウィンドウのタイトルに表示するようにもしています。
セッション履歴番号が一目でわかるようになったことで、Invoke-History コマンドレットがとてつもなく使いやすいものになります。例えばこんな感じです。

PS 00001> 1+1
2
PS 00002> 2+2
4
PS 00003> Invoke-History 2
2+2
4
PS 00004>


この関数は、「レシピ 1.3 シェル、プロファイル、プロンプトを管理する」にて紹介されていた関数をアレンジしたものです。アレンジと言っても、文字色を付けないようにしたり (オリジナルでは Write-Host コマンドレットを使って文字色を付けています)、セッション履歴番号をゼロパディングするようにした、といった程度です。

Prompt 関数を定義することでプロンプトをカスタマイズできることは元々知っていましたが、それを利用してセッション履歴番号を可視化するという発想は持っていませんでした。本書は、このような気付きも与えてくれます。
スポンサーサイト



タグ: .NET PowerShell 書籍