是否有一种主动的方法来收集bash会话中使用最频繁的命令?
如果没有,我可以以什么方式开始编写脚本或运行后台进程来实现这一点?
例如,我将有一个可以在会话中生成的报告,该报告看起来像
cd 25%
ls 40%
cat 35%
发布于 2013-08-18 19:37:58
这一项将显示接近预定格式的输出:
history | awk '($2 ~ /^[[:alnum:]]+$/) { ++a[$2]; t = length($2); if (t > l) l = t; } END { for (i in a) printf("%s%" (l - length(i) + 1) "s%5.2f%%\n", i, " ", (a[i] * 100 / NR)); }'
示例输出:
...
cd 6.00%
ls 12.00%
cat 1.60%
...
您还可以使用... | sort -n -k2
或... | sort -n -k2 -r
对其进行排序。
发布于 2013-08-18 17:45:44
您可以解析history
命令的输出,并计数命令字段的出现情况。
history | awk '{print $4}' | sort | uniq -c | sort -n
将打印已执行命令的列表和执行命令的次数。然后,您可以获取使用history | wc -l
执行的命令总数,然后执行计算。
发布于 2013-08-18 17:47:10
您可以尝试下面这样的方法
history | cut -f1 -d' ' | sort | uniq -c | sort -n
如果您经常使用像上面这样的管道,您可能需要编写bash解析器才能获得其他命令,而不仅仅是history
。
https://stackoverflow.com/questions/18301908
复制相似问题