人生の人生

日常のゴミ捨て場

PowerShellをいじった; grep

PowerShelでgrepコマンドを使うことを考える.

まず grepぽい標準のコマンドでSelect-Stringがあるらしい.
tech.sanwasystem.com
まったく問題なく使える.
f:id:sktakefumi:20180709151717p:plain

そこでやはりとちくるってGit for Windowsgrepを使おうとする.ほんとバカ.

一番簡単なのは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で 与えた文字列をそのままコマンドとして実行してくれる.

結果はこんな感じ.
f:id:sktakefumi:20180709151720p:plain
うっかり検索先パスを指定し忘れると/usr/bin/grepを検索し始めるのが玉に瑕.
 
いやほんとおとなしくほかのシェル使えって話ですよね.私ってほんとバカ....