
Gibt es eine Möglichkeit, die 10 am häufigsten verwendeten Befehle im Verlauf herauszufinden? Top 10 bedeutet hier die Befehle, die ich am häufigsten verwendet habe, d. h. die Befehle, die häufiger verwendet werden als andere.
Antwort1
Eine Linie:
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
Beispielausgabe:
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
DasDie Site bietet etwas mehr Informationen.
Antwort2
Ich selbst habe ein kleines Skript, um zu überprüfen, welches die N am häufigsten verwendeten Befehle sind, die ich in letzter Zeit verwendet habe:
mylast () {
re='^[0-9]+$'
if ! [[ $1 =~ $re ]] ; then
echo "error: $1 not a number" >&2
else
history | awk '{a[$2]++} END {for (i in a) print a[i], i}' | sort -rn | head -n $1
fi
}
Es werden also mylast 10
die Top 10 angezeigt.
Dies geschieht, indem der Verlauf durchgegangen wird und das zweite Feld in gespeichert wird awk
, sodass die Anzahl über ein Array verfolgt werden kann.
Beispielausgabe:
$ mylast 5
248 git
107 python
93 grep
71 awk
52 less