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