如何查看我最常用的 Linux 命令是什么?

如何查看我最常用的 Linux 命令是什么?

我想知道我在命令行上使用最多的命令是什么。我想知道,这样我就可以改进我对命令行的使用。如果我知道我最常使用哪个命令,我就可以阅读更多关于它们的内容,尝试找出更好的使用方法。

我知道历史记录会保留我之前输入的所有命令的列表。我该如何处理它才能查看最常用的 10 个或 20 个命令的列表。

答案1

我刚刚看到这个帖子http://linux.byexamples.com/

基本上你使用一个简单的单行 awk 脚本

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 -n10

完整的解释可以在上面的链接中找到。

我的机器上的输出示例是:

 1  211  21.1%  ls
 2  189  18.9%  sudo
 3  58   5.8%   man
 4  52   5.2%   cd
 5  43   4.3%   ping
 6  40   4%     apropos
 7  34   3.4%   less
 8  22   2.2%   cat
 9  18   1.8%   which
10  18   1.8%   aspell

答案2

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

awk 命令将从 ~/.bash_history 打印第一个字符串(不显示命令选项或参数),然后 sort 将按字母顺序排列所有行,然后“uniq -c”将删除重复的行(您输入的命令)并对其进行计数,最后一个 sort 将根据 uniq 返回的计数数字对您的命令进行排序。

答案3

您可以hash在终端中使用该命令,它会保留您使用的每个命令的哈希条目以及命中次数,您可以根据命中次数对其进行排序和处理。

查看本文了解更多信息。

答案4

其他答案中的脚本仅计算每个命令行中执行的第一个命令;它们不包括在管道后执行的命令(即“ | ”)。例如,如果此行本身在您的 bash 历史记录中:

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

那么在返回的执行次数最多的命令的摘要中,将不会包括“sort”和“uniq”以及第二个“sort”,因为它们不是该行中的第一个标记。

基于 nelaar 的答案,首先在每个管道上拆分 bash 历史记录中的行就足够了:

sed 's/|/\n/g' ~/.bash_history | awk '{CMD[$1]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10

相关内容