GNU/Linux >> Znalost Linux >  >> Linux

Znovu spusťte předchozí příkaz s jinými argumenty

!:0 by měl udělat trik. Z dokumentace zsh:

   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 $.

(Funguje to i s bash.) K dispozici je také !-1 pokud vám to přijde pohodlnější psát.


#TL;DRAlt +0 +. :vloží poslední příkaz bez argumentů

Testováno na Ubuntu 18.04 s výchozím nastavením kláves (tj. kláves Emacs)

Klávesové zkratky můžete kombinovat

Předpokládejme, že poslední příkaz je:

mv foo bar

nahoru , Ctrl +w :poslední příkaz bez posledního slova =mv foo

Alt +0 +. :první argument posledního příkazu =mv

Některé užitečné zkratky:

  • Alt +. :vložte poslední argument z posledního příkazu (opakováním se vrátíte do historie)

  • Alt +číslo +. :vložte #n-tý poslední argument z posledního příkazu (opakováním se vrátíte do historie)

  • Alt +- , číslo , Alt +. , zsh: Alt +- +# +. :vložte #n-tý první argument z posledního příkazu (opakováním se vrátíte do historie)

  • Příkazy pro vyjmutí (vzhledem k pozici kurzoru)

  • Ctrl +w :přeruší poslední slovo

  • Alt +d :vystřihne další slovo

  • Ctrl +k :ořízne vše po

  • Ctrl +u , zsh: Alt +w :ořízne vše předtím

  • zsh: Ctrl +u :vyjme celý příkaz (V bash můžete kombinovat Ctrl +u , Ctrl +k )

  • Ctrl +y :vložte znaky, které byly dříve vyříznuty pomocí libovolného příkazu Vyjmout . V bash příkazy oříznutí můžete řetězit a Ctrl +y vloží je všechny.

  • Ctrl + :vrátit zpět poslední úpravu (velmi užitečné při překročení Ctrl +w )

  • Ctrl +doleva :přesun na poslední slovo

  • Ctrl +vpravo :přechod na další slovo

  • domů nebo Ctrl +a :přesun na začátek příkazu

  • konec nebo Ctrl +e :přesun na konec příkazu

Chcete-li zobrazit všechny dostupné zkratky

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

Bohužel existují určitá omezení

"words" zahrnuje pouze a-zA-Z znaků, takže jakýkoli znak symbolu zastaví slovní zkratky.

Pokud tedy byl posledním argumentem adresa URL a chcete ji vymazat pomocí Ctrl +w bude to bolest.

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

Chcete-li vymazat tuto url pomocí Ctrl +w , museli byste to opakovat 12krát.

Bylo by skvělé mít podobné zkratky, které se zastavují pouze u znaku mezery

Udržuji to aktuální zde:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md


Linux
  1. JQ Command v Linuxu s příklady

  2. Shell Script Wrapper zabránit spuštění příkazu bez argumentů?

  3. Spustit skript s argumenty jako uživatel?

  1. Spustit příkaz pomocí argumentů, které pocházejí z pole?

  2. argumenty příkazového řádku pro spuštění dockeru

  3. Proč spouštět příkaz prostředí Linux s '&'?

  1. Příkaz Nohup s příklady

  2. Ubuntu - Spusťte příkaz při spuštění pomocí sudo

  3. Jak mohu spustit jiný příkaz, ale se stejnými argumenty?