Відповіді:
Це майже остаточне рішення, коли справа стосується файлів, які неможливо видалити звичайними засобами:
ls -il
У першому стовпці буде показано номер inode файлів.
find . -inum [inode-number] -exec rm -i {} \;
Це видалить файл із вказаним номером inode після перевірки.
-delete
замість -exec
, а потім зрозумів, що ви використовуєте, rm -i
що є хорошою ідеєю, тому я відкотився назад. Вибачте.
Ви повинні мати можливість посилатися на цей файл як ~/~
(без лапок), оскільки tilde-розширення застосовує лише tilde ( ~
) на самому початку слова.
rm ./~
, з тієї ж причини, яку ви сказали
./~
буквально означає "файл або папку, названу ~
в поточному каталозі" . Немає таких хак, як символи втечі або посилання на inode.
./~
так. Через п’ять років моя пам’ять трохи нечітка, але я вважаю, що саме тому я запропонував, ~/~
а не більш нормальне ./~
: питання конкретно стосується "файла, названого ~
в домашньому каталозі [ОП] "; не "у поточному каталозі".
Цитуйте його ( rm '~'
) або уникайте ( rm \~
).
Це завжди або з цих (також, наприклад, $
), або додати, --
щоб запобігти інтерпретації імені файлу як аргумент: rm -- -i
видаляє названий файл -i
; також корисно, rm -- *
коли ви хочете видалити всі файли в поточному каталозі: Не випадково rm -f *
лише тому, що файл названий таким чином.
--
лише припиняє інтерпретувати наступні аргументи як параметри - це не заважає оболонці здійснювати її розширення (наприклад *
), що саме тут відбувається. (Я знаю, ви запропонували це як альтернативу для інших ситуацій, але попередження було б добре.)