Какую команду мне нужно использовать для удаления файла с именем `-rf`?

В какой-то момент я сделал что-то сумасшедшее, создав файл -rf в моей файловой системе.
Теперь я не могу понять, как его удалить …

Я пробовал:

 rm "-rf" rm \-rf 

Они сразу же выходят, приятель!

Кто-нибудь знает, как удалить этот файл? Желательно, не удаляя всю мою папку.

 unlink -rf 

Или

 rm -- -rf 

Другой вариант:

 rm ./-rf 

… при условии, что ваш текущий каталог является тем, где находится файл.

В качестве альтернативы вы всегда можете отредактировать каталог и вставить его таким образом.

 vim . 

А затем просто удалите строку с файлом на ней (используя D, dd не будет работать).

Следует использовать общий метод удаления странных имен файлов.

  ls -li 

Найти номер inode файла, а затем использовать.

 find ./ -inum <number of file> -delete 

Не нужно помнить все особые случаи.

Хотя я знаю об трюке «rm -filename», обычно, когда я как-то получаю файл с ведущим – в его имени, который я хочу удалить, я запускаю диспетчер файлов GUI и делаю это оттуда, чтобы исключить возможность Ошибок.

Если вы просто хотите быть уверенным:

  mv -- -rf remove.-rf [[check]] rm remove.-rf 

На всякий случай, если вы находитесь на каком-то не-GNU Unix, где вы чувствуете, что вы вернулись к каменному возрасту (no-syntax, no -inum switch to find, no unlink command, ваш редактор отказывается редактировать каталоги и т. Д.), Вы можете По-прежнему помогите себе:

 find . -name '-rf' -print | xargs rm -i 

Это вызовет поиск всех потенциальных кандидатов в rm, которые, в свою очередь, будут запрашивать разрешение / отказ для каждого файла, который он подает.

Если ваш 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 

Чтобы вы не использовали какие-либо псевдонимы.

  • Создание имени строковой переменной из значения другой строки
  • Как Unix ищет исполняемые файлы?
  • Мониторинг среднего использования ЦП и использования ОЗУ на одном потоке процессов
  • Почему Windows использует обратную косую черту для путей и косые черты Unix?
  • Легкий способ индексирования STDOUT (форматировать текст в столбцах)?
  • Чем отличается Ctrl + Z и Ctrl + C в командной строке Unix?
  • Использование терминала Linux / Unix для копирования многих файлов в новое место
  • Как закрыть все фоновые процессы в unix?
  • Сохраняют ли символьные файлы ссылок SVN?
  • Что является официальным установщиком для пакетов Unix в Mac OS?
  • Выбор между .bashrc, .profile, .bash_profile и т. Д.
  • Давайте будем гением компьютера.