GNU/Linux >> Tutoriales Linux >  >> Linux

Vuelva a ejecutar el comando anterior con diferentes argumentos

!:0 debería hacer el truco. De la documentación de 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 $.

(También funciona con bash). También hay !-1 si lo encuentra más conveniente para escribir.


#TL;DRAlt +0 +. :inserta el último comando sin los argumentos

Probado en Ubuntu 18.04 con la configuración predeterminada de combinación de teclas (es decir, combinaciones de teclas de Emacs)

Puedes combinar atajos de teclado

Consideremos que el último comando es:

mv foo bar

arriba , Ctrl +w :último comando sin la última palabra =mv foo

Alt +0 +. :primer argumento del último comando =mv

Algunos atajos útiles:

  • Alt +. :inserte el último argumento del último comando (repita para retroceder en el historial)

  • Alt +número +. :inserte #n-ésimo último argumento del último comando (repita para retroceder en el historial)

  • Alt +- , número , Alt +. , zsh: Alt +- +# +. :inserte #nth primer argumento del último comando (repita para retroceder en el historial)

  • Comandos de corte (relativo a la posición del cursor)

  • Ctrl +w :corta la última palabra

  • Alt +d :corta la siguiente palabra

  • Ctrl +k :corta todo después

  • Ctrl +u , zsh: Alt +w :corta todo lo anterior

  • zsh: Ctrl +u :corta todo el comando (En bash puede combinar Ctrl +u , Ctrl +k )

  • Ctrl +y :pega caracteres previamente cortados con cualquier comando Cortar . En bash puedes encadenar comandos de corte y Ctrl +y los pegará todos.

  • Ctrl +_ :deshacer la última edición (muy útil cuando se excede Ctrl +w )

  • Ctrl +izquierda :ir a la última palabra

  • Ctrl +derecha :pasar a la siguiente palabra

  • casa o Ctrl +a :mover al inicio del comando

  • fin o Ctrl +e :mover al final del comando

Para ver todos los atajos disponibles

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

Desafortunadamente hay algunas limitaciones

"palabras" solo incluye a-zA-Z caracteres, por lo que cualquier carácter de símbolo detendrá los atajos de palabras.

Entonces, si el último argumento fue una URL y desea borrarlo con Ctrl +w será un dolor.

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

Para borrar esa url usando Ctrl +w , tendrías que repetirlo 12 veces.

Sería genial tener accesos directos similares que solo se detengan en el carácter de espacio

Mantengo esto actualizado aquí:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md


Linux
  1. Comando Nohup con ejemplos

  2. ¿Ejecutar script con argumentos como usuario?

  3. Argumentos de la línea de comando para ejecutar la ventana acoplable

  4. ¿Por qué ejecutar un comando de shell de Linux con '&'?

  5. ¿Cómo puedo ejecutar un comando diferente pero con los mismos argumentos?

Comando ip de Linux con ejemplos

Comando Netcat (nc) con ejemplos

15 comandos ps de Linux con ejemplos

Comando runuser de Linux - Ejecutar Shell con ID de usuario/grupo especificado

Comando de historial con ejemplos

Ejecutar comandos con límite de tiempo en Ubuntu 20.04