使用された上位 10 個のコマンドの履歴を取得する

使用された上位 10 個のコマンドの履歴を取得する

履歴で最も使用されたコマンドのトップ 10 を見つける方法はありますか? ここでのトップ 10 とは、最も頻繁に使用したコマンド、つまり使用回数が他のコマンドよりも多いコマンドを意味します。

答え1

1行:

history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10

出力例:

1  211  21.1%  ls
2  189  18.9%  sudo
3  58   5.8%   man
4  52   5.2%   cd
5  43   4.3%   ping
6  40   4%     apropos
7  34   3.4%   less
8  22   2.2%   cat
9  18   1.8%   which
10  18   1.8%   aspell

これサイトではもう少し詳しい情報が提供されています。

答え2

最近使用している上位 N 個のコマンドを確認するための小さなスクリプトを自分で作成しました。

mylast () {
        re='^[0-9]+$'
        if ! [[ $1 =~ $re ]] ; then
           echo "error: $1 not a number" >&2
        else
           history | awk '{a[$2]++} END {for (i in a) print a[i], i}' | sort -rn | head -n $1
        fi
}

つまり、mylast 10トップ 10 が表示されます。

これは、履歴を調べて 2 番目のフィールドを に格納することで行われawk、配列を通じてカウントを追跡できるようになります。

サンプル出力:

$ mylast 5
248 git
107 python
93 grep
71 awk
52 less

関連情報