@DanDascalescu Поскольку на него тривиально отвечают, прочитав man-страницу, которая должна стать первым портом захода любого пользователя для ответа на такой вопрос.
Дэвид Ричерби
9
Попробуйте и посмотрите. (Спойлер: нет.)
imallett
3
Ей-богу ! Этот вопрос должен быть шуткой от DevRobot! Как вы могли бы достичь уровня своей кармы, даже не обращаясь к страницам руководства? Теперь ... ты человек ?!
Cbhihe
2
Полностью читается как шутка. Как будто кто-то пытался спросить, "дождь сделан из H2O?" (Хороший ответ был бы: обычно да, но в будущем, когда человек уничтожит половину флоры Земли, 50% из нее превратится в кислоту (как в кислотных дождях))
синтаксическая ошибка
Ответы:
52
Команда rm -rfтакая же как rm -r -f.
С rmman-страницы (введите man rmв терминале, чтобы увидеть это) -r:
remove directories and their contents recursively
И -fделает:
ignore nonexistent files and arguments, never prompt
Таким образом, в сочетании они делают оба.
На самом деле это очень опасная команда, потому что она рекурсивно удаляет все, что находится в выбранном вами каталоге (или просто удаляет выбранный вами файл), и делает это, даже не спрашивая вас.
Пожалуйста, используйте эту команду с осторожностью!
@ Пол, что бы сделал слеш? Я использую эту команду, чтобы удалить dirs часто и без косой черты.
Осьминог
1
@Octopus, косая черта сама по себе указывает на корневой каталог. rm -rf /теоретически удалит каждый файл на вашем компьютере, который находится в каталоге, для которого у вас есть разрешение на запись. Если вы root, это значит уничтожить всю систему. (На практике это не работает, потому что в GNU rmесть особый случай, в котором отказывается разрешить, rm -r /если вы тоже не скажете --no-preserve-root.)
cjm
10
Тем не менее, я не рекомендую пытаться rm -rf /проверить, правильно ли он пойман.
CJM
2
@mattburnett В ВМ это тоже опасно: у вас могут быть монтировки, которые не являются локальными для ВМ. В частности, я считаю, что довольно часто монтировать один из каталогов хост-машины на виртуальной машине для обмена файлами между хостом и виртуальной машиной.
HVD
1
@mattburnett У меня есть виртуальные машины. У меня нет карантина виртуальной машины. Я просто не запускаю неизвестные исполняемые файлы. :)
HVd
22
В дополнение к предыдущему правильному ответу я хотел бы научить вас ловить рыбу:
Если вы не уверены, как работает команда, какие параметры есть и что она делает, откройте терминал и введите
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для поиска на страницах руководства :
rmявляется коротким для удаления. Этот rфлаг предназначен для рекурсивного удаления каталогов и их содержимого, а также для fпринудительного применения, и он отменяет любые запросы на подтверждение.
Строго говоря, r flag is to remove directories это неправильно. Он удаляет каталоги вместе с их содержимым, это рекурсивная операция. По вашим словам, он будет удалять только каталоги, как насчет подкаталогов, файлов под ним? поскольку запись в каталоге содержит только сопоставление имени и индекса, это только не имеет никакого смысла ..
Heemayl
Вы правы, я отредактирую свой ответ.
Крис
1
-r рекурсивно удаляет каталоги и их содержимое .
Джим Балтер
3
Как уже упоминалось, 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ошибку.
Ответы:
Команда
rm -rf
такая же какrm -r -f
.С
rm
man-страницы (введитеman rm
в терминале, чтобы увидеть это)-r
:И
-f
делает:Таким образом, в сочетании они делают оба.
На самом деле это очень опасная команда, потому что она рекурсивно удаляет все, что находится в выбранном вами каталоге (или просто удаляет выбранный вами файл), и делает это, даже не спрашивая вас.
Пожалуйста, используйте эту команду с осторожностью!
источник
rm -rf /
теоретически удалит каждый файл на вашем компьютере, который находится в каталоге, для которого у вас есть разрешение на запись. Если вы root, это значит уничтожить всю систему. (На практике это не работает, потому что в GNUrm
есть особый случай, в котором отказывается разрешить,rm -r /
если вы тоже не скажете--no-preserve-root
.)rm -rf /
проверить, правильно ли он пойман.В дополнение к предыдущему правильному ответу я хотел бы научить вас ловить рыбу:
Если вы не уверены, как работает команда, какие параметры есть и что она делает, откройте терминал и введите
Например:
Оказавшись там, вы можете искать вариант. Страница man может быть очень длинной для чтения, поэтому в терминале введите:
Так, например, делать:
Вы можете легко приземлиться на:
Для -r сделать:
Вы можете перемещаться между результатами поиска, используя
Бонус:n
(следующий) иN
(предыдущий).Если вам нужно что-то сделать, но вы не знаете имя команды, используйте
apropos
для поиска на страницах руководства :Например:
источник
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
ошибку.Смотрите также:
источник