Không - có nghĩa là gì - (còn được gọi là trần đôi dash dash)


469

Tôi đã thấy --được sử dụng trong compgenlệnh.

Ví dụ:

compgen -W "foo bar baz" -- b

Ý nghĩa của cái --trong đó là gì?

Câu trả lời:


583

Chính xác hơn, dấu gạch ngang kép ( --) được sử dụng trong các lệnh tích hợp bash và nhiều lệnh khác để biểu thị sự kết thúc của các tùy chọn lệnh, sau đó chỉ các tham số vị trí được chấp nhận.

Ví dụ sử dụng: giả sử bạn muốn grep một tệp cho chuỗi -v- thông thường -vsẽ được coi là tùy chọn để đảo ngược ý nghĩa khớp (chỉ hiển thị các dòng không khớp), nhưng với --bạn có thể grep cho chuỗi -vnhư thế này:

grep -- -v file

3
Đáng chú ý nhất là trong Bash tích sethợp, nơi thực sự cần thiết.
l0b0

10
--hoạt động để tách các tùy chọn khỏi các biểu thức thông thường trong grep, nhưng cách chính tắc là sử dụng -e/ --regexp.
l0b0

5
@ l0b0: mẫu để tìm kiếm thường là một trong các tham số vị trí, vì vậy nó có thể phù hợp với sau --, mặc dù bạn đã lưu ý rằng ví dụ của tôi ở trên cũng có thể được viết là grep -e -v file(mặc dù điều đó rất khó hiểu).
Guss

2
Không phải tất cả bashcác lệnh dựng sẵn chấp nhận --là kết thúc của dấu tùy chọn. [echokhông ví dụ ( một trong những lý do echokhông thể được sử dụng đáng tin cậy ).
Stéphane Chazelas

44

Điều này đánh dấu kết thúc của danh sách tham số (tùy chọn).


39

Trong phần man bashchúng ta có thể đọc trong phần Shell Buildin Commands :

Trừ khi có ghi chú khác, mỗi lệnh dựng sẵn được ghi lại trong phần này dưới dạng chấp nhận các tùy chọn đi trước bằng cách -chấp nhận -- để biểu thị kết thúc của các tùy chọn .

Các :, true, false, và testdựng sẵn không chấp nhận lựa chọn và không điều trị --đặc biệt. Các exit, logout, break, continue, let, và shiftbuiltins chấp nhận và lập luận quá trình bắt đầu với -mà không đòi hỏi --. Các nội dung khác chấp nhận đối số nhưng không được chỉ định là chấp nhận tùy chọn giải thích các đối số bắt đầu bằng -tùy chọn không hợp lệ và yêu cầu --ngăn chặn giải thích này.

Lưu ý rằng echokhông giải thích --có nghĩa là kết thúc các tùy chọn.


2
+1 để tham khảo man bash(ghi chú cho lần sau :).
dùng3773048

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.