9.13. Удаление файлов и каталогов
Проблема
Ваша система переполнена файлами и каталогами. Как удалить те из них, которые вам больше не нужны?
Решение
Используйте команду rm (ReMove) — но будьте внимательны! Команда rm удаляет файлы и каталоги без предупреждения.
Удаление одного файла с расширенным выводом:
$ rm -v game-stats.txt
removed 'game-stats.txt'
Удаление с запросом подтверждения:
$ rm -vi dpkglist
rm: remove regular file 'dpkglist'? y
removed 'dpkglist'
Ключ -r (Recursive) обеспечивает удаление каталога со всеми файлами и подкаталогами:
$ rm -rvi /home/games/stats/baseball
Команда удаляет каталог /baseball вместе со всем содержимым.
Для удаления групп файлов можно использовать метасимволы командного процессора:
$ rm -v *.txt
removed 'file4.txt'
removed 'file5.txt'
removed 'file6.txt'
removed 'file7.txt'
Или:
$ rm -v file*
ВНИМАНИЕ: Ключ -f (Force) обеспечивает принудительное выполнение команды. Это очень опасно! Команда ничего не сообщает пользователю, а просто удаляет всё на своём пути.
Комментарий
Команда rm -rf / стирает всю корневую файловую систему. Некоторые личности предлагают новичкам выполнить её, считая это забавной шуткой.
Хотя обычно говорят «rm удаляет файлы», в действительности команда только отсоединяет файлы от i-узлов. Файл по-настоящему удаляется только после удаления всех жёстких ссылок, указывающих на него, и перезаписи данных на диске. Рядовые пользователи могут удалять командой rm любые файлы в доступных для них подкаталогах, но с каталогами ситуация сложнее: rm удаляет только каталоги, принадлежащие данному пользователю.
Команда touch на самом деле предназначена для изменения временных меток файла. Её применение для создания новых файлов может рассматриваться как неожиданный побочный эффект.
Для удаления каталогов существует команда rmdir. Она отказывается удалять каталоги, содержащие данные. На первых порах это помогает, но со временем начинает раздражать, так как многие программы создают файлы, не отображаемые в нормальных списках (имена файлов, начинающиеся с точки, обычно игнорируются). Чтобы включить их в вывод, используйте команду:
$ ls -a
Соответственно, при попытке выполнения rmdir команда скажет, что в каталоге ещё остались файлы. Вероятно, со временем вы перейдёте на команду rm -r, которая более гибка и удобна в использовании для удаления каталогов с их содержимым.
См. также
touch(1), rm(1).