Wie kann ich sehen, welche Linux-Befehle ich am häufigsten verwende?

Wie kann ich sehen, welche Linux-Befehle ich am häufigsten verwende?

Ich möchte wissen, welchen Befehl ich in der Befehlszeile am häufigsten verwende. Ich möchte das wissen, damit ich die Befehlszeile besser nutzen kann. Wenn ich weiß, welchen Befehl ich am häufigsten verwende, kann ich mehr darüber lesen und versuchen, bessere Verwendungsmöglichkeiten zu finden.

Ich weiß, dass der Verlauf eine Liste aller Befehle speichert, die ich zuvor eingegeben habe. Wie kann ich das verarbeiten, um eine Liste der 10 oder 20 am häufigsten verwendeten Befehle anzuzeigen?

Antwort1

Ich habe gerade diesen Beitrag gesehen aufhttp://linux.byexamples.com/

Im Grunde genommen verwenden Sie ein einfaches einzeiliges Awk-Skript

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

Eine ausführliche Erklärung finden Sie unter dem obigen Link.

Ein Beispiel für die Ausgabe auf meinem Computer ist:

 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

Antwort2

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

Der Befehl awk druckt die erste Zeichenfolge aus ~/.bash_history (ohne Befehlsoptionen oder Argumente anzuzeigen), dann sortiert sort alle Zeilen alphabetisch, dann entfernt „uniq -c“ doppelte Zeilen (Ihre eingegebenen Befehle) und zählt sie und das letzte sort sortiert Ihre Befehle nach der von uniq zurückgegebenen Anzahl.

Antwort3

Sie können den Befehl in Ihrem Terminal verwenden hash, das einen Hash-Eintrag für jeden von Ihnen verwendeten Befehl zusammen mit der Anzahl der Treffer speichert, und Sie können die Befehle basierend auf den Treffern sortieren und verarbeiten.

ÜberprüfenDieser Artikelfür mehr Informationen.

Antwort4

Die Skripte in den anderen Antworten zählen nur den ersten Befehl, der in jeder Befehlszeile ausgeführt wird. Sie umfassen keine Befehle, die nach Pipes (d. h. „ | “) ausgeführt werden. Wenn diese Zeile beispielsweise selbst in Ihrem Bash-Verlauf enthalten wäre:

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

Dann würden in der zurückgegebenen Zusammenfassung der am häufigsten ausgeführten Befehle „sort“ und „uniq“ sowie das zweite „sort“ nicht enthalten sein, da sie nicht das erste Token in der Zeile waren.

Aufbauend auf der Antwort von nelaar reicht es aus, zunächst die Zeilen in Ihrem Bash-Verlauf in jeder Pipe aufzuteilen:

sed 's/|/\n/g' ~/.bash_history | awk '{CMD[$1]++;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

verwandte Informationen