
Me gustaría mejorar un poco mi flujo de trabajo con Bash y me doy cuenta de que a menudo quiero ejecutar el mismo comando en un ejecutable diferente.
Algunos ejemplos:
Git (donde me gustaría cambiar rápidamente la segunda palabra):
git diff foo/bar.c
git checkout foo/bar.c
Cat/rm (donde sólo se debe cambiar la primera palabra):
cat foo/is/a/very/long/path/to/bar.c
rm foo/is/a/very/long/path/to/bar.c
Sé que puedo presionar Ctrl+ ay luego Deleliminar la primera palabra, pero me pregunto si hay una manera más rápida de hacerlo.
Respuesta1
!$
se expande a la última palabra de su comando anterior.
Entonces podrías hacer:
cat foo/is/a/very/long/path/to/bar.c
rm !$
o:
git diff foo/bar.c
git checkout !$
Tus ejemplos solo repitieron la última palabra, por lo que !$
funcionó bien. Si realmente tuviera muchos argumentos que quisiera repetir y solo quisiera cambiar la primera palabra, podría usar !*
, que se expande a todas las palabras del comando anterior excepto la cero.
Consulte la sección "EXPANSIÓN DEL HISTORIAL" de la bash
página de manual. Hay mucha flexibilidad ahí.
Respuesta2
Ctrl+ apara ir al principio de la línea, luego Alt+ dpara eliminar la primera palabra.
Respuesta3
No estoy seguro de si sería más rápido o no, pero miraEste artículo,particularmente el punto #.3:
- Reemplace una cadena del comando anterior usando ^str1^str2^
En el siguiente ejemplo, primero ejecutamos el comando ls para verificar un archivo. Más tarde nos dimos cuenta de que queremos ver el contenido del archivo. En lugar de volver a escribir el nombre completo del archivo, podemos simplemente reemplazar "ls" en el comando anterior con "cat" como se muestra a continuación.
$ ls /etc/cron.daily/logrotate $ ^ls^cat^ cat /etc/cron.daily/logrotate
Respuesta4
Además de la respuesta de @jjlin, es posible que le interesen los siguientes consejos:
- Ctrl+ welimina la palabra a tu izquierda
- Ctrl+ kelimina desde el cursor hasta el final de la línea de comando
- Ctrl+ uelimina desde el cursor hasta el inicio de la línea de comando
- Alt+ bmueve el cursor una palabra hacia atrás
- Alt+ fmueve el cursor una palabra hacia adelante
$_
contiene el último argumento de la línea de comando anterior
Para obtener más información sobre estos, busque la sección "Nombres de comandos de línea de lectura" de la bash
página de manual.
p.ej:
cat foo/is/a/very/long/path/to/bar.c
rm $_