Usaremos os registros do .bash_historyarquivo para fazer isso. O próximo comando fornecerá uma lista de todos os comandos para que você os use com mais freqüência:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr
Se você deseja apenas os 10 principais, adicione heado comando acima:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
Para obter um top específico, por exemplo, o top 5, use headcom a -n 5opção:

Se você quiser a lista na ordem inversa (em cima dos comandos raramente usados), não use roprion por segundo sort:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n
E, finalmente, para obter uma lista com os comandos usados uma vez, por exemplo, use grep ' 1 '(mude 1com o número desejado):
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | grep ' 1 '
Para lidar com sudocomandos (como sudo vim foo), em vez de apenas {print $3}no comando awk, use:
{if($3 ~ /sudo/) print $4; else print $3}
Portanto, o comando inteiro ficaria assim:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr
Por exemplo:
$ 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
Você pode ver o salto nas contagens para vim, rm, etc.