Wie vervollständige ich einen Befehl aus dem Befehlsverlauf automatisch?

Wie vervollständige ich einen Befehl aus dem Befehlsverlauf automatisch?

Gibt es eine Tastenkombination für Bash, um einen Befehl aus dem Verlauf automatisch auszuführen? In iPython und Matlab wird dies beispielsweise erreicht, indem nach der Eingabe einiger Zeichen die Pfeiltaste nach oben gedrückt wird.

Antwort1

Zunächst einmal tabist es noch besser, in Bash zu tippen, da es alle ausführbaren Dateien in Ihrem PATH automatisch vervollständigt, unabhängig davon, ob sie im Verlauf enthalten sind. Allerdings gibt es verschiedene Möglichkeiten, einen Befehl aus Ihrem Verlauf abzurufen:

  1. Verwenden Sie die Nummer. Wenn Sie wissen, dass der gewünschte Befehl vor 3 Befehlen ausgeführt wurde, können Sie einfach ausführen

     !-3
    

Dadurch wird der Befehl, den Sie vor drei Befehlen ausgeführt haben, erneut ausgeführt.

  1. Suchen Sie danach. Geben Sie Ctrlreinen beliebigen Text ein und beginnen Sie mit der Eingabe. Der erste Befehl aus dem Verlauf, der Ihrem Text entspricht, wird angezeigt und durch Drücken enterausgeführt.

  2. Drücken Sie (Pfeil nach oben). Dadurch wird der letzte Befehl angezeigt. Drücken Sie erneut darauf, um Ihren Befehlsverlauf anzuzeigen. Wenn Sie den gewünschten Befehl gefunden haben, drücken Sie enter.

  3. Fügen Sie diese Zeilen hinzu ~/.inputrc(erstellen Sie die Datei, falls sie nicht vorhanden ist):

     "\e[A": history-search-backward
     "\e[B": history-search-forward
    

Um die Datei sofort zu laden, führen Sie bind -f ~/.inputrc(Quelle). Geben Sie nun die ersten Zeichen eines der zuvor ausgeführten Befehle ein und drücken Sie . Der erste Befehl aus Ihrem Verlauf, der mit diesen Zeichen beginnt, wird angezeigt. Drücken Sie erneut, um den Rest anzuzeigen, und drücken Sie, enterwenn Sie den gewünschten Befehl gefunden haben.

  1. Verwenden Sie den historyBefehl. Wie @Isaac erklärt hat, werden dadurch alle in Ihrer Verlaufsdatei gespeicherten Befehle aufgelistet.

Antwort2

Sie können die Befehlsposition in der Verlaufssequenz mit dem Befehl überprüfen history. Dann können Sie ausführen !<number_in_the_sequence>. Ich hoffe, das hilft.

Antwort3

Sie können historydie Ausgabe auch für einen bestimmten Befehl verwenden und weiterleiten.

Wenn Sie beispielsweise cdden ganzen Tag im Dateisystem herumgesurft haben und nur eine Erinnerung daran brauchen, an welchen Verzeichnissen gearbeitet wurde,

history | grep cd

Sie können den Befehl dann entweder kopieren/einfügen oder !nihn erneut ausführen (wobei n die Zeilennummer in der Verlaufsdatei ist).

verwandte Informationen