ラッパと正しいエスケープ
再生産した理由として、さっきリンクしたサイトのものは wfind が無かった、ということと、エスケープがきちんとされてなかった、ということがあります。 * なんかで検索したい場合、
grep '*' *
などとするわけですが、 wgrep は内部で grep $@ などとして呼んでいるため、 wgrep '*' * とすると、 grep * file1 file2... となってしまって、これは意図した結果では無いわけです。
対策としては、各引数をきちんとシングルクォートで囲ってやる、というものがあって、まぁそれを長らく使ってたわけです。が、これにも一つ問題があって、引数にシングルクォートが含まれる場合にあらあらまあまあとなってしまう、と。で、結局どうするか、っていうと
grep 'It'\''s good' *
となるようにしてやればいいわけで、そういうロジックを入れて、ついでに似たようなことしたい機会は結構あるので、ライブラリとして切り出した…というのが再生産を再生産した理由、と。
Ruby でこういうエスケープをしたい場合、
ARGV.map{|a|"'#{a.gsub("'",%q('\\\\''))}'"}*' '
とかでいいんだと思う。これもなかなかにややこしくて良いです。特に gsub の第二引数の \' は特別な意味があってややこしいとか。
こういうエスケープがどうこうのネチっこい話は、以下の akr さんの記述が非常に面白かったです。
https://www.codeblog.org/blog/akr/?year=2007;category=escape