読者です 読者をやめる 読者になる 読者になる

zshでコマンドの実行回数ランキングを出すワンライナー

遅ればせながら明けましておめでとうございます。

さて、本題については、別段Publish::NiftyClip と Publish::FC2Bookmark を追加, だれか indent たのむ, zsh-history からコマンドの実行回数を出すワンライナー - HsbtDiary(2007-10-22)のように.zsh-historyをごにょごにょ解析しないでも

$ history 1 | awk '{print $2}' | sort | uniq -c | sort -nr | head

として行けた。というか僕の環境だとコマンド履歴に変な文字が紛れてたらしくsortさんにゴルァされた。
なんとなく解説でもしてみるとzshの場合history 1で履歴を全部出して、awk '{print $2}'でそれの2番目のフィールド(スペースで区切った時2番目=実行コマンドの先頭語句)のみを取り出して、sort | uniq -cというイディオム(http://ja.wikipedia.org/wiki/Uniq とか参照)で統計して、sort -nrで数値で(-n)ソートして、そのままでは昇順なので降順にして(-r)、headで頭の方を取り出す、だけ。
もっと後ろの方まで見たければhead -n 100にするなりmoreするなり。

ちなみに僕の場合こんな感じでした。

1174 vim
1016 ./a.out
 982 ls
 794 egg
 583 exit
 552 cd
 333 gcc
 210 rm
 201 git
 196 cat
当ブログに於いて、私tasutenによって創作されたことが自明である著作物に対しては、別途明示のある場合を除き全てCC0が適用されます。