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 -n20
这个shell用awk统计history中的命令出现的次数,去掉 “./” 这样不算命令的情况,最后排序输出,列出前20个。 我最常用的前20个命令如下:
1 129 12.9% ls
2 112 11.2% vim
3 85 8.5% exit
4 78 7.8% yum
5 78 7.8% cd
6 66 6.6% free
7 31 3.1% top
8 26 2.6% ps
9 22 2.2% history
10 18 1.8% rm
11 18 1.8% pstree
12 17 1.7% cp
13 16 1.6% tar
14 16 1.6% mv
15 14 1.4% wget
16 14 1.4% cat
17 13 1.3% chmod
18 12 1.2% iptraf
19 10 1% chown
20 10 1% chgrp
PS:如果你是从win里直接复制这个到linux里运行会出错的。因为在DOS/Windows里,文本文件的换行符为\r\n,而在Unix/Linux系统里则为\n。可以用EmEditor这种文本编辑器另存为 Unix方式存储。