Đó là đối số cuối cùng của lệnh trước đó. Từ documentation:
!!:$
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 !$
.
Lưu ý. Nếu bạn muốn chơi xung quanh với lịch sử Bash, tôi đề nghị bạn bật tùy chọn vỏ histverify
như vậy:
shopt -s histverify
(bạn cũng có thể đặt nó trong .bashrc
của bạn để có nó trên vĩnh viễn). Khi sử dụng thay thế lịch sử, sự thay thế không được thực thi ngay lập tức; thay vào đó, nó được đặt trong bộ đệm của readline, chờ bạn nhấn enter… hay không!
Để làm cho mọi việc chính xác, gõ !$
không tương đương với cách gõ "$_"
: !$
thực sự là một lịch sử thay thế, đề cập đến các lời cuối cùng của lệnh trước đó đã được nhập, trong khi "$_"
là người cuối cùng đối số của lệnh trước đây được thực thi. Bạn có thể so sánh cả hai (Tôi có shopt -s histverify
):
$ { echo zee; }
zee
$ echo "$_"
zee
$ { echo zee; }
zee
$ echo !$
$ echo }
Ngoài ra:
$ if true; then echo one; else echo two; fi
one
$ echo "$_"
one
$ if true; then echo one; else echo two; fi
$ echo !$
$ echo fi
Và cũng:
$ echo zee; echo "$_"
zee
zee
$ echo zee2; echo !$
$ echo zee2; echo "$_"
Và cũng
$ echo {1..3}
1 2 3
$ echo "$_"
3
$ echo {1..3}
1 2 3
$ echo !$
$ echo {1..3}
Và cũng
$ echo one ;
$ echo "$_"
one
$ echo one ;
one
$ echo !$
$ echo ;
Có rất nhiều ví dụ khác, ví dụ: với bí danh.
Nguồn
2016-12-29 18:12:20
'' thường/thường liên quan đến các lệnh lịch sử. – user2864740
Theo [câu trả lời này] (http://stackoverflow.com/a/68496), Đây là đối số cuối cùng của lệnh trước – user000001