PowerShellをいじった; grep
PowerShelでgrepコマンドを使うことを考える.
まず grepぽい標準のコマンドでSelect-Stringがあるらしい.
tech.sanwasystem.com
まったく問題なく使える.
そこでやはりとちくるってGit for Windowsのgrepを使おうとする.ほんとバカ.
一番簡単なのはC:\Program Files\Git\usr\binにPathを通してしまうことであろうが(いつもの悪い癖) コマンドの衝突が起きそうで怖い.例えばlsなんかは普通にぶつかる.
そこで今回はprofile.ps1にエイリアスを追加することを考える.
Set-Alias grep 'C:\Program Files\Git\usr\bin\grep.exe'
こんな感じで普通に動く.
ところで grepは-nで行番号を表示したり --colorオプションで出力結果に色付けを行うことができるらしい.これをデフォルトにしたいと思ったので 次のようにしてみるが
Set-Alias grep 'C:\Program Files\Git\usr\bin\grep.exe --color'
これはダメらしいです.悲しい.
回避策としては 自前で関数を用意してしまうこと.
いろいろ悪態をついたのち 次のようなものに落ち着いた.
function Git-Grep{ Invoke-Expression "& 'C:\Program Files\Git\usr\bin\grep.exe' -n --color $Args" } Set-Alias grep Git-Grep
Invoke-Expressionで 与えた文字列をそのままコマンドとして実行してくれる.
結果はこんな感じ.
うっかり検索先パスを指定し忘れると/usr/bin/grepを検索し始めるのが玉に瑕.
いやほんとおとなしくほかのシェル使えって話ですよね.私ってほんとバカ....