Linux-Befehlszeile – das Terminal speichert, wie alle Shells, einen Verlauf der Befehle, die in der Vergangenheit von einem Benutzer ausgeführt wurden. Dieser Verlauf ist persistent und bleibt im Speicher, auch wenn wir unser System neu starten. Diese gespeicherten Befehle können von uns auf die optimalste Weise abgerufen und wiederverwendet werden, um die Geschichtsspeicherfunktion der meisten Shells effizient zu nutzen.
Die Linux-Bash enthält einen sehr mächtigen Befehl namens „history“. Dieser Befehl ist ein integrierter Bash-Befehl, der verwendet wird, um die Verlaufsinformationen zu Befehlen zu extrahieren, die von Linux-Benutzern in allen vorherigen Sitzungen ausgeführt wurden. In diesem Tutorial werden wir Ihnen ermöglichen, das Beste aus Ihrem Shell-Verlauf herauszuholen, indem Sie die richtige Verwendung des Befehls history lernen. Linux speichert den Befehlsverlauf für einen bestimmten Benutzer in einer Datei ~/.bash_history standardmäßig.
Wir werden die Terminal-Anwendung von Linux verwenden, um die in diesem Tutorial erwähnten Befehle auszuführen.
Anzeigen des gesamten Verlaufs
Ein Benutzer kann den gesamten Verlauf seiner Shell-Befehle aus der exklusiv für diesen Benutzer gespeicherten Verlaufsdatei anzeigen, indem er den folgenden einfachen Befehl verwendet:
$ Geschichte
Der Verlauf wird im folgenden Standardformat auf dem Bildschirm gedruckt:
Im obigen Bild sehen Sie eine Liste aller Befehle, denen jeweils eine Nummer zugewiesen ist. Der Befehl mit der Nummer 1 entspricht dem ersten Befehl, den Sie ausgeführt haben, und der Befehl mit der letzten Nummer steht für den zuletzt ausgeführten Befehl.
Wenn Sie seit der Verwendung der Bash viele Befehle ausgeführt haben, werden Sie feststellen, dass hier Hunderte und sogar Tausende dieser Befehle angezeigt werden. Um auf einige relevante Befehle zuzugreifen, können Sie die von der Verlaufsfunktion angezeigten Ergebnisse filtern. Sie können den Verlaufsbefehl auch anpassen, um eine bestimmte Anzahl von Befehlen für Sie anzuzeigen.
Filtern der Verlaufsausgabe
Wenn Sie Ihre Verlaufsausgabe nach einem bestimmten Schlüsselwort filtern möchten, das Sie möglicherweise in den vorherigen Befehlen verwendet haben, können Sie den Verlaufsbefehl wie folgt verwenden:
$ Geschichte | grep [Schlüsselwort]
Beispiel: In diesem Beispiel möchte ich nur die Ping-Befehle anzeigen, die ich jemals in der Shell ausgeführt habe. Daher verwende ich folgenden Befehl:
$ Geschichte | grep ping
Sie können sehen, dass meine Ausgabe jetzt nur die Befehle einschließlich meines Suchbegriffs „ping“ anzeigt
Anzeigen einer Reihe von letzten Befehlen
Sie können auch eine bestimmte Anzahl von Befehlen anzeigen, zum Beispiel:
- N Anzahl der letzten Befehle
ODER
- N Anzahl der ältesten Befehle
N Anzahl der letzten Befehle
Sie können eine bestimmte Anzahl kürzlich ausgeführter Befehle mit dem folgenden Befehl anzeigen:
$ Geschichte | Schwanz -n
Beispiel:
In diesem Beispiel möchte ich die letzten 3 ausgeführten Befehle mit dem Schlüsselwort 'ping' anzeigen:
$ Geschichte | grep ping |schwanz -3
Die Ausgabe zeigt nur die 3 letzten Ping-Befehle anstelle des gesamten Verlaufs an
N Anzahl der ältesten Befehle
Sie können eine bestimmte Anzahl der ältesten Ausführungsbefehle mit dem folgenden Befehl anzeigen:
$ Geschichte | Kopf -n
Beispiel:
In diesem Beispiel möchte ich die ältesten 3 Befehle, die ich ausgeführt habe, mit dem Schlüsselwort 'ping' anzeigen:
$ Geschichte | grep ping |kopf -3
Die Ausgabe zeigt nur die 3 ältesten Ping-Befehle anstelle des gesamten Verlaufs an
Alle Befehle mit Datum und Zeitstempel auflisten
Wenn Sie Ihren Befehlsverlauf zusammen mit Datum und Zeitstempel anzeigen möchten, verwenden Sie bitte den folgenden Exportbefehl:
$ export HISTTIMEFORMAT="%F, %T"
Wenn Sie nun den Verlauf anzeigen möchten, führen Sie einfach den Befehl history aus, um die Ausgabe im folgenden Format anzuzeigen:
Bitte beachten Sie, dass diese Formatänderung temporär ist und beim Schließen der Sitzung auf den vorherigen Standard zurückgesetzt wird.
Navigieren von Befehlen aus dem Verlauf
Während Sie sich in der Befehlszeile befinden, können Sie durch zuvor ausgeführte Befehle navigieren und auch einige kürzlich verwendete Befehle abrufen, indem Sie ein Schlüsselwort eingeben.
Durch die Befehle scrollen
Sie können die folgenden Tastatursteuerungen verwenden, um durch die Verlaufsbefehle zu navigieren
Pfeil nach oben/Strg+P | Mit diesen Steuerelementen können Sie den vorherigen Befehl anzeigen, den Sie verwendet haben. Sie können diese Steuerelemente mehrmals drücken, um zu einem bestimmten Befehl im Verlauf zurückzukehren. |
Pfeil nach unten/Strg+N | Mit diesen Steuerelementen können Sie den nächsten von Ihnen verwendeten Befehl anzeigen. Sie können diese Steuerelemente mehrmals drücken, um zu einem bestimmten Befehl im Verlauf zu gelangen. |
Alt+R | Wenn Sie einen Befehl, den Sie aus dem Verlauf gezogen haben, in einer aktuellen Zeile bearbeiten, können Sie ihn mit diesem Steuerelement auf den ursprünglichen Befehl zurücksetzen. |
Abrufen von Befehlen
Sie können einen bestimmten Befehl aus dem Verlauf abrufen, ausführen oder nicht ausführen, indem Sie die folgenden Steuerelemente verwenden:
Strg+R | Mit diesem Steuerelement können Sie einen Befehl aus dem Verlauf abrufen, indem Sie eine Suchzeichenfolge angeben. |
Strg+O | Mit diesem Steuerelement können Sie den Befehl ausführen, den Sie mit Strg+R . aufgerufen haben |
Strg+G | Mit diesem Steuerelement können Sie den Verlauf verlassen, ohne den Befehl auszuführen, den Sie mit Strg+R . aufgerufen haben |
Beispiel:
In diesem Beispiel habe ich Strg+R gedrückt und dann die Suchzeichenfolge 'ar' angegeben. Der Verlauf zeigte den Befehl 'arch' an.
Als ich den Befehl 'arch' durch Drücken von Strg+O ausführte, wurde die CPU-Architektur meines Systems angezeigt:
Nutzung der Bash-Historie
Die wahre Magie des Bash-Verlaufs besteht darin, verschiedene Befehle zu verwenden und den Verlaufsbefehl selbst anzupassen, um die Verlaufsfunktion optimal zu nutzen:
Ausführen von Befehlen aus dem Verlauf
- Wie wir bereits gesehen haben, zeigt der Befehl history die Befehle an, indem er jedem eine Zahl zuordnet. Mit dem folgenden Befehl können Sie einen bestimmten Befehl aus dem Verlauf basierend auf seiner Nummer ausführen:
$ !#
Beispiel:
Hier führe ich die Befehlsnummer 95 aus meiner Historie aus:
$ !95
Die Ausgabe zeigt das Ergebnis von 'lscpu' an, das als Befehlsnummer 95 in meinem Bash-Verlauf aufgeführt wurde. Dieser Befehl zeigt meine CPU- und Betriebssystemspezifikationen an.
- Sie können Ihren vorherigen Befehl erneut ausführen, indem Sie den folgenden Befehl verwenden:
$ !!
Beispiel:
Hier sehen Sie, dass ich den Befehl 'arch' ausgeführt habe. Durch Ausführen des oben genannten Befehls kann ich den Befehl 'arch' erneut ausführen, um meine CPU-Architektur wie folgt anzuzeigen:
- Um nach einem Befehl aus dem Verlauf zu suchen und ihn dann auszuführen, verwenden Sie den folgenden Befehl:
$ ![Stichwort]
Beispiel:
Ich werde den folgenden Befehl verwenden, um den letzten Befehl mit dem Schlüsselwort 'dconf' erneut auszuführen:
$ !dconf
Sie können im folgenden Bild erneut bestätigen, dass es der letzte dconf-Befehl war, den ich ausgeführt habe.
Verwenden von Argumenten aus vorherigen Befehlen
Mit der Linux-Bash können Sie einen neuen Befehl ausführen, indem Sie Argumente aus dem vorherigen Befehl verwenden. Es ist besonders hilfreich, wenn Sie lange oder komplizierte Argumente nicht erneut eingeben möchten. Dazu können Sie folgenden Befehl verwenden:
Das letzte Argument des vorherigen Befehls verwenden
$ [Befehl] !$
Die Variable !$ hat das letzte Argument des vorherigen Befehls darin gespeichert.
Beispiel:
In diesem Beispiel erstelle ich eine Datei mit einem langen Namen.
Nano [langnameOfaFile]
Ich werde es dann an einen anderen Ort kopieren, indem ich vermeide, den langen Namen wie folgt erneut einzugeben:
Cp !$ [Zielordner]
Sie können sehen, dass ich eine Datei kopieren konnte, ohne den Dateinamen erneut einzugeben, indem ich die Variable verwende !$
Verwenden des ersten Arguments aus dem vorherigen Befehl
Manchmal ist nur das erste Argument des vorherigen Befehls im aktuellen hilfreich.
In diesem Fall können Sie den folgenden Befehl verwenden:
$ [Befehl] !^
Beispiel:
Im folgenden Beispiel habe ich den Ping-Befehl ausgeführt, indem ich den Hostnamen und eine Anzahl als Argumente angegeben habe. Jetzt möchte ich den Hostnamen (erstes Argument) anstelle von 2 (das letzte Argument) in meinem neuen Befehl verwenden. Dazu verwende ich folgenden Befehl:
$ ping !^
Verwenden aller Argumente aus dem vorherigen Befehl
Sie können auch alle Argumente des vorherigen Befehls verwenden, indem Sie den folgenden Befehl verwenden:
$ !*
Verwenden eines Arguments aus einem Verlaufsbefehl
Sie können auch Befehle aus Ihrem Verlauf verwenden, indem Sie deren Argumente wiederverwenden. Verwenden Sie dazu den folgenden Befehl:
$ [Befehl] ![Stichwort]:#
Beispiel:
$ echo !cp: 2
Dieser Befehl nimmt die folgenden Parameter an:
Befehl: echo
Stichwort: cp
#:2(zweites Argument des Befehls)
Die folgende Ausgabe zeigt das 2. Argument des letzten cp-Befehls, den ich ausgeführt habe:
Verwenden aller Argumente eines Verlaufsbefehls
Der folgende Befehl speichert alle Argumente aus dem durchsuchten Verlaufsbefehl und verwendet sie im aktuellen Befehl:
$-Befehl ![Stichwort]:*
Beispiel:
Im folgenden Befehl werde ich alle Argumente des letzten cp-Befehls ausgeben, indem ich den echo-Befehl wie folgt verwende:
$ echo ![cp]:*
Vorherige Befehle ändern und ausführen
Wenn Sie sich bei einem Befehl vertippt haben oder einen Befehl erneut ausführen möchten, indem Sie Text darin ändern; wie folgt vor:
$ ^[vorheriger Text]^[neuer Text]
Beispiel:
Ich habe den Befehl 'grep' als 'gep' vertippt und möchte den Befehl jetzt ausführen, indem ich den Text korrigiere:
$ ^gep^grep
Jetzt können Sie sehen, dass mein korrigierter Befehl wie folgt ordnungsgemäß ausgeführt wird:
Verlauf löschen
Um den Verlauf Ihrer Bash zu löschen, verwenden Sie den folgenden Befehl:
$ Geschichte -c
Dieser Befehl löscht Ihren Verlauf und entfernt alle Inhalte aus der Datei ~/.bash_history
In diesem Tutorial haben wir gelernt, dass das Drucken des gesamten Verlaufsinhalts möglicherweise nicht so nützlich ist, aber die Optimierung der Ausgabe durch die gelernten Befehle ist der wahre Wendepunkt. Wenn Sie mit diesem Artikel üben, können Sie die genauen Befehle anzeigen, die Sie möchten, diese Befehle erneut ausführen und wiederverwenden und auch Argumente von zuvor ausgeführten Befehlen verwenden, um neue zu optimieren optimize.