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

Если вы хотите, чтобы список был в обратном порядке (верхняя часть с редко используемыми командами), не используйте 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и т.д.