Что делает комнату-rf, делают?

Что делает rm -rf при использовании для удаления файлов или каталогов?

Как делают -r и -f опции сотрудничают?

25
задан 5 September 2015 в 11:21

4 ответа

Команда rm -rf совпадает с rm -r -f.

От rm страница справочника (тип man rm в терминале для наблюдения его) -r делает:

remove directories and their contents recursively

И -f делает:

ignore nonexistent files and arguments, never prompt

Так в комбинации они делают обоих.

На самом деле это - очень опасная команда, потому что это рекурсивно удалит все в рамках каталога, который Вы выбираете (или просто удалите файл, который Вы выбираете), и это сделает так, никогда не предлагая Вам.

используйте эту команду с осторожностью!

52
ответ дан 23 November 2019 в 01:10

В дополнение к предыдущему корректному ответу я хотел бы учить Вас, как ловить рыбу:

, Когда Вы не уверены в том, как команда работает, что имеют опции и что она делает, откройте терминал и тип

man <command>

, Например:

man rm

Однажды там, можно искать опцию. Страница справочника может быть действительно длинной для чтения, таким образом, в терминальном типе:

/<pattern>

Так, например, делая:

/-f

можно легко приземлиться к:

-f, --force
              ignore nonexistent files and arguments, never prompt

Для-r сделайте:

-r, -R, --recursive
              remove directories and their contents recursively

можно переместиться между результатами поиска с помощью n (следующий) и N (предыдущий).

Премия:

, Если необходимо сделать что-то, но Вы не знаете, что название команды, использование apropos ищет в страницах справочника:

apropos <pattern>

, Например:

apropos directory listing
22
ответ дан 23 November 2019 в 01:10

rm коротко для, удаляют. Эти r флаг должен удалить каталоги и их содержание рекурсивно и f сила средств, и это переопределяет любые подсказки подтверждения.

8
ответ дан 23 November 2019 в 01:10

Как был уже упомянут, rm -rf <ARG> предназначен для мощного удаления файлов рекурсивно, где <ARG> каталог (хотя это может быть файл очень хорошо).

Смысл -r (рекурсивное удаление), это rm не может удалить каталоги, если они не пусты, просто потому что базовый системный вызов который rm использование (удаляет связь), воздействует только на пустые каталоги. Таким образом, что -r флаг делает, поиск в глубину, убывающий в каталоги и удаляющий файлы сначала, и только затем, когда каталог будет пуст - он удалит его. Этот тот же эффект достигается через find команда с -delete флаг (когда Вы не указываете фильтрацию по -type, но это - другая история).

Что касается -f, это делает две вещи - каждый предотвращает запрос того, хотите ли Вы удалить файл или не (такой как тогда, когда Вы удаляете файл, принадлежавший другому пользователю из Вашего каталога, это не покажет rm: remove write-protected regular empty file 'f1'? подсказка подтверждения), и игнорирует несуществующие файлы. Так, например, с несуществующим именем файла, необходимо добраться rm: cannot remove 'nonexistent': No such file or directory ошибка.

См. также:

2
ответ дан 23 November 2019 в 01:10

Другие вопросы по тегам:

Похожие вопросы: