На этот вопрос уже есть ответ здесь:
Я случайно создал файл с именем -r
в моем домашнем каталоге. Теперь я не могу от него избавиться:
rm -rf
rm: missing operand
Try 'rm --help' for more information.
Другие попытки:
rm /-/r
rm: cannot remove ‘/-/r’: No such file or directory
Еще одна:
rm \-r
rm: missing operand
Try 'rm --help' for more information.
Есть ли способ удалить этот файл без удаления всего каталога?
В этом случае необходимо использовать двойного тире (--
) в аргументах команды.
цель его состоит в том, чтобы сказать команде, которые, что, следуют, не должен быть взят в качестве аргумента команде, но простому входу. В случае комната , имя файла или каталога.
, Таким образом, тип rm -- -r
и Вы должны избавиться от этого файла.
Существует много способов сделать это:
Используйте --
который показывает конец флагов опции и начало списка аргументов в пользу многих программ (включая rm
).
rm -- -r
Используйте полный путь
rm /home/you/directory/-r
или, из того же каталога (Ваш текущий каталог упоминается как .
):
rm ./-r
Использовать find
find . -name "-r" -exec rm {} \;
или, для получения всех таких файлов
find . -name "-*" -exec rm {} \;
Используйте ужасный взлом. Переместите все в различный каталог (это перестанет работать для -r
файл по той же причине как rm
делает), и затем удалите исходный каталог (который удалит файл), и положите обратно все снова. Так, принятие Ваш -r
файл находится в ~/foo
:
$ mkdir ~/bar
$ for f in *; do mv "$f" ../bar/; done
mv: invalid option -- 'r'
Try 'mv --help' for more information.
$ rm -rf ~/foo
$ mkdir ~/foo && cd ~/foo
$ mv ~/bar/* .
$ rmdir ~/bar
Можно также удалить такие файлы (запускающийся с '-') с этой командой:
rm ./-r
См. страницу справочника комнаты:
Для удаления файла, имя которого запускается с '-', например, '-нечто', используют одна из этих команд:
rm -- -foo rm ./-foo
Или Вы могли указать полный путь каталога в эти rm
команда,
Пример:
rm -rf ~/Desktop/-r