Питання стосується спеціальних змінних. Документація говорить:
!!:$
позначає останній аргумент попередньої команди . Це може бути скорочено до! $.
(
$_
, підкреслення.) При запуску оболонки встановіть абсолютне ім'я шляху, яке використовується для виклику сценарію оболонки або оболонки, який виконується, як передано у середовищі чи списку аргументів. Згодом розширюється до останнього аргументу до попередньої команди після розширення. Також встановіть повне ім'я шляху, яке використовується для виклику кожної команди, виконаної та розміщеної у середовищі, експортованому до цієї команди.
Має бути якась різниця, яку я не можу наздогнати, оскільки:
$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt
$ echo "hello" > /tmp/a.txt
$ echo $_
hello
Яка різниця?
$_
$_
!$