如何制作终端中最常用的命令列表?

如何制作终端中最常用的命令列表?

如何制作终端中最常用的命令列表?

我知道这个问题对于我们中的一些人来说可能对于未来的任何提议都没用,但即使这样,当我们不记得过去使用过一次或几次的命令时,这个列表仍然很有用,我们可以在这个列表的末尾进行搜索。

答案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

前 5 个命令

如果您希望以相反的顺序显示列表(顶部包含很少使用的命令),请不要将roprion 用于第二个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

相关内容