Usa estas expansiones para reutilizar partes del comando anterior sin volver a escribirlas.
<aside> ⭐ La expansión de historial ocurre cuando Bash interpreta la línea, no mientras escribes. Si necesitas editar antes de ejecutar, usa los atajos de Readline de la siguiente sección. (gnu.org)
</aside>
| Comando | Acción | Ejemplo de uso |
|---|---|---|
!! |
Repite el comando completo anterior. | sudo !! para ejecutar el comando previo como root. |
!$ |
Inserta el último argumento del comando anterior. | mkdir carpeta → cd !$ |
!!:1 |
Inserta el primer argumento del comando anterior. | cp file1 file2 → nano !!:1 |
!!:2 |
Inserta el segundo argumento del comando anterior. | cp file1 file2 → nano !!:2 |
!!:^ |
Inserta el primer argumento en forma abreviada. | Equivale a !!:1. |
!!:* |
Inserta todos los argumentos del comando anterior, sin incluir el comando. | touch a b c → rm !!:* |
!!:0 |
Inserta el comando anterior, sin argumentos. | Útil para reutilizar solo el ejecutable. |
!# |
Expande a la línea actual hasta ese punto. | Útil en combinaciones avanzadas de edición. |
<aside>
✅
Si quieres ver qué hará una expansión antes de ejecutarla, puedes usar history -p en Bash para previsualizar el resultado. (gnu.org)
</aside>
Si no quieres usar las flechas del teclado para buscar un comando lejano:
!texto: ejecuta el comando más reciente que empiece por texto.
!doc ejecutaría el último comando que comience por doc, como docker-compose up.!?texto?: ejecuta el comando más reciente que contenga texto en cualquier parte.^error^fijo: busca error en el comando anterior y lo sustituye por fijo.
git commit -m "eror", puedes usar ^eror^error para corregirlo rápidamente.!!:gs/error/fijo/: sustituye todas las apariciones de error por fijo en el comando anterior.
<aside> 💡 La expansión de historial de Bash admite más variantes, pero estas son las más prácticas para el uso diario. (gnu.org)
</aside>
A diferencia de las expansiones anteriores, estos atajos funcionan mientras editas la línea y no requieren pulsar Enter para expandirse. Readline es el sistema de edición de línea que usa Bash. (gnu.org)
Ctrl + A: va al inicio de la línea.Ctrl + E: va al final de la línea.Ctrl + R: búsqueda inversa interactiva en el historial.Alt + . o Esc + .:
Ctrl + X seguido de Ctrl + E: abre el comando actual en tu editor predeterminado para editarlo con comodidad antes de ejecutarlo. (gnu.org)