Я сделал что-то сумасшедшее в какой-то момент, которое создало названный файл -rf
в моей файловой системе.
Теперь я не могу выяснить, как удалить его...
Я попробовал:
rm "-rf"
rm \-rf
Они просто сразу выходят, arrgh!
Кто-либо знает, как удалить этот файл? Предпочтительно, случайно не вычищая мою целую папку.
Другая опция:
rm ./-rf
... принятие Вашего текущего каталога является тем, где файл находится.
На всякий случай Вы находитесь на некотором Unix не-GNU, где Вы чувствуете себя, дергал назад к каменному веку (нет --
синтаксис, нет -inum
переключитесь, чтобы найти, нет удалить связь с командой, Ваш редактор отказывается от каталогов редактирования и т.д. и т.д.), можно все еще помочь себе:
find . -name '-rf' -print | xargs rm -i
Это вызовет, находят для питания всех потенциальных кандидатов к комнате, которая в свою очередь попросит разрешение/отказ для каждого файла, это питается.
В случае, если Ваш rm
даже не поддерживает -i
переключатель (HP-UX 10.2 на PA-RISC 1.1 кто-либо?), просто быть более осторожным:
find . -name '-rf' -print
# check that find's output is exactly and only what you need to delete
find . -name '-rf' -print | xargs rm
Поддерживая ответ jleedev, я улучшился бы с:
rm -i -- -rf
быть в интерактивном режиме и попросить подтверждение, таким образом, можно действительно быть уверены в том, что Вы удаляете. (хотя решение прекрасно. это просто для Вашего душевного спокойствия),
На самом деле даже используйте это:
\rm -i -- -rf
быть уверенным, что Вы не используете псевдонимов.
Поскольку было уже предложено, чтобы я всегда использовал синтаксис
rm -rf -- filename
когда я должен был удалить файл с тире как префикс, потому что - говорит команде, что это не ищет никакой другой параметр, но просто имена файлов.
Имение в виду его, для защиты моей важной папки случайным удалением файла, я использовался для создания пустого файла, названного просто-i, который обычно помещается наверху списка файлов при разрешении * поиск. Так команда
rm -rf *
когда excuted на моей защищенной папке взорван, dureing выполнение, в команде:
rm -rf -i filename1 filename2 .... (all the other files in the folder)
и оболочка, вместо того, чтобы сразу удалить все, прекращает просить подтверждение (поскольку-i опция требует).
martin clayton является правильным.
Это очень просто и логично. Если опции существуют, это всегда -XXX
или --CCCC
таким образом, если Вы помещаете a ./
или полный путь -rf
не может быть рассмотрен как опцию и будет рассмотрен как нормальную строку.
Это работает со "всеми" странными именами файлов.
#pwd /tmp/TEST #touch ./-rf #ls -rf #rm ./-rf #ls #