Câu hỏi là về các biến đặc biệt. Tài liệu nói:
!!:$
chỉ định đối số cuối cùng của lệnh trước . Điều này có thể được rút ngắn thành! $.
(
$_
, một dấu gạch dưới.) Khi khởi động shell, được đặt thành tên đường dẫn tuyệt đối được sử dụng để gọi tập lệnh shell hoặc shell đang được thực thi như được truyền trong môi trường hoặc danh sách đối số. Sau đó, mở rộng đối số cuối cùng sang lệnh trước đó sau khi mở rộng. Cũng được đặt thành tên đường dẫn đầy đủ được sử dụng để gọi từng lệnh được thực thi và được đặt trong môi trường được xuất sang lệnh đó.
Phải có một số khác biệt tôi không thể nắm bắt được, bởi vì:
$ echo "hello" > /tmp/a.txt
$ echo "!$"
echo "/tmp/a.txt"
/tmp/a.txt
$ echo "hello" > /tmp/a.txt
$ echo $_
hello
Sự khác biệt là gì?
$_
. Điều đó rất quan trọng. Nó có thể không giải thích sự khác biệt đánh đố bạn nhưng nó giải thích một loạt các cách khác $_
và !$
không giống nhau.