Loại bỏ một tập tin có tên là -diên [trùng lặp]


18

Các bản sao có thể có:
Làm cách nào để xóa một tệp có tên "-p" khỏi bash?
Làm cách nào để xóa tệp có tên này trên linux: -] ??????? q
Tôi cần sử dụng lệnh nào để xóa tệp có tên `-rf`?

Tôi đã vô tình tạo một tệp có tên: -d

Tôi đã thử sử dụng dấu ngoặc kép đơn và kép cũng như thẻ hoang dã để xóa nó nhưng mỗi lần "rm" lại cho tôi lỗi này:

Cảnh báo: tùy chọn --directory (-d) không có giấy tờ và không có op. Sử dụng -rf để xóa các thư mục không trống rm: toán hạng bị thiếu Hãy thử `rm --help 'để biết thêm thông tin.

Làm thế nào để tôi thoát khỏi tập tin?

Câu trả lời:


44
rm -- -d

--có nghĩa là "kết thúc các lựa chọn". Bất cứ điều gì xa hơn trên dòng lệnh theo sau điều này được hiểu là một đối số (tức là tên tệp trong trường hợp của bạn), và không phải là một tùy chọn.



8

Sử dụng '-' là cách dễ nhất trong trường hợp cụ thể này. Tuy nhiên, một giải pháp tổng quát hơn nếu bạn vấp phải một tệp có các ký tự điều khiển không thể in được là tham chiếu tệp bằng inode:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

Gnu-find có tùy chọn -delete:

find -name "-d" -delete

khác bạn có thể thử

find -name "-d" -exec rm {} ";" 

nhưng quá trình - giải quyết từ trên ngắn hơn và cách dừng giải thích các cờ với - được sử dụng bởi nhiều chương trình, sử dụng thư viện getopt, vì vậy nói chung việc học nó là một điều hữu ích.

Nhưng find / -delete là một cái gì đó rất hữu ích để tìm hiểu quá. Lưu ý rằng cả hai ví dụ sẽ xóa các tệp có tên "-d" theo cách đệ quy, điều này có thể không xảy ra thường xuyên, nhưng nếu bạn có một tệp, được đặt tên là "-d", bạn có thể có nhiều tệp hơn. :)

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.