Ich möchte wissen, welchen Befehl ich in der Befehlszeile am häufigsten verwende. Ich würde gerne wissen, dass ich die Verwendung der Befehlszeile verbessern kann. Wenn ich weiß, welchen Befehl ich am häufigsten verwende, kann ich mehr über sie lesen und versuchen, bessere Wege zu finden, um sie zu verwenden.
Ich weiß, dass der Verlauf eine Liste aller zuvor von mir eingegebenen Befehle enthält. Wie würde ich es verarbeiten, um eine Liste der Top 10 oder 20 am häufigsten verwendeten Befehle zu sehen.
linux
command-line
history
Nelaaro
quelle
quelle
Antworten:
Ich habe diesen Beitrag gerade auf http://linux.byexamples.com/ gesehen.
Grundsätzlich verwenden Sie ein einfaches einzeiliges awk-Skript
Eine vollständige Erklärung finden Sie unter dem Link oben.
Ein Beispiel für die Ausgabe auf meinem Computer ist:
quelle
Der Befehl awk gibt den ersten String aus ~ / .bash_history aus (ohne Befehlsoptionen oder Argumente), sortiert alle Zeilen alphabetisch, und "uniq -c" entfernt doppelte Zeilen (Ihre eingegebenen Befehle) und zählt sie und Bei der letzten Sortierung werden Ihre Befehle nach der von uniq zurückgegebenen Zählnummer sortiert.
quelle
-r
am Ende des Befehls hinzufügen , um sie in umgekehrter Reihenfolge zu sortieren und| head -10
die Anzahl der Ergebnisse zu begrenzen.Sie können den
hash
Befehl in Ihrem Terminal verwenden, der einen Hash-Eintrag für jeden von Ihnen verwendeten Befehl zusammen mit der Anzahl der Treffer enthält und auf der Grundlage der Treffer, die Sie sortieren und verarbeiten können.In diesem Artikel finden Sie weitere Informationen.
quelle
Um eine allgemeinere Antwort zu erhalten, aktivieren Sie " Prozessabrechnung " auf Ihrem System. Sie können nicht nur die Nutzungshäufigkeit, sondern auch die CPU-, Speicher- und E / A-Gesamtstatistik abrufen.
quelle
Die Skripte in den anderen Antworten zählen nur den ersten Befehl, der in jeder Befehlszeile ausgeführt wird. Sie enthalten keine Befehle, die nach Pipes ausgeführt werden (z. B. '|'). Wenn sich diese Zeile beispielsweise in Ihrem Bash-Verlauf befindet:
In der zurückgegebenen Zusammenfassung der am häufigsten ausgeführten Befehle würden dann "sort" und "uniq" und die zweite "sort" nicht enthalten sein, da sie nicht die ersten Token in der Zeile waren.
Aufbauend auf der Antwort von nelaar genügt es, zuerst die Zeilen in Ihrem Bash-Verlauf auf jeder Pipe aufzuteilen:
quelle
Eine lustige Ergänzung wäre ein Balkendiagramm der Zählungen:
Ausgabe:
Lange Befehle gleichen den Abstand aus.
quelle
printf
odersprintf
anstelle von verwendenprint
.Verwenden Sie
$ 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
, um eine Liste der 10 häufigsten Befehle abzurufen.Beispiel:
quelle
Sie können die obige
awk
Antwort von @nelaar in ein nettes Bash-Skript umwandeln:quelle
Nun, dies ist eine modifizierte Version des Befehls "Неделчо Христов", der hier kopiert und eingefügt wurde. Wenn Sie Ihren Bash-Verlauf gesichert oder mit einem Datum versehen haben, wird eine fehlerhafte Ausgabe ausgegeben
Damit können Sie Folgendes besser nutzen:
quelle