Что rm -rfделать, когда используется для удаления файлов или каталогов?
Как сделать -rи -fварианты работать вместе?
Что rm -rfделать, когда используется для удаления файлов или каталогов?
Как сделать -rи -fварианты работать вместе?
Ответы:
Команда rm -rfтакая же как rm -r -f.
С rmman-страницы (введите man rmв терминале, чтобы увидеть это) -r:
remove directories and their contents recursively
И -fделает:
ignore nonexistent files and arguments, never prompt
Таким образом, в сочетании они делают оба.
Пожалуйста, используйте эту команду с осторожностью!
rm -rf /теоретически удалит каждый файл на вашем компьютере, который находится в каталоге, для которого у вас есть разрешение на запись. Если вы root, это значит уничтожить всю систему. (На практике это не работает, потому что в GNU rmесть особый случай, в котором отказывается разрешить, rm -r /если вы тоже не скажете --no-preserve-root.)
rm -rf /проверить, правильно ли он пойман.
В дополнение к предыдущему правильному ответу я хотел бы научить вас ловить рыбу:
Если вы не уверены, как работает команда, какие параметры есть и что она делает, откройте терминал и введите
man <command>
Например:
man rm
Оказавшись там, вы можете искать вариант. Страница man может быть очень длинной для чтения, поэтому в терминале введите:
/<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
rmявляется коротким для удаления. Этот rфлаг предназначен для рекурсивного удаления каталогов и их содержимого, а также для fпринудительного применения, и он отменяет любые запросы на подтверждение.
r flag is to remove directories это неправильно. Он удаляет каталоги вместе с их содержимым, это рекурсивная операция. По вашим словам, он будет удалять только каталоги, как насчет подкаталогов, файлов под ним? поскольку запись в каталоге содержит только сопоставление имени и индекса, это только не имеет никакого смысла ..
Как уже упоминалось, rm -rf <ARG>предназначено для принудительного рекурсивного удаления файлов, где <ARG>находится каталог (хотя это может быть просто файл).
Весь смысл -r(рекурсивное удаление) состоит в том, что rmневозможно удалить каталоги, если они не пусты, просто потому, что основной системный вызов, который rmиспользует ( unlink ), работает только с пустыми каталогами. Таким образом, что -rделает флаг, так это поиск в глубину, спускающийся в каталоги и сначала удаляющий файлы, и только потом, когда каталог пуст - он удалит его. Этот же эффект достигается с помощью findкоманды с -deleteфлагом (когда вы не указываете фильтрацию -type, но это уже другая история).
Что касается -f, он делает две вещи - одна предотвращает запрос, хотите ли вы удалить файл или нет (например, когда вы удаляете файл, принадлежащий другому пользователю, из вашего каталога, он не будет отображать rm: remove write-protected regular empty file 'f1'?запрос подтверждения), и игнорирует несуществующие файлы. Так, например, с несуществующим именем файла вы должны получить rm: cannot remove 'nonexistent': No such file or directoryошибку.
Смотрите также: