Ich habe
verwendethistory | less
Um die Zeilen der vorherigen Befehle zu erhalten und aus den Zahlen auf der linken Seite habe ich die Zeile gefunden, die ich wiederholen wollte (z. B. 22) und getan
!22
an der Eingabeaufforderung und es funktionierte – Ausführen des Befehlssatzes auf der Zeile, die ich damals gemacht habe. Ich kann nicht herausfinden, wo das Ausrufezeichen verwendet wird, was es in Bezug auf die von bash ausgeführten Aktionen darstellt und wo es verwendet wird. Aus der Dokumentation sehe ich keine „greifbare“ Erklärung.
Akzeptierte Antwort:
!
ruft die History-Erweiterung auf, eine Funktion, die ursprünglich in der C-Shell auftauchte, damals, als man sich darauf verlassen konnte, dass Terminals Pfeiltasten hatten. Es ist besonders nützlich, wenn Sie die aktuelle Befehlsnummer zur Eingabeaufforderung hinzufügen (PS1="!$ "
), sodass Sie schnell auf Ihren Bildschirm schauen können, um Zahlen für frühere Befehle zu erhalten.
Jetzt können Sie Pfeiltasten und Dinge wie Strg-R verwenden Um den Befehlsverlauf zu durchsuchen, sehe ich keinen großen Nutzen für die Funktion.
Eine Variante davon, die Sie vielleicht noch nützlich finden, ist !!
, wodurch der vorherige Befehl erneut ausgeführt wird. Alleine finde ich ! nicht ! Eingabe schneller als nur ↑ Eingabe , aber es kann hilfreich sein, wenn es zu einem größeren Befehl kombiniert wird.
Beispiel: Ein häufiger Pilotenfehler bei sudo
basierten Systemen ist das sudo
zu vergessen Präfix für einen Befehl, der zusätzliche Berechtigungen erfordert. Ein Neuling gibt den gesamten Befehl erneut ein. Der fleißige Schüler bearbeitet den Befehl aus der Befehlshistorie der Shell. Der Erleuchtete tippt sudo !!
.
Verarbeitung von !
auf diese Weise ist in Bash standardmäßig in interaktiven Shells aktiviert und kann mit set +o histexpand
deaktiviert werden oder set +H
. Sie können es in Zsh mit set -K
deaktivieren .