Відповіді:
Це майже остаточне рішення, коли справа стосується файлів, які неможливо видалити звичайними засобами:
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 *лише тому, що файл названий таким чином.
--лише припиняє інтерпретувати наступні аргументи як параметри - це не заважає оболонці здійснювати її розширення (наприклад *), що саме тут відбувається. (Я знаю, ви запропонували це як альтернативу для інших ситуацій, але попередження було б добре.)