Ho appena visto questo post su http://linux.byexamples.com/
Fondamentalmente usi un semplice script awk di una riga
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
Una spiegazione completa può essere trovata al link sopra.
Esempio di output sulla mia macchina è:
1 211 21.1% ls
2 189 18.9% sudo
3 58 5.8% man
4 52 5.2% cd
5 43 4.3% ping
6 40 4% apropos
7 34 3.4% less
8 22 2.2% cat
9 18 1.8% which
10 18 1.8% aspell
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n
Il comando awk stamperà la prima stringa da ~/.bash_history (non mostrando le opzioni o gli argomenti del comando), quindi sort ordinerà tutte le righe in ordine alfabetico, quindi "uniq -c" rimuoverà le righe duplicate (i comandi digitati) e le conterà, e l'ultimo ordinamento ordinerà i tuoi comandi in base al numero di conteggio restituito da uniq.
Puoi usare il hash
comando nel tuo terminale, che mantiene una voce hash di ogni comando che usi insieme al numero di hit e in base agli hit puoi ordinarli ed elaborarli.
Consulta questo articolo per ulteriori informazioni.