创建bash会话中使用的最流行命令的直方图或频率列表



是否有一种主动的方法来收集bash会话中使用最频繁的命令?

如果没有,我可以通过什么方式开始编写脚本或运行后台进程来实现这一点?

例如,我会有一个报告,我可以在一个会话中生成,看起来像

cd  25%
ls  40%
cat 35%

这个将显示接近预期格式的输出:

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对其进行排序。

您可以尝试以下

history | cut -f1 -d' ' | sort | uniq -c | sort -n

如果您经常使用像上面这样的管道,那么您可能需要编写一个bash解析器来获取除history之外的其他命令。

您可以解析history命令的输出,并计算命令字段的出现次数。

history | awk '{print $4}' | sort | uniq -c | sort -n

将打印已执行命令的列表及其执行次数。然后,您可以获取使用history | wc -l执行的命令总量,然后执行计算。

最新更新