traduccion - ¿Qué es bang dollar(! $) En Bash?
bash scripting tutorial español (2)
Ese es el último argumento del comando anterior. De la documentation :
!!:$
Designa el último argumento del comando anterior. Esto puede ser reducido a
!$
.
Observación. Si quieres jugar con el historial de Bash, te sugiero que histverify
opción de shell así:
shopt -s histverify
(También puedes ponerlo en tu .bashrc
para tenerlo encendido permanentemente). Cuando se usa la sustitución de historial, la sustitución no se ejecuta inmediatamente; en su lugar, se coloca en el búfer de readline, esperando que presione Entrar ... ¡o no!
Para hacer las cosas más precisas, escribir !$
No es equivalente a escribir "$_"
!$
Es realmente una sustitución del historial, haciendo referencia a la última palabra del comando anterior que se ingresó, mientras que "$_"
es el último argumento de comando ejecutado previamente. Puedes comparar ambos (tengo shopt -s histverify
):
$ { echo zee; }
zee
$ echo "$_"
zee
$ { echo zee; }
zee
$ echo !$
$ echo }
También:
$ if true; then echo one; else echo two; fi
one
$ echo "$_"
one
$ if true; then echo one; else echo two; fi
$ echo !$
$ echo fi
Y también:
$ echo zee; echo "$_"
zee
zee
$ echo zee2; echo !$
$ echo zee2; echo "$_"
Y también
$ echo {1..3}
1 2 3
$ echo "$_"
3
$ echo {1..3}
1 2 3
$ echo !$
$ echo {1..3}
Y también
$ echo one ;
$ echo "$_"
one
$ echo one ;
one
$ echo !$
$ echo ;
Hay muchos otros ejemplos, por ejemplo, con alias.
Bang dollar parece referirse a la última parte de la última línea de comando.
P.ej
$ ls -l
.... something
$ !$
-l
bash: -l command not found
Puedo encontrar mucho en las variables del dólar (por ejemplo, $!
) Pero no en esto. Alguna explicacion
!$
puede hacer lo que $_
hace, excepto el hecho de que $_
no almacena el valor que devuelve (como su sustitución) al history
.
Aquí hay un ejemplo.
Con !$
za:tmep za$ ls -lad
drwxr-xr-x 4 za staff 136 Apr 6 2016 .
za:tmep za$ !$
-lad
-bash: -lad: command not found
za:tmep za$ history | tail -n 3
660 ls -lad
661 -lad <<== history shows !$ substitution.
662 history | tail -n 3
Con $_
za:tmep za$ ls -lad
drwxr-xr-x 4 za staff 136 Apr 6 2016 .
za:tmep za$ $_
-bash: -lad: command not found
za:tmep za$ history | tail -n 3
663 ls -lad
664 $_ <<== history shows $_ and not its substitution.
665 history | tail -n 3
za:tmep za$
Mas opciones:
!^ first argument
!:2 second argument
!:2-$ second to last arguments
!:2* second to last arguments
!:2- second to next to last arguments
!:2-3 second to third arguments
!$ last argument
!* all arguments