Возможные дубликаты:
Как удалить файл с именем «-p» из bash?
Как удалить файл с таким именем в Linux: -]???????q
Какую команду мне нужно использовать, чтобы удалить файл с именем `-rf`?
Я случайно создал файл с именем: -d
Я пробовал использовать одинарные и двойные кавычки, а также подстановочные знаки, чтобы удалить его, но каждый раз, когда «rm» выдает мне эту ошибку:
Предупреждение: опция --directory (-d) недокументирована и не является операцией. Используйте -rf для удаления непустых каталогов rm: отсутствует операнд Попробуйте `rm --help' для получения дополнительной информации.
Как избавиться от файла?
решение1
rm -- -d
--
означает "конец опций". Все, что находится дальше в командной строке после этого, интерпретируется как аргумент (т.е. имя файла в вашем случае), а не опция.
решение2
rm ./-d
вот ответ на ваш вопрос.
решение3
Использование '--' в данном конкретном случае является самым простым. Однако более общее решение, если вы наткнулись на файл с непечатаемыми управляющими символами, — это сослаться на файл по inode:
% ls -ali aFileWithFunnyCharacters
9215 -rw-r----- 1 chris chris 0 Sep 8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory
решение4
Gnu-find имеет опцию -delete:
find -name "-d" -delete
иначе вы могли бы попробовать
find -name "-d" -exec rm {} ";"
но -- -решение, приведенное выше, короче, а способ остановки интерпретации флагов с помощью -- используется многими программами, использующими библиотеку getopt, так что его изучение в целом полезно.
Но find/-delete тоже очень полезно изучить. Обратите внимание, что оба примера рекурсивно удалят файлы с именем "-d", что может происходить нечасто, но если у вас есть один файл с именем "-d", у вас может быть их больше. :)