如何制作终端中最常用的命令列表?
我知道这个问题对于我们中的一些人来说可能对于未来的任何提议都没用,但即使这样,当我们不记得过去使用过一次或几次的命令时,这个列表仍然很有用,我们可以在这个列表的末尾进行搜索。
答案1
我们将使用文件中的记录.bash_history
来执行此操作。下一个命令将为您提供所有命令的列表,按您最常使用的顺序排列:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr
如果只想要前 10 名,则必须head
在上面的命令中添加:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
要获取特定排名,例如前 5 名,请使用head
选项-n 5
:
如果您希望以相反的顺序显示列表(顶部包含很少使用的命令),请不要将r
oprion 用于第二个sort
:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n
最后,为了获得包含曾经使用过的命令的列表,例如,使用grep ' 1 '
(更改1
为所需的数字):
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | grep ' 1 '
要处理sudo
命令(如sudo vim foo
),而不仅仅是{print $3}
在 awk 命令中,请使用:
{if($3 ~ /sudo/) print $4; else print $3}
因此整个命令看起来如下:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr
例如:
$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
284 vim
260 git
187 find
174 man
168 echo
149 rm
134 awk
115 pac
110 sudo
102 l
$ history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr | head
298 vim
260 git
189 find
174 man
168 echo
153 rm
134 awk
115 pac
102 l
95 cd
vim
您可以看到、rm
等计数的跳跃。
答案2
以下命令还将列出top 10
最常用的终端命令,
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
命令列出终端中最常用的所有命令,
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn
答案3
Fish & Bash - 问题没有指定特定的 shell,只是“终端”。将 head 更改为您想要的任何数字。
鱼
history | awk '{print $1}' | sort | uniq --count | sort --numeric-sort --reverse | head -10
517 git
314 drush
197 sudo
171 cd
115 man
103 echo
95 vi
81 dig
67 set
66 ls
这个 Bash 似乎有效,并且比其他答案更短一些,更容易理解。我喜欢长选项,因为它有助于提高这类示例的可读性。
猛击
history | awk '{print $2}' | sort | uniq --count | sort --numeric-sort --reverse | head -10
73 drush
72 exit
65 sudo
46 g
40 echo
35 ll
34 tmux
30 history
30 fish
27 mux