La domanda riguarda le variabili speciali. La documentazione dice:
!!:$
indica l' ultimo argomento del comando precedente . Questo può essere abbreviato in! $.
(
$_
, un trattino basso). All'avvio della shell, impostare sul percorso assoluto usato per invocare la shell o lo script della shell in esecuzione come passato nell'ambiente o nell'elenco degli argomenti. Successivamente, si espande all'ultimo argomento al comando precedente dopo l'espansione. Impostato anche sul percorso completo utilizzato per richiamare ogni comando eseguito e inserito nell'ambiente esportato in quel comando.
Dev'esserci qualche differenza che non riesco a cogliere, perché:
$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt
$ echo "hello" > /tmp/a.txt
$ echo $_
hello
Qual è la differenza?
$_
. Questo è cruciale. Potrebbe non spiegare la differenza che ti confonde, ma spiega un sacco di altri modi $_
e !$
non sono gli stessi.