¿Cómo puedo recordar el argumento del anterior comando bash?


¿Hay alguna manera en Bash de recordar el argumento del comando anterior?

Normalmente hago vi file.c seguido de gcc file.c.

¿Hay alguna manera en Bash de recordar el argumento del comando anterior?

Author: user2314737, 2010-07-30

7 answers

Puede usar $_ o !$ para recordar el último argumento del comando anterior.

También Alt + . se puede usar para recordar el último argumento de cualquiera de los comandos anteriores.

 402
Author: codaddict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-30 12:17:59

Si el comando anterior tenía dos argumentos, como este

ls a.txt b.txt

Y usted quería el primero, usted podría escribir

!:1

Dando

a.txt

O si quieres ambos, puedes escribir

!:1-2

Dando

a.txt b.txt

Puede extender esto a cualquier número de argumentos, por ejemplo:

!:10-12
 124
Author: Robert Gowland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-30 13:10:33

En la línea de comandos, puede pulsar esc-. o alt+.

Recorre los argumentos anteriores que utilizó.

 54
Author: Antonio Mano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-19 17:31:22

!!:n donde n es la posición basada en 0 del argumento que desea.

Por ejemplo:

echo 'one' 'two'
# "one two"

echo !!:2
# "two"

El prefijo ! se usa para acceder a comandos anteriores.

Otros comandos útiles:

  • !$ - último argumento del comando anterior
  • !^ - primer argumento (después del programa/built-in/script) del comando anterior
  • !! - comando anterior (a menudo pronunciado "bang bang")
  • !n - número de orden n desde history
  • !pattern - coincidencia de comandos más reciente pattern
  • !!:s/find/replace - último comando, sustituir find por replace

Más información sobre el historial de comandos

 45
Author: John Syrinek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-15 18:59:18

Si conoce el número dado en el historial para un comando en particular, puede tomar prácticamente cualquier argumento en ese comando usando los siguientes términos.

Use following para tomar el segundo argumento del tercer comando en la historia,

!3:2

Use following para tomar el tercer argumento del quinto último comando en la historia,

!-5:3

Usando un signo menos, le pides que atraviese desde el último comando de la historia.

 22
Author: Madisz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-23 17:51:06

Sí, puede usar !$ para recordar el último argumento del comando anterior.

 14
Author: Justin Ethier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-30 12:18:47

!* ejecuta un nuevo comando con todos los argumentos anteriores.

ls /tmp
cd !*
#you are now in /tmp
 6
Author: Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-16 18:40:24