Pertanyaannya adalah tentang variabel khusus. Dokumentasi mengatakan:
!!:$
menunjuk argumen terakhir dari perintah sebelumnya . Ini dapat disingkat menjadi $!
(
$_
, garis bawah.) Pada startup shell, setel ke pathname absolut yang digunakan untuk memanggil shell atau skrip shell yang dieksekusi seperti yang diteruskan dalam lingkungan atau daftar argumen. Selanjutnya, perluas argumen terakhir ke perintah sebelumnya setelah ekspansi. Juga setel ke nama path lengkap yang digunakan untuk memanggil setiap perintah yang dieksekusi dan ditempatkan di lingkungan yang diekspor ke perintah itu.
Pasti ada beberapa perbedaan yang tidak bisa saya tangkap, karena:
$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt
$ echo "hello" > /tmp/a.txt
$ echo $_
hello
Apa bedanya?
$_
. Itu krusial. Mungkin tidak menjelaskan perbedaan yang membingungkan Anda, tetapi itu menjelaskan banyak cara lain $_
dan !$
tidak sama.