Usaremos os registros do arquivo .bash_history
para fazer isso. O próximo comando fornecerá uma lista de todos os comandos para que você os use com mais frequência:
history | awk 'BEGIN {FS="[ \t]+|\|"} {print }' | sort | uniq -c | sort -nr
Se você quer apenas o top 10, você deve adicionar head
no comando acima:
history | awk 'BEGIN {FS="[ \t]+|\|"} {print }' | sort | uniq -c | sort -nr | head
Para obter um top específico, por exemplo, o top 5, use head
com -n 5
option:
Se você quiser a lista em ordem inversa (superior com os comandos raramente usados), não use r
oprion para o segundo sort
:
history | awk 'BEGIN {FS="[ \t]+|\|"} {print }' | sort | uniq -c | sort -n
E, finalmente, para obter uma lista com os comandos usados uma vez, por exemplo, use grep ' 1 '
(altere 1
com o número desejado):
history | awk 'BEGIN {FS="[ \t]+|\|"} {print }' | sort | uniq -c | grep ' 1 '
Para lidar com os comandos sudo
(como sudo vim foo
), em vez de apenas {print }
no comando awk, use:
{if( ~ /sudo/) print ; else print }
Assim, todo o comando ficaria assim:
history | awk 'BEGIN {FS="[ \t]+|\|"} {if( ~ /sudo/) print ; else print }' | sort | uniq -c | sort -nr
Por exemplo:
$ history | awk 'BEGIN {FS="[ \t]+|\|"} {print }' | 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( ~ /sudo/) print ; else print }' | 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 de vim
, rm
, etc.