La pregunta es sobre variables especiales. La documentación dice:
!!:$
designa el último argumento del comando anterior . Esto puede acortarse a! $.
(
$_
, un guión bajo). Al iniciar el shell, establezca el nombre de ruta absoluto utilizado para invocar el shell o el script de shell que se ejecuta como se pasa en el entorno o la lista de argumentos. Posteriormente, se expande hasta el último argumento del comando anterior después de la expansión. Establezca también el nombre de ruta completo utilizado para invocar cada comando ejecutado y colocado en el entorno exportado a ese comando.
Debe haber alguna diferencia que no pueda captar, porque:
$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt
$ echo "hello" > /tmp/a.txt
$ echo $_
hello
¿Cuál es la diferencia?
$_
. Eso es crucial Es posible que no explique la diferencia que lo desconcierta, pero explica muchas otras formas $_
y !$
no son lo mismo.