rm -- --somefile
Trong khi làm việc, đó là một giải pháp dựa trên rm
sử dụng getopts cho phân tích tùy chọn của nó. Có những ứng dụng trên mạng có khả năng phân tích cú pháp của riêng chúng và sẽ làm rối loạn điều đó (vì chúng có thể không nhất thiết phải triển khai "--
có nghĩa là kết thúc các tùy chọn" logic).
Do đó, các giải pháp bạn nên lái xe thông qua hộp sọ của bạn là một trong những điều này:
rm ./--somefile
Nó sẽ luôn luôn làm việc, bởi vì cách này lập luận của bạn không bao giờ bắt đầu với một -
.
Hơn nữa, nếu bạn đang cố tạo các kịch bản shell thực sự tốt; bạn nên đặt ./
vào trước tất cả các mở rộng tham số tên tệp để ngăn các tập lệnh của bạn bị hỏng do nhập tên tệp funky (hoặc để ngăn chúng bị lạm dụng/khai thác để làm những việc mà chúng không được phép thực hiện: ví dụ, rm
sẽ xóa các tập tin nhưng bỏ qua các thư mục, trong khi rm -rf *
sẽ xóa tất cả mọi thứ.Thông qua một tên tập tin "-rf
" đến một kịch bản hoặc ai đó touch ~victim/-rf
'ing có thể theo cách này được sử dụng để thay đổi hành vi của nó với hậu quả thực sự xấu).
Tương tự trên [serverfault] (https://serverfault.com/questions/47003/deleting-a-unix-directory-with-a-hyphen-in-the-name) và [unix] (https: // unix.stackexchange.com/questions/1519/how-do-i-delete-a-file-whose-name-begins-with-hyphen-aka-dash-or-minus). – Dorian
@Dorian Vâng ok, nhưng tôi đã lần đầu tiên :) – cb0