Різниця між rmdir і rm -r


9

Зазвичай я видаляю каталоги за допомогою rm :

rm -r myDir

Однак мені відомо інша команда, rmdir , яка, здається, виконує цю роботу так само добре:

rmdir myDir

Яка різниця між цими двома командами і коли їх слід використовувати?


2
Чи працює ваш rmdir, якщо в підкаталозі є файли?
Jeff Schaller

1
Дивіться також однойменний системний виклик, rmdir(2)який може видаляти лише порожні каталоги.
Девід Фоерстер

4
До речі, існує "правильна" процедура використання rm -r: (1) Введіть команду, але не вводьте її (2) Відведіть руки від клавіатури (3) Порахуйте до п'яти (4) Натисніть ENTER. Я почав робити щось подібне з усіма небезпечними командами, щоб дати мені можливість подивитися на те, що я роблю, переконайтесь, що я правильно набрав речі, подумайте, чи можуть бути несподівані наслідки тощо. Іноді це призводить до мене щоб стерти мою команду і, наприклад, спершу зробити додаткові перевірки.
айб

3
@ajb rm -rf ~ /*- очистити мій домашній каталог. Або зачекайте, можливо, очистіть систему. Завжди добре подвійно перевірити;).
Том Карпентер

1
@ajb Зверніть увагу , що rmdirі rm -rдва рядки однакової довжини :-)
Kusalananda

Відповіді:


14

rm -rвидаляє каталог та весь його вміст; rmdirвидалить каталог лише в тому випадку, якщо каталог порожній. Мені подобається використовувати наступне для видалення каталогу та всього його вмісту:

rm -rf <directory_to_be_removed>

17
Зауважте, що зазвичай не слід використовувати, -fякщо цього не потрібно. Його зручно використовувати -rfщоразу, але він вимикає (майже) всі перевірки безпеки.
алло

5
-1 за необережну рекомендацію -fпрапора РМ, яка може мати непередбачувані, незворотні наслідки
кіт

Так rmdirсправедливо rm -d?
Стен Струм

@StanStrum -d- не стандартний варіант для rm.
Kusalananda

@cat rmКоманда в цілому може мати ці наслідки. -fПрапор корисний при роботі в set -eв сценарії. Я погоджуюся, що використання без роздумів зайве .
Кусалаланда

1

Ви повинні використовувати, rm -rколи хочете рекурсивно видалити каталог і весь його вміст, або коли цільовим може бути каталог або файл, і ви хочете видалити його незалежно від того, що це.

Ви повинні використовувати, rmdirякщо хочете видалити порожній каталог.

rmdirКоманда корисна , оскільки вона відмовляється видаляти непусті каталоги і файли. Це служить для запобігання безпеці в ситуаціях, коли ви можете бути абсолютно впевненими, що те, що ви видаляєте, це каталог і що каталог порожній перед видаленням (наприклад, у сценарії), і хочете трактувати його як стан помилки інакше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.