created: 2019-10-10 24:00, tags: shell, grep, ripgrep,

ソースコードを追うのに適したコマンド

僕はあまり自覚はなかったけど、プログラマ業界の勉強を開始して 10 年程度は経つらしく、最近は自分の手癖を見直す必要が大いにあるなと反省している。

手癖は自分が習熟した証とも言えるんだけど、逆に言えば学びの少ない状態になってしまっており、時代の進化によって省略できるはずの手間をかけているなんてこともよくある話。

ソースコード検索の手癖

プログラ厶を書いていて、この定義どこだ?とかなることはしばしばあるんだけど、その検索方法として僕は find + xargs + grep をよく使う。

$ find . name "*.py" -type f | xargs grep "def Hoge"

みたいな感じで検索をかける。 ときには grep に -n 付けたりして自分の好みのオプションを掛けていた。 あまり検索速度とかには興味なかったので標準以外の grep系コマンドを入れてなかったのだけど、ひょんなことから入れることになって試してみた。

その時試したのが rg (rip grep) というコマンド。

$ rg "def Hoge"

これだけで使える。 実際には .gitignore を参照していたりで制約があるけど、今まで find + xargs + grep で長々と書いていたのがこれだけでよくなるのは革命的だった。

その上で尋常じゃ無く検索が速く、求めている動作をうまく実現している。 実にソースを追うために存在しているコマンドと言える。

他にも細かな便利な使い方はあると思うけど、上記の書き方で充分に大きな恩恵を得られるのでこれは本当にアリだった。