Мы будем использовать записи из .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
и т.д.