tutorial traduccion script lenguaje example español bash syntax symbols

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