Câu trả lời:
Giải pháp tối ưu khá nhiều khi nói đến các tệp không thể bị xóa bằng các phương tiện thông thường:
ls -il
Cột đầu tiên sẽ hiển thị số inode của các tệp.
find . -inum [inode-number] -exec rm -i {} \;
Thao tác này sẽ xóa tệp có số inode được chỉ định sau khi xác minh.
-deletethay vì -exec, sau đó nhận ra rằng bạn đang sử dụng rm -iđó là một ý tưởng tốt để tôi quay lại. Lấy làm tiếc.
Bạn sẽ có thể xem tệp đó là ~/~(không có dấu ngoặc kép) vì mở rộng dấu ngã chỉ áp dụng dấu ngã ( ~) ở đầu từ.
rm ./~, với cùng lý do bạn đã nói
./~nghĩa đen là "một tệp hoặc thư mục có tên ~trong thư mục hiện tại" . Không có hack như ký tự thoát hoặc tham chiếu inode.
./~thì không. Sau năm năm, ký ức của tôi là một chút mờ, nhưng tôi nghĩ đó là lý do tại sao tôi đề nghị ~/~chứ không phải là bình thường hơn ./~: Câu hỏi đặt ra đặc biệt đề cập đến "một file có tên ~trong [OP của] thư mục home "; không "trong thư mục hiện tại".
Trích dẫn nó ( rm '~') hoặc thoát nó ( rm \~).
Nó luôn luôn là một trong số đó (cũng là ví dụ $) hoặc thêm --vào để ngăn tên tệp bị hiểu là đối số: rm -- -ixóa tệp có tên -i; cũng hữu ích rm -- *khi bạn muốn xóa tất cả các tệp trong thư mục hiện tại: Không phải ngẫu nhiên rm -f *chỉ vì một tệp được đặt tên như vậy.
--chỉ dừng các đối số sau đây được hiểu là tham số - nó không ngăn shell thực hiện việc mở rộng của nó (ví dụ *), đó là những gì đang xảy ra ở đây. (Tôi biết bạn đã đề xuất nó như một giải pháp thay thế cho các tình huống khác, nhưng cảnh báo sẽ tốt.)