先说一下思想:
要想统计每个命令先排序再去重,将结果导入到一个临时文件,在while循环中逐行抓对应的命令统计次数,将命令和次数导入到另一个临时文件中,在对该文件进行降序排列,最后删除临时文件
代码如下:
#!/bin/bash
history | sort -rn | uniq > cmd.tmp
while read line
do
count=`history | grep "$line" | awk '{print $2}'| wc -l`
echo "$line $count" >> cmd.log
done < cmd.tmp
sort -rn -k 2 cmd.log
rm -f cmd.log cmd.tmp
解题方法有很多,这里只提供一种思路。