Как я могу составить список с наиболее часто используемыми командами в терминале?
Я знаю, что этот вопрос может оказаться бесполезным для любых будущих предложений для некоторых из нас, но даже в этом случае список может быть полезен, когда мы не помним команду, использовавшуюся один или несколько раз в прошлом, когда мы могли искать в конце этого списка.
Мы будем использовать записи из файла .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
To получить определенную вершину, например верхнюю 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
и т. д.
Fish & Bash - Вопрос не указывает конкретную оболочку, только "терминал". Смените голову на любое число, которое хотите.
Рыба
история | awk '{print $ 1}' | сортировать | 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, похоже, работает, он немного короче и легче для понимания, чем другие ответы. Мне нравятся длинные варианты, чтобы облегчить чтение таких примеров.
Bash
история | awk '{print $ 2}' | сортировать | 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
ქვემოთ მოცემული ბრძანება ასევე ჩამოთვლის ტოპ 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