Ответы:
Практически идеальное решение для файлов, которые нельзя удалить обычными средствами:
ls -il
В первом столбце будет показан номер индекса файлов.
find . -inum [inode-number] -exec rm -i {} \;
Это удалит файл с указанным номером inode после проверки.
-deleteвместо -exec, а затем понял, что вы используете, rm -iчто является хорошей идеей, поэтому я откатился назад. Сожалею.
Вы должны иметь возможность ссылаться на этот файл как ~/~(без кавычек), потому что расширение тильды применяет тильду ( ~) только в самом начале слова.
rm ./~, по той же причине, по которой вы сказали
./~буквально означает «файл или папку с именем ~в текущем каталоге» . Нет таких хаков, как escape-символы или ссылки на inode.
./~делает. Спустя пять лет моя память немного размыта, но я думаю, что именно поэтому я предложил, ~/~а не более нормальный ./~: вопрос конкретно относится к «файлу, названному ~в домашнем каталоге [OP's] »; не "в текущем каталоге".
Цитируйте это ( rm '~') или избегайте этого ( rm \~).
Это всегда либо один из них (также, например, $), либо add, --чтобы имя файла не интерпретировалось как аргумент: rm -- -iудаляет файл с именем -i; также полезно, rm -- *когда вы хотите удалить все файлы в текущем каталоге: не случайно, rm -f *только потому, что файл назван так.
--только останавливает следующие аргументы, интерпретируемые как параметры - это не мешает оболочке выполнять расширение (например *), что и происходит здесь. (Я знаю, что вы предложили это в качестве альтернативы для других ситуаций, но было бы неплохо предупредить.)