Gibt es eine Verknüpfung zum erneuten Ausführen eines Befehls mit Argumenten des letzten Befehls (nicht cd, ls oder echo)?

Gibt es eine Verknüpfung zum erneuten Ausführen eines Befehls mit Argumenten des letzten Befehls (nicht cd, ls oder echo)?

Durchsuchen der übergebenen Protokolldatei mit etwa Folgendem:

Katze/Pfad/zur/Protokolldatei | grep -iEw 'irgendeine-IP-Adresse-hier|entsprechende-MAC-Adresse-hier'

Dadurch erhalte ich alle bis jetzt übergebenen Protokollzeilen, sodass ich sehen kann, was passiert ist. Jetzt möchte ich auch sehen, was passiert, also muss ich catFolgendes austauschen tail -f:

Schwanz -f/Pfad/zur/Protokolldatei | grep -iEw 'irgendeine-IP-Adresse-hier|entsprechende-MAC-Adresse-hier'

Antwort1

Sie können !!:*auf alle Wörter außer dem Nullwort der letzten Befehlszeile verweisen.

!!bezieht sich auf den vorherigen Befehl, :trennt die Ereignisspezifikation vom Wortbezeichner und *bezieht sich auf alle Wörter außer dem nullten.

Dies stammt aus dem HISTORY EXPANSIONAbschnitt von bash(1).

wieland@host in ~» cat foo | grep bar
bar
wieland@host in ~» tail -f !!:*
tail -f foo | grep bar
bar

Sie können auch eine schnelle Ersetzung verwenden, bei der ^string1^string2^der letzte Befehl wiederholt und string1durch Folgendes ersetzt wird string2:

wieland@host in ~» cat foo | grep bar
bar
wieland@host in ~» ^cat^tail -f
tail -f foo | grep bar
bar

Antwort2

  1. Drücken Sie Upoder Ctrl+, Pum die vorherige Zeile abzurufen. Wiederholen Sie den Vorgang, wenn Sie die vorherige Zeile abrufen möchten usw.
  2. Drücken Sie Homeoder Ctrl+, Aum zum Zeilenanfang zu gelangen.
  3. Drücken Sie Alt+ D, um das Wort unter dem Cursor zu löschen, also den Befehl, den Sie ersetzen möchten.
  4. Geben Sie den Befehl ein, den Sie jetzt ausführen möchten.
  5. Drücken Sie Enter, um den Befehl auszuführen.

verwandte Informationen