Các dấu gạch ngang là một nhân vật đặc biệt trong Bash như đã nêu tại http://tldp.org/LDP/abs/html/special-chars.html#DASHREF. Vì vậy, thoát khỏi điều này một lần chỉ được bạn qua Bash, nhưng Grep vẫn có ý nghĩa riêng của nó để gạch ngang (bằng cách cung cấp các tùy chọn).
Vì vậy, bạn thực sự cần phải thoát khỏi nó hai lần (nếu bạn không muốn sử dụng các câu trả lời được đề cập khác). Sau đây sẽ/nên hoạt động
grep \\-X
grep '\-X'
grep "\-X"
Một cách để thử cách Bash chuyển đối số cho tập lệnh/chương trình là tạo tập lệnh .sh chỉ lặp lại tất cả đối số. Tôi sử dụng một kịch bản gọi là echo-args.sh để chơi với bất cứ lúc nào, tất cả nó chứa là:
echo $*
tôi gọi nó là:
bash echo-args.sh \-X
bash echo-args.sh \\-X
bash echo-args.sh "\-X"
Bạn nhận được các ý tưởng.
Nguồn
2012-05-15 23:38:42
'- -' là một thủ thuật tiện dụng cho một số tiện ích Unix. – Johnsyweb
Làm việc với 'ack' – dukedave
cho những người trong chúng ta tự hỏi ở giai đoạn này những gì' --' có nghĩa là hoặc không: http://unix.stackexchange.com/questions/11376/what-does-double-dash-mean –