Das Drücken der Aufwärtstaste ist mühsam und ich kann den gesuchten Befehl verpassen. Wenn history
ich am Terminal tippe, bekomme ich alle Befehle, die ich zuvor eingegeben habe, indiziert zu einer Nummer. Kann ich die mit dem Befehl verknüpfte Nummer auf irgendeine Weise anrufen?
20
Antworten:
Die Bash-Geschichte kann viele hilfreiche Dinge bewirken, und die Suche
Strg-r
, die Terry Wang erwähnte, ist eine wichtige unter ihnen. Es ist aber auch möglich, genau das zu tun, wonach Sie gefragt haben.Sie können den vorherigen Befehl mit erneut ausführen
!!
. Hiermit können Sie auch den vorherigen Befehl bearbeiten. Wenn Sie zum Beispiel vergessen haben, Root-Rechte für einen Befehl zu erhaltenSie müssen das alles nicht noch einmal eingeben. Stattdessen einfach anrufen
Wenn Sie den Befehl an einer bestimmten Position von Ihrer Geschichte erneut ausführen möchten, können Sie auch nutzen
!
, zum BeispielFühren Sie den Befehl an Position 3 erneut aus. Beachten Sie, dass dies von oben zählt. Wenn Sie also 500 Befehle in Ihrem Verlauf speichern,
!1
wäre dies "vor 500 Befehlen". Sie können auch negative Zahlen verwenden. Beispielsweisewürde den vorletzten Befehl erneut ausführen.
Sie können auch den letzten Befehl erneut ausführen, der mit einer Zeichenfolge wie gestartet wurde
Das würde die letzte Zeile wiederholen, die mit "apt-" begann. Wenn Sie den letzten Befehl haben möchten, bei dem der String irgendwo in der Zeile vorkommt, können Sie so etwas wie verwenden
Es gibt interessantere Dinge, die die Bash-Geschichte tun kann. Um einen Eindruck von den vielfältigen Möglichkeiten zu bekommen, können Sie gezielt auf einen Parameter eines Befehls aus der Historie zugreifen. So
würde den dritten Parameter bis zum fünften vom letzten Befehl ausgeben.
BEARBEITEN: In Bezug auf Rudies Kommentar unten werden diese Bash-History-Erweiterungen mit den Standardeinstellungen tatsächlich direkt ausgeführt. Es ist wahrscheinlich am besten so zu beschreiben: Ein Aufruf wie
!-3
wird durch die Shell mit dem drittletzten Befehl aus Ihrem Verlauf ersetzt und dann Ihre Eingabe (mit dem Ersetzen) ausgeführt. Wenn Sie also tippen!-3
und drückenENTER
und Ihr drittletzter Befehl warls ~
, ist er in der Tat derselbe, als hätten Siels ~
erneut getippt undENTER
"auf eigene Faust" gedrückt .Wenn Sie das nicht möchten, können Sie die Shell-Option einstellen
histverify
. Zum Festlegen und Deaktivieren von Shell-Optionen möchten Sie möglicherweise denshopt
Befehl nachlesen . Mithistverify
set!-3
schreibt ein Aufruf wie nur die Ersetzung aus Ihrem Verlauf in Ihre Befehlszeile, führt sie jedoch nicht direkt aus. Sie müssen sozusagenENTER
selbst auf das Entscheidende drücken - oder es unterlassen, wenn Sie möchten.quelle
!
also verdammt gefährlich ... Ich würde gerne wissen, was!-4
genau passiert ist, bevor ich es starte . Oder zeigt es Ihnen zuerst? Coole Zusammenfassung!!-238
. Es sollte nicht allzu schwer sein, sich an Ihren vorletzten, drittletzten und vielleicht letzten Befehl zu erinnern;) Wie so oft bei Linux (und eigentlich beim Computing im Allgemeinen) wird erwartet, dass Sie wissen, was Sie tun. Und wenn Sie wirklich das zusätzliche Sicherheitsnetz wollen, ist es einesshopt
entfernt;)Ja da ist. Wenn Sie beispielsweise den Befehl mit der Nummer 1234 ausführen möchten, gehen Sie wie folgt vor:
!1234
Andere nützliche Sachen:
Wenn Sie den zuletzt ausgeführten Befehl ausführen möchten, gehen Sie wie folgt vor:
Wenn Sie den zuletzt ausgeführten
ls
Befehl ausführen möchten, gehen Sie wie folgt vor:Wenn Sie gerade gelaufen
ls /some/long/path
sind und möchtencd
, tun Sie Folgendes:Für mehr Informationen:
quelle
Verwenden Sie die Tastenkombination
Ctrl
-r
, um den Bash-Verlauf mithilfe von Schlüsselwörtern zu durchsuchen.Eine kurze Referenz zur Bash-Schlüsselbindung: http://ss64.com/bash/syntax-keyboard.html
quelle
Wenn Sie die Verlaufsnummer eines Befehls gefunden haben und diesen erneut ausführen möchten, geben Sie
!
gefolgt von der Nummer ein, z . B.,!1234
und drücken Sie Enter. Dies ist Teil der Erweiterung der Geschichte . Sie können Modifikatoren darauf anheften.Wenn Sie den Befehl bearbeiten möchten, bevor Sie ihn
fc 1234
ausführen , rufen Sie einen externen Editor auf.Aber als Terry Wang bereits erwähnt gibt es in der Regel schneller Möglichkeiten, einen Befehl in der Geschichte Ortung als seine Geschichte Nummer bestimmen, einschließlich Ctrl+ Rinkrementelle Suche (drücken Sie aufrufen , Enterwenn Sie den Befehl , den Sie ausführen möchten , gefunden haben), oder
fc PREFIX
die vorherige auszuführen Befehl beginnend mitPREFIX
.quelle
Der
history
Befehl zeigt alle Befehle und die dazugehörigen Nummern an. Wenn Sie nur eine kurze Überprüfung durchführen möchten, bevor Sie die Befehlszeile Nr. 135 ausführen, können Sie Folgendes eingeben:Dies zeigt Ihnen, was ausgeführt wird.
quelle