2010年6月19日土曜日

◆プロンプトをカスタマイズする

Promptという名前の関数を定義するとプロンプトを表示するごとに実行してくれる。
標準ではカレントパスがプロンプト表示されているが、この機能を使って独自のプロンプト表示が可能になる。
ドットソースで動的に読み込ませても良いが、$profileに定義しておくと便利。
Function Prompt{
    #タイトルバーにパスを表示
    $host.UI.RawUI.WindowTitle = Get-Location

    #
    #入力されたコマンドにエイリアスがあれば表示する
    #

    #入力された直近のコマンドを取得  
    $lastCommand = Get-History -Count 1
    if($lastCommand){
        $suggestions = @() 
        #エイリアスが定義されているコマンドレット(関数を除く)を取得      
        $aliases = Get-Alias | ?{$_.Definition -match "\w\-\w"}
        foreach($alias in $aliases){
            #ワード境界で区切られたコマンドレットがあるか検索          
            if($lastCommand -match ("\b" + [System.Text.RegularExpressions.Regex]::Escape($alias.Definition) + "\b")){
                $suggestions += "エイリアスがあります $($alias.Definition) is $($alias.Name)"
            }
        }
        if($suggestions){
            $suggestions | Write-Host  -ForegroundColor Cyan
            Write-Host
        }
    }
    "PS>"
}

プロンプトが長いと若干鬱陶しいので「PS>」とシンプルに。
代わりに$host自動変数を使ってタイトルバーにパスを表示させている。
役立つ情報を表示させたいので、入力されたコマンドにエイリアスが定義されていたら、それを表示している。
結果はこんな感じ。
20100619192908
個別にエイリアスを調べるには
Get-Alias  -def  Get-ChildItem

0 件のコメント:

コメントを投稿