Как удалить файл с именем "-f" через терминал? Используя обычный способ у вас ничего не получится! Да кто вообще дает файлам такие странные имена? Давайте разбираться!
Обычно, для удаления файлов используется команда "rm". Ее синтаксис выглядит следующим образом:
rm [дополнительная опция] [название файла]
Для примера, команда:
rm -f myfile
Она удалит без подтверждения файл с названием "myfile". В данном случае дополнительная опция "-f" как раз убирает необходимое для всякого удаления подтверждение. Вы уже наверное смекнули в чем подвох?
Таким образом, если вы решите удалить файл с именем "-f" с помощью команды:
rm -f
Команда примет название файла за дополнительную опцию. Разумеется, удаление не будет выполнено, поскольку синтаксис будет не полным. Команда все еще ждет от вас имя файла.
Как выйти из этой ситуации? Есть один безотказный способ, который работает всегда. Нужно указать полный путь до файла!
rm home/plectrom/-f
Вот в таком случае удаление пройдет чисто и гладко!
Но существует и другой способ. Он работает в большинстве популярных дистрибутивов Linux и BSD. Нужно отделить имя файла от команды с помощью двойного дефиса (--):
rm -- -f
Вы по-прежнему можете добавить дополнительную опцию в команду с таким синтаксисом:
rm -i -- -f
В данном случае дополнительная опция (-i) отвечает за обязательное подтверждение перед удалением файла.
Так что если вы столкнулись с проблемами при работе с файлами содержащими специальные символы, то указывайте полный путь к каталогу с файлом, а не только его имя!