Як видалити файли та каталоги в терміналі Linux

Команди rm і rmdir видаляють файли та каталоги в Linux, macOS та інших Unix-подібних операційних системах. Вони схожі на команди del і deltree в Windows і DOS. Ці команди дуже потужні і мають досить багато варіантів.

Важливо зазначити, що файли та каталоги, видалені за допомогою rm і rmdir, не переміщуються в кошик. Вони негайно видаляються з комп’ютера. Якщо ви випадково видалите файли за допомогою цих команд, єдиний спосіб відновити їх – це створити резервну копію.

Як видалити файли за допомогою rm

Найпростіший випадок – це видалення одного файлу в поточному каталозі. Введіть команду rm, пробіл, а потім назву файлу, який потрібно видалити.

rm file_1.txt

Якщо файлу немає в поточному робочому каталозі, укажіть шлях до розташування файлу.

rm ./path/to/the/file/file_1.txt

Ви можете передати більше одного імені файлу в rm. При цьому видаляються всі вказані файли.

rm file_2.txt file_3.txt

Підстановки можна використовувати для вибору груп файлів, які потрібно видалити. * позначає кілька символів, а ? представляє один символ. Ця команда видалить усі файли зображень PNG у поточному робочому каталозі.

rm *.png

Ця команда видалить усі файли, які мають одне символьне розширення. Наприклад, це призведе до видалення File.1 і File.2, але не File.12.

rm *.?

Якщо файл захищений від запису, вам буде запропоновано перед видаленням файлу. Ви повинні відповісти y або n і натиснути «Enter».

Щоб зменшити ризик використання rm із підстановочними знаками, використовуйте параметр -i (інтерактивний). Для цього потрібно підтвердити видалення кожного файлу.

rm -i *.dat

Параметр -f (сила) є протилежністю інтерактивного. Він не запитує підтвердження, навіть якщо файли захищені від запису.

rm -f filename

Як видалити каталоги за допомогою rm

Щоб видалити порожній каталог, використовуйте параметр -d (каталог). Ви можете використовувати символи підстановки (* і ?) в іменах каталогів так само, як і в іменах файлів.

rm -d directory

Надання кількох імен каталогу видаляє всі вказані порожні каталоги.

rm -d directory1 directory2 /path/to/directory3

Щоб видалити каталоги, які не порожні, використовуйте параметр -r (рекурсивний). Щоб було зрозуміло, це видаляє каталоги та всі файли та підкаталоги, що містяться в них.

rm -r directory1 directory2 directory3

Якщо каталог або файл захищені від запису, вам буде запропоновано підтвердити видалення. Щоб видалити каталоги, які не є порожніми, і придушити ці підказки, використовуйте разом параметри -r (рекурсивний) і -f (примусово).

rm -rf directory

Тут потрібна обережність. Помилка з командою rm -rf може призвести до втрати даних або несправності системи. Це небезпечно, а обережність – найкраща політика. Щоб зрозуміти структуру каталогів і файли, які будуть видалені командою rm -rf, скористайтеся командою дерева.

  Як змусити Kanboard працювати на вашому сервері Linux

Використовуйте apt-get, щоб встановити цей пакунок у вашу систему, якщо ви використовуєте Ubuntu або інший дистрибутив на базі Debian. В інших дистрибутивах Linux замість цього використовуйте інструмент керування пакетами свого дистрибутива Linux.

sudo apt-get install tree

Запуск команди дерева створює просту для розуміння діаграму структури каталогів і файлів під каталогом, з якого вона запускається.

tree

Ви також можете вказати шлях до команди дерева, щоб вона запустила дерево з іншого каталогу у файловій системі.

tree path/to/directory

Команда rm також має параметри –one-file-system, –no-preserve-root, –preserve-root, але вони рекомендовані лише для досвідчених користувачів. Якщо щось не так, ви можете випадково видалити всі системні файли. Зверніться до команди сторінка посібника для отримання додаткової інформації.

  Як використовувати SUID, SGID і Sticky Bits в Linux

Як видалити каталоги за допомогою rmdir

Існує ще одна команда, яка називається rmdir, яку можна використовувати для видалення каталогів. Різниця між rm і rmdir полягає в тому, що rmdir може видаляти лише порожні каталоги. Він ніколи не видаляє файли.

Найпростіший випадок – це видалення одного порожнього каталогу. Як і у випадку з rm, ви можете передати декілька імен каталогів до rmdir або шлях до каталогу.

Видаліть один каталог у поточному каталозі, передавши його ім’я в rmdir :

rmdir directory

Видаліть кілька каталогів, передавши список імен до rmdir :

rmdir directory1 directory2 directory3

Видаліть каталог не в поточному каталозі, вказавши повний шлях до цього каталогу:

rmdir /path/to/directory

Якщо ви спробуєте видалити папку, яка не порожня, rmdir видасть вам повідомлення про помилку. У наступному прикладі rmdir успішно та безшумно видаляє каталог клієнтів, але відмовляється видаляти каталог проектів, оскільки він містить файли. Каталог проектів залишається таким, яким він був, і файли в ньому не торкаються.

Коли rmdir видає помилку «Каталог не порожній», він припиняє обробку каталогів, які були передані йому в командному рядку. Якщо ви попросили його видалити чотири каталоги і в першому були файли, rmdir видасть вам повідомлення про помилку і більше нічого не зробить. Ви можете змусити його ігнорувати ці помилки за допомогою параметра –ignore-fail-on-non-empty, щоб оброблялися інші каталоги.

  Як зберегти липкі нотатки в Linux за допомогою індикатора Stickynotes

У наступному прикладі до rmdir було передано дві папки, це work/reports і work/quotes . Параметр –ignore-fail-on-non-empty був включений до команди. У папці Work/Reports є файли, тому rmdir не може її видалити. Параметр –ignore-fail-on-non-empty змушує rmdir ігнорувати помилку та переходити до наступної папки, яку потрібно обробити, а саме work/quotes. Це порожня папка, і rmdir її видаляє.

Це була команда.

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

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

У наступному прикладі команда, яка передається до rmdir:

rmdir -p work/invoices

За запитом видаляються і рахунки-фактури, і робочі довідники.

Незалежно від того, чи використовуєте ви Bash або будь-яку іншу оболонку, Linux надає гнучкі та потужні команди для видалення каталогів і файлів прямо з командного рядка терміналу. Деякі люди вважають за краще мати робочий процес, який обертається навколо терміналу. Інші можуть не мати вибору в цьому питанні. Вони можуть працювати на серверах без встановленого графічного інтерфейсу або на віддаленому сеансі безголовної системи, наприклад Raspberry Pi. Ці команди ідеально підходять для цієї групи людей.

Але який би тип робочого процесу ви не віддали перевагу, ці команди дуже добре підходять для включення в сценарії оболонки. Якщо скрипт запускається завданням cron, він може допомогти автоматизувати рутинні домашні завдання, такі як очищення небажаних файлів журналів. Якщо ви досліджуєте цей варіант використання, пам’ятайте про силу цих команд, ретельно перевіряйте все та завжди створюйте останню резервну копію.