Избавление от файла с именем "-d"

Избавление от файла с именем "-d"

Возможные дубликаты:
Как удалить файл с именем «-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", у вас может быть их больше. :)

Связанный контент