W tym celu wykorzystamy rekordy z .bash_history
pliku. 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ć head
polecenie 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 head
z -n 5
opcji:
Jeśli chcesz listę w odwrotnej kolejności (na górze z rzadko używanymi poleceniami), nie używaj r
oprion 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ń 1
na żądany numer):
history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | grep ' 1 '
Aby radzić sobie z sudo
poleceniami (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
, rm
itp