Die Frage betrifft spezielle Variablen. Dokumentation sagt:
!!:$
bezeichnet das letzte Argument des vorhergehenden Befehls . Dies kann auf! $ Gekürzt werden.
(
$_
, ein Unterstrich.) Legen Sie beim Starten der Shell den absoluten Pfadnamen fest, der zum Aufrufen der Shell oder des Shell-Skripts verwendet wird, die bzw. das in der Umgebungs- oder Argumentliste übergeben wird. Anschließend wird nach der Erweiterung bis zum letzten Argument des vorherigen Befehls erweitert. Stellen Sie auch den vollständigen Pfadnamen ein, der zum Aufrufen aller ausgeführten und in die für diesen Befehl exportierte Umgebung platzierten Befehle verwendet wird.
Es muss einen Unterschied geben, den ich nicht fangen kann, weil:
$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt
$ echo "hello" > /tmp/a.txt
$ echo $_
hello
Was ist der Unterschied?
$_
. Das ist entscheidend. Es erklärt vielleicht nicht den Unterschied, der Sie verwirrt, aber es erklärt eine Reihe anderer Möglichkeiten $_
und !$
ist nicht dasselbe.