Wie kann ich einen bestimmten Befehl aus dem Befehlsverlauf abrufen, ohne ihn auszuführen?

13

Zum Beispiel kann ich in bash eingeben, !xyzwelches den letzten Befehl ausführt, mit dem ich angefangen habe xyz.

Wie kann ich den letzten Befehl aufrufen, mit dem ich angefangen habe xyz, ohne ihn auszuführen?
zB damit ich vor der Ausführung Parameter ändern kann ....

Mtl Dev
quelle

Antworten:

20

Sie können dies folgendermaßen tun: Drücken Sie an der Eingabeaufforderung Ctrl+ rund geben Sie dann in Ihrem Fall den Befehl ein, den Sie aufrufen möchten xyz. Dies zeigt Ihnen den vollständigen Befehl, ohne ihn auszuführen.

user2249251
quelle
1
Nützlicher als die !Notation, da Sie Strg-R mehrmals drücken können, um weiter in den Übereinstimmungsverlauf zu wechseln. Wenn Sie an der richtigen Stelle angekommen sind, können Sie versuchen, nicht mit der Eingabetaste, sondern mit der Tastenkombination Strg-o einen hohen Gewinn zu erzielen.
Kubanczyk
12

Versuchen !xyz:p; Es wird den Befehl an den Anfang des Verlaufs zurückrufen, ohne ihn auszuführen, sodass z. B. der Aufwärtspfeil sofort zur interaktiven Bearbeitung darauf zugreifen kann.

Abgesehen davon mache ich eine Übung dazu, wenn ich Befehle mit einem regulären Ausdruck aufrufe, der möglicherweise etwas Schädliches ausgraben könnte, seit ein hastiger Befehl, !rder den letzten rsync ...Befehl aufrufen wollte , zurückgezogen und einen Befehl ausgeführt hatrm * , der auf den Stapel geschoben wurde in jüngerer Zeit als die rsync.

MadHatter
quelle
Danke, das ist eine gute Übung. Ich habe das Gleiche mit einer rm -rf ./*Zeit getan, in der ich noch nie so dankbar war. Zu !xyz:pIhrer Information Das hat funktioniert, danke, aber es waren ein paar zusätzliche Tastenanschläge erforderlich als bei der Strg-R-Lösung.
Mtl Dev
@MtlDev yes; Ich finde, die ^ R-Lösung funktioniert am besten für EMACSEy-Leute, wohingegen der! -Pfad am besten für viOlatoren wie mich funktioniert.
MadHatter
1
  1. Führen Sie den folgenden Befehl aus. Es wird der zuletzt ausgeführte Befehl wiedergegeben. Sie können den Befehl kopieren und bearbeiten. Dieser Befehl wurde in Debian getestet.

    Geschichte | Schwanz -2 | grep -v Geschichte | cut -d '' -f4-

  2. Oder Halten Sie die Tastenkombination Strg + R gedrückt und geben Sie den Anfangsbuchstaben Ihres letzten Befehls ein. Es listet die Befehle auf, die Sie zuvor basierend auf Ihrer Eingabe ausgeführt haben. Sobald der gewünschte Befehl angezeigt wird, drücken Sie einfach den Rechtspfeil, um diesen Befehl auszuwählen.

Vembutech
quelle
1
Der erste Befehl ist so reibungslos !! Ich denke, es ist schneller, sich nur um den Befehl in der Geschichte zu kümmern, als all das zu schreiben ^ __ ^
Grajdeanu Alex.
1

Wenn die Rückwärtssuche fehlgeschlagen ist, führen Sie einen der folgenden Schritte aus:

$ history | grep WHAT_YOU_LOOK_FOR

Oder:

$ grep WHAT_YOU_LOOK_FOR ~/.bash_history
178024
quelle