W tym celu wykorzystamy rekordy z .bash_historypliku. Następne polecenie wyświetli listę wszystkich poleceń w kolejności ich użycia:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr
Jeśli chcesz tylko 10 najlepszych, musisz dodać headpolecenie powyżej:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
Aby uzyskać konkretny szczyt, na przykład Top 5, użyj headz -n 5opcji:

Jeśli chcesz listę w odwrotnej kolejności (na górze z rzadko używanymi poleceniami), nie używaj roprion na sekundę sort:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n
I na koniec, aby uzyskać listę z poleceniami użytymi raz, na przykład, użyj grep ' 1 '(zmień 1na żądany numer):
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | grep ' 1 '
Aby radzić sobie z sudopoleceniami (jak sudo vim foo), zamiast tylko {print $3}w poleceniu awk, użyj:
{if($3 ~ /sudo/) print $4; else print $3}
Całe polecenie wyglądałoby więc tak:
history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr
Na przykład:
$ 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
Widać skok liczy vim, rmitp