如何在终端中列出最常用的命令?
我知道这个问题可能对我们中的某些人的将来的建议毫无用处,但是即使这样,当我们不记得过去一次或多次使用的命令时,当我们可以在此列表的末尾。
哪个航站楼?
—
伊利亚·林恩
如何在终端中列出最常用的命令?
我知道这个问题可能对我们中的某些人的将来的建议毫无用处,但是即使这样,当我们不记得过去一次或多次使用的命令时,当我们可以在此列表的末尾。
Answers:
我们将使用.bash_history
文件中的记录来执行此操作。下一条命令将为您列出所有命令,以便您最常使用它们:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr
如果只想要前十名,则必须head
在上面的命令中添加:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
要获得特定的顶部,例如顶部5,请使用head
with -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
等等。
sudo -i
因为它给了我-i
命令
sudo -i
启动一个新的shell。该历史不再是您外壳程序的历史,而是在root
s中。显然,这些命令在很多情况下不起作用。如果不编写自己的Shell语言解析器,就无法处理所有可能的命令。
if ($3 ~ /sudo/ && $4 !~ /^-/)
下面的命令还将列出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
Fish&Bash-问题没有指定特定的外壳,仅是“终端”。将头更改为所需的任何数字。
鱼
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