GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Führen Sie den vorherigen Befehl mit anderen Argumenten erneut aus

!:0 sollte den Trick machen. Aus der zsh-Dokumentation:

   Word Designators
       A word designator indicates which word or words of a given command line
       are to be included in a history reference.  A `:' usually separates the
       event specification from the word designator.  It may be  omitted  only
       if  the  word designator begins with a `^', `$', `*', `-' or `%'.  Word
       designators include:

       0      The first input word (command).
       n      The nth argument.
       ^      The first argument.  That is, 1.
       $      The last argument.
       %      The word matched by (the most recent) ?str search.
       x-y    A range of words; x defaults to 0.
       *      All the arguments, or a null value if there are none.
       x*     Abbreviates `x-$'.
       x-     Like `x*' but omitting word $.

(Es funktioniert auch mit Bash.) Es gibt auch !-1 wenn Sie das einfacher zu tippen finden.


#TL;DRAlt +0 +. :fügt den letzten Befehl ohne die Argumente ein

Getestet auf Ubuntu 18.04 mit den Standard-Keybinding-Einstellungen (d. h. Emacs-Keybindings)

Sie können Tastaturkürzel kombinieren

Betrachten wir den letzten Befehl als:

mv foo bar

nach oben , Strg +w :letzter Befehl ohne das letzte Wort =mv foo

Alt +0 +. :erstes Argument des letzten Befehls =mv

Einige nützliche Abkürzungen:

  • Alt +. :letztes Argument aus letztem Befehl einfügen (wiederholen um zurück in den Verlauf zu gehen)

  • Alt +Nummer +. :#n-tes letztes Argument vom letzten Befehl einfügen (wiederholen, um in der Historie zurückzugehen)

  • Alt +- , Nummer , Alt +. , zsh: Alt +- +# +. :#n-tes erstes Argument vom letzten Befehl einfügen (wiederholen, um in der Historie zurückzugehen)

  • Ausschneidebefehle (relativ zur Position des Cursors)

  • Strg +w :schneidet letztes Wort ab

  • Alt +d :schneidet nächstes Wort ab

  • Strg +k :schneidet alles nach

  • Strg +u , zsh: Alt +w :schneidet alles vorher ab

  • zsh: Strg +u :schneidet den gesamten Befehl (In Bash können Sie Strg kombinieren +u , Strg +k )

  • Strg +y :fügen Sie Zeichen ein, die zuvor mit einem beliebigen Ausschneidebefehl ausgeschnitten wurden . In Bash können Sie Ausschneidebefehle verketten , und Strg +y fügt sie alle ein.

  • Strg +_ :Letzte Änderung rückgängig machen (sehr nützlich, wenn Strg überschritten wird +w )

  • Strg +links :Zum letzten Wort wechseln

  • Strg +richtig :Zum nächsten Wort wechseln

  • Startseite oder Strg +a :Zum Anfang des Befehls wechseln

  • Ende oder Strg +e :Zum Ende des Befehls wechseln

Zum Anzeigen aller verfügbaren Verknüpfungen

  • bash: bind -lp
  • zsh: bindkey -L

Leider gibt es einige Einschränkungen

"words" enthält nur a-zA-Z Zeichen, so dass jedes Symbolzeichen Wortverknüpfungen stoppt.

Wenn also das letzte Argument eine URL war und Sie sie mit Strg löschen möchten +w es wird ein Schmerz sein.

Beispiel:curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments

Um diese URL zu löschen mit Strg +w , müssten Sie es 12 Mal wiederholen.

Es wäre großartig, ähnliche Verknüpfungen zu haben, die nur beim Leerzeichen aufhören

Ich halte dies hier aktuell:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md


Linux
  1. JQ-Befehl in Linux mit Beispielen

  2. Ubuntu - Befehl beim Start mit sudo ausführen

  3. Verwenden Sie den Bash-Verlauf, um einen vorherigen Befehl abzurufen, kopieren Sie ihn und führen Sie ihn dann aus, jedoch mit dem kommentierten Befehl

  4. Warum einen Linux-Shell-Befehl mit '&' ausführen?

  5. Wie kann ich einen Befehl verzögert im Hintergrund ausführen?

Linux-IP-Befehl mit Beispielen

Netcat (nc) Befehl mit Beispielen

15 Linux-PS-Befehl mit Beispielen

Linux-Befehl „runuser“ – Shell mit angegebener Benutzer-/Gruppen-ID ausführen

Verlaufsbefehl mit Beispielen

Führen Sie Befehle mit einem Zeitlimit in Ubuntu 20.04 aus