Da ich immer mehr Zeit in Terminalsitzungen verbringe, habe ich das Gefühl, dass ich ständig neue Befehle finde, die meine täglichen Aufgaben effizienter machen. Die GNU history
Befehl ist einer, der meinen Arbeitstag wirklich verändert hat.
Die GNU history
Der Befehl führt eine Liste aller anderen Befehle, die von dieser Terminalsitzung ausgeführt wurden, und ermöglicht Ihnen dann, diese Befehle abzuspielen oder wiederzuverwenden, anstatt sie erneut einzugeben. Wenn Sie ein erfahrener Terminalbenutzer sind, wissen Sie um die Macht der history
, aber für uns Dabbler oder neue Sysadmin-Leute, history
ist ein sofortiger Produktivitätsgewinn.
Zunächst einmal die history
Befehl ist nicht wirklich ein Befehl. Sie können dies selbst sehen, indem Sie auf Ihrem System nach dem Befehl suchen:
$ which history
which: no history in (/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin)
Ihr Computer kann den history
nicht finden Befehl, weil es ein eingebautes Schlüsselwort Ihrer Shell ist. Da es in die von Ihnen verwendete Shell geschrieben ist, kann es einige Unterschiede im Verhalten des Verlaufs geben, je nachdem, ob Sie Bash, tcsh, Zsh, dash, fish, ksh usw. verwenden. Dieser Artikel basiert auf der Bash-Implementierung des Verlaufs, daher funktionieren einige Funktionen möglicherweise nicht in anderen Shells. Die meisten Grundfunktionen sind jedoch gleich.
Geschichte 101
Zum Anzeigen des history
in Aktion, öffnen Sie ein Terminalprogramm auf Ihrer Linux-Installation und geben Sie Folgendes ein:
$ history
Hier ist die Antwort, die ich erhalten habe:
1 clear
2 ls -al
3 sudo dnf update -y
4 history
Der history
Befehl zeigt eine Liste der seit Beginn der Sitzung eingegebenen Befehle. Die Freude an history
ist, dass Sie jetzt jeden von ihnen wiedergeben können, indem Sie einen Befehl wie den folgenden verwenden:
$ !3
Der !3
Befehl an der Eingabeaufforderung weist die Shell an, den Befehl in Zeile 3 der Verlaufsliste erneut auszuführen. Ich könnte auch auf diesen Befehl zugreifen, indem ich Folgendes eingebe:
$ !sudo dnf
Dies ruft history
auf um nach dem letzten Befehl zu suchen, der mit dem von Ihnen angegebenen Muster übereinstimmt (in diesem Fall ist dieses Muster dnf ) und führen Sie es aus.
Suchverlauf
Sie können auch den history
verwenden um den zuletzt eingegebenen Befehl erneut auszuführen, indem Sie !!
eingeben . Indem Sie es mit grep
koppeln können Sie nach Befehlen suchen, die einem Textmuster entsprechen, oder indem Sie es mit tail
verwenden , finden Sie die letzten Befehle, die Sie ausgeführt haben. Zum Beispiel:
$ history | grep dnf
3 sudo dnf update -y
5 history | grep dnf
$ history | tail -n 3
4 history
5 history | grep dnf
6 history | tail -n 3
Sie können diese Suchfunktion auch aufrufen, indem Sie Ctrl-R
eingeben um eine rekursive Suche in Ihrem Befehlsverlauf aufzurufen. Nachdem Sie dies eingegeben haben, ändert sich die Eingabeaufforderung zu:
(reverse-i-search)`':
Jetzt können Sie mit der Eingabe eines Befehls beginnen und passende Befehle werden angezeigt, die Sie ausführen können, indem Sie Return drücken oder Eingabe .
Ändern eines ausgeführten Befehls
Sie können auch den history
verwenden um einen Befehl mit anderer Syntax erneut auszuführen. Sie können den Verlauf mit history
überarbeiten . Wenn ich beispielsweise meinen vorherigen Befehl history | grep dnf
zur history | grep ssh
, kann ich an der Eingabeaufforderung Folgendes ausführen:
$ ^dnf^ssh^
Der Befehl wird erneut ausgeführt, aber mit dnf
ersetzt durch ssh
. Mit anderen Worten, dieser Befehl wird ausgeführt:
$ history | grep ssh
Verlauf wird entfernt
Es kann vorkommen, dass Sie einige oder alle Befehle in Ihrer Verlaufsdatei entfernen möchten. Wenn Sie einen bestimmten Befehl löschen möchten, geben Sie history -d <line number>
ein . Um den gesamten Inhalt der Verlaufsdatei zu löschen, führen Sie history -c
aus .
Die Verlaufsdatei wird in einer Datei gespeichert, die Sie ebenfalls ändern können. Bash-Shell-Benutzer finden es in ihrem Home-Verzeichnis als .bash_history
.
Nächste Schritte
Es gibt eine Reihe anderer Dinge, die Sie mit history
tun können :
- Stellen Sie die Größe Ihres Verlaufspuffers auf eine bestimmte Anzahl von Befehlen ein
- Notieren Sie das Datum und die Uhrzeit für jede Zeile im Verlauf
- Verhindern, dass bestimmte Befehle im Verlauf aufgezeichnet werden
Weitere Informationen zur history
Befehl und andere interessante Dinge, die Sie damit machen können, werfen Sie einen Blick auf Seth Kenlons Artikel über das Parsen des Verlaufs, Modifikatoren für die Verlaufssuche und das GNU Bash-Handbuch.
Dieser Artikel wurde ursprünglich im Juni 2018 veröffentlicht und vom Herausgeber mit zusätzlichen Informationen aktualisiert.