无意发现的一个脚本,对方写的脚本,我实在是没怎么看懂,麻烦高手翻译下一台机器执行以后等到结果如下
290 ls 0.271536%
171 cd 0.160112%
60 cat 0.0561798%
45 vim 0.0421348%
40 rm 0.0374532%
35 vi 0.0327715%
30 exit 0.0280899%
30 chmod 0.0280899%
25 du 0.0234082%
18 ll 0.0168539%
由于我实在是看不懂他的这个语法结构,所以自己也写了一个
得到的结果如下
268 ls
31 cat
30 exit
18 cd
17 ll
16 top
13 vi
12 vim
10 rm
8 du
我的语法应该比较容易看的懂,我还是注释下吧
#通过cat打开历史记录
#只取是字母开头和结尾行(有些命令不是以字母开头)
#awk截取第一列(也就是命令本身,忽略了参数)
#使用sort 安装数字排序
#使用uniq去重并显示重复次数
#再次使用sort排序,将使用次数多的排在前面
#使用head 取出前面10行
和他的原始输入有差距,估计是在grep的截取的数据差异导致的,你们可以自己对比下
- $ history | \
- > sed 's/\.\///' | \
- > awk '{a[$2]++}END{for(i in a){print a[i] "\t" i "\t" a[i]/$HISTSIZE "%"}}' | \
- > sort -rn | \
- > head -n 10
290 ls 0.271536%
171 cd 0.160112%
60 cat 0.0561798%
45 vim 0.0421348%
40 rm 0.0374532%
35 vi 0.0327715%
30 exit 0.0280899%
30 chmod 0.0280899%
25 du 0.0234082%
18 ll 0.0168539%
由于我实在是看不懂他的这个语法结构,所以自己也写了一个
- cat .bash_history |grep ^[a-z].*[a-z]$ |awk '{print $1 }' |sort -n |uniq -c |sort -rn |head -10
得到的结果如下
268 ls
31 cat
30 exit
18 cd
17 ll
16 top
13 vi
12 vim
10 rm
8 du
我的语法应该比较容易看的懂,我还是注释下吧
#通过cat打开历史记录
#只取是字母开头和结尾行(有些命令不是以字母开头)
#awk截取第一列(也就是命令本身,忽略了参数)
#使用sort 安装数字排序
#使用uniq去重并显示重复次数
#再次使用sort排序,将使用次数多的排在前面
#使用head 取出前面10行
和他的原始输入有差距,估计是在grep的截取的数据差异导致的,你们可以自己对比下
编辑回复