Що rm -rfробити, коли використовується для видалення файлів чи каталогів?
Як спільно працюють -rі -fваріанти?
Що rm -rfробити, коли використовується для видалення файлів чи каталогів?
Як спільно працюють -rі -fваріанти?
Відповіді:
Команда rm -rfтака ж, як і rm -r -f.
З rmсторінки man '(введіть 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для пошуку на сторінках man:
apropos <pattern>
Наприклад:
apropos directory listing
rmкороткий для видалення. rПрапор для видалення каталогів і їхнього вмісту рекурсивно і fсилу кошти, і він скасовує будь-які підказки підтвердження.
r flag is to remove directories це не так. Він видаляє каталоги разом із його вмістом, це рекурсивна операція. Відповідно до ваших слів, вона видалила б лише каталоги, що з підкаталогами, файлами під нею? оскільки запис у каталозі містить лише відображення імені-inode, це не має сенсу ..
Як уже згадувалося, 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помилитися.
Дивись також: