nel*_*aro 50 linux history command-line
我想知道我在命令行上使用最多的命令。我想知道这样我可以改进我对命令行的使用。如果我知道我最常使用哪个命令,那么我可以阅读更多关于它们的信息,尝试找出使用它们的更好方法。
我知道历史记录保存了我之前输入的所有命令的列表。我将如何处理它以查看前 10 或 20 个最常用命令的列表。
nel*_*aro 66
我刚刚在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
Run Code Online (Sandbox Code Playgroud)
可以在上面的链接中找到完整的解释。
在我的机器上输出的示例是:
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
Run Code Online (Sandbox Code Playgroud)
rem*_*ems 18
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
awk 命令将打印 ~/.bash_history 中的第一个字符串(不显示命令选项或参数),然后 sort 将按字母顺序排列所有行,然后“uniq -c”将删除重复的行(您键入的命令)并对其进行计数,以及最后一种排序将按照 uniq 返回的计数对您的命令进行排序。
小智 6
其他答案中的脚本只计算每个命令行中执行的第一个命令;它们不包括在管道之后执行的命令(即“|”)。例如,如果此行本身在您的 bash 历史记录中:
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
然后在最常执行的命令的返回摘要中,将不包括“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
Run Code Online (Sandbox Code Playgroud)
一个有趣的补充是计数的条形图:
history | tr -s ' ' | cut -d ' ' -f3 | sort | uniq -c | sort -n | tail | perl -lane 'print $F[1], "\t", $F[0], " ", "?" x ($F[0] / 12)'
Run Code Online (Sandbox Code Playgroud)
输出:
man 226 ??????????????????
cat 230 ???????????????????
rm 235 ???????????????????
ls 240 ????????????????????
aura 273 ??????????????????????
mv 362 ??????????????????????????????
sudo 534 ????????????????????????????????????????????
vi 611 ??????????????????????????????????????????????????
git 693 ?????????????????????????????????????????????????????????
cd 754 ??????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
长命令将偏移间距。
归档时间: |
|
查看次数: |
15825 次 |
最近记录: |