¿Existe un atajo para volver a ejecutar un comando con argumentos del último comando (no cd, ls o echo)?

¿Existe un atajo para volver a ejecutar un comando con argumentos del último comando (no cd, ls o echo)?

Buscando en el archivo de registro pasado con algo como esto:

gato/ruta/al/archivo de registro | grep -iEw 'alguna-dirección-ip-aquí|correspondiente-dirección-mac-aquí'

Esto me proporciona todas las líneas de registro pasadas hasta ahora para poder ver lo que ha sucedido. Ahora también quiero ver qué está pasando, así que necesito intercambiar catdándome tail -festo:

cola -f/ruta/al/archivo de registro | grep -iEw 'alguna-dirección-ip-aquí|correspondiente-dirección-mac-aquí'

Respuesta1

Puede utilizar !!:*para hacer referencia a todas las palabras excepto a la cero de la última línea de comando.

!!se refiere al comando anterior, :separa la especificación del evento del designador de palabra, *se refiere a todas las palabras menos a la cero.

Esto es de la HISTORY EXPANSIONsección de bash(1).

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

También puedes usar una sustitución rápida donde ^string1^string2^se repite el último comando, reemplazándolo string1con string2:

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

Respuesta2

  1. Presione Upo Ctrl+ Ppara recuperar la línea anterior. Repita si desea la línea anterior, etc.
  2. Presione Homeo Ctrl+ Apara ir al principio de la línea.
  3. Presione Alt+ Dpara eliminar la palabra debajo del cursor, es decir, el comando que desea reemplazar.
  4. Escriba el comando que desea ejecutar ahora.
  5. Presione Enterpara ejecutar el comando.

información relacionada