Урок 5. Команда rm - удаление файлов и каталогов

Рассмотрим теперь как удалять файлы и каталоги (папки). В данном процессе присутствуют некоторые ньюансы, однако мы разберем их подробно в данном уроке. 

rm файл - команда удаляет файл, но не каталог. Рассмотрим некоторые опции, используемые с командой.

rm -f файл либо rm --force файл - принудительное удаление файла. Это необходимо тогда, когда у пользователя нет права работать с файлами каталога, в котором находится файл.

rm -i файл либо rm --interactive файл - при удалении файла система спросит, действительно ли вы хотите удалить файл. При этом достаточно ввести y(yes) либо n(no):

Интерактивное удаление файла
Рис. 1. Интерактивное удаление файла

Кстати, имеейте ввиду, что файл считается удаленным только  тогда, когда удалены все его жесткие ссылки. Подробнее о жестких ссылках поговорим немного позже. 

А как узнать их количество?

С помощью команды ls -l :

Отображение количества жестких ссылок
Рис. 2. Отображение количества жестких ссылок

rm -r каталог - рекурсивное удаление всех каталогов и файлов.

Что такое рекурсивное удаление?

Представим, что  есть каталог. А в нем еще подкаталоги и файлы, а в тех подкаталогах другие подкаталоги. Чтобы удалить сразу все файлы и подкаталоги одним разом, то достаточно  при удалении указать корневой родительский каталог и система, начиная с самого низа удалит и файлы и подкаталоги. Данный процесс и называется рекурсивным.

Например, у нас имеется недавно созданный родительский каталог catalogue_A, а в нем подкаталоги и файлы:

Отображение файлов и подкаталогов
Рис. 3. Отображение файлов и подкаталогов

Теперь удалим каталог catalogue_A вместе с содержимым и сразу проверим:

rm -r catalogue_A/

Удаление папки со всеми подпапками
Рис. 4. Удаление папки со всеми подпапками

А можно ввести просто rm catalogue_A/ ?

Нет, система выдаст ошибку, так как команда rm используется в основном для удаления файлов. Для удаления отдельных каталогов есть следующая команда:

rmdir каталог - удаление пустых каталогов.

А если каталог не пустой?

Если каталог не пустой, то система выдаст ошибку:

Ошибка при удалении непустого каталога
Рис. 5. Ошибка при удалении непустого каталога

В данном случае поможет команда rmdir --ignore-fail-on-non-empty каталог.

rmdir -p каталог/подкаталог_1/подкаталог_2 - удаление родительского и всех вложенных в него каталогов. Данная команда работает, когда все каталоги и подкаталоги не содержат других файлов, кроме самих каталогов и подкаталогов.

Например, попробуем удалить каталог testA со всеми подкаталогами:

Отображение содержимого каталога
Рис. 6. Отображение содержимого каталога

Теперь удалим их все:

Удаление каталога с вложенныеми каталогами
Рис. 7. Удаление каталога с вложенныеми каталогами

Для большей информативности можно использовать опцию -v (--verbose):

Информативное удаление файлов и каталогов
Рис. 8. Информативное удаление файлов и каталогов