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:
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.
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.
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.
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.
- Verwenden Sie den
history
Befehl. 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 history
die Ausgabe auch für einen bestimmten Befehl verwenden und weiterleiten.
Wenn Sie beispielsweise cd
den 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 !n
ihn erneut ausführen (wobei n die Zeilennummer in der Verlaufsdatei ist).