Команда rm удаляет записи файловой системы. Обычно удаление из командной строки не перемещает объекты в корзину, а у rm нет встроенной отмены, поэтому проверяйте каждую цель до запуска.
Командная строка · Урок 13
rm (Удаление)
Научитесь удалять файлы и каталоги, проверяя цели и выбирая более безопасные параметры rm.
Базовый синтаксис:
rm [OPTIONS] FILE...
Удаление файлов
Передайте rm один или несколько путей:
$ rm file1
$ rm notes.txt old-report.txt draft.md
До Enter проверьте написание и расположение. Резервная копия или система контроля версий надёжнее попыток восстановления после удаления.
Какая команда после проверки цели удаляет old-report.txt?
Предварительный просмотр шаблона
Оболочка может раскрыть шаблон в несколько аргументов. Например, *.tmp выбирает совпавшие нескрытые имена текущего каталога:
$ rm *.tmp
Перед удалением просмотрите тот же шаблон без кавычек через ls:
$ ls *.tmp
cache.tmp test.tmp
$ rm *.tmp
Оболочка раскрывает шаблон до запуска rm. При неожиданном совпадении исправьте шаблон и не продолжайте.
Какая команда без удаления показывает нескрытые пути, выбранные шаблоном *.tmp?
Запрос подтверждения
Параметр -i спрашивает перед каждым удалением:
$ rm -i important.txt
rm: remove regular file 'important.txt'? y
GNU rm -I запрашивает один раз, если удаляется больше трёх файлов или операция рекурсивна.
Какая команда спрашивает подтверждение перед удалением каждого файла?
Игнорирование отсутствующих файлов через -f
Параметр -f игнорирует отсутствующие аргументы и подавляет вопросы:
$ rm -f old-cache.txt
Это делает очистку в сценариях идемпотентной, если созданный файл уже может отсутствовать. Но не добавляйте -f лишь для подавления непонятной ошибки.
Удаление каталогов
Обычная rm каталог не удаляет:
$ rm projects
rm: cannot remove 'projects': Is a directory
Используйте -r или -R только для намеренного удаления всего дерева:
$ rm -r old-project
Для пустого каталога есть более узкая команда rmdir:
$ rmdir empty-directory
Она завершается ошибкой для непустого каталога, защищая содержимое от рекурсивного удаления.
Какая команда удаляет old-cache/ только при его пустоте?
Проверка рекурсивного удаления
Рекурсия может стереть целое дерево, а сочетание -r с -f в rm -rf убирает вопросы. Перед ней проверьте:
- Текущий ли это каталог? Выполните
pwd. - Показывает ли
ls -ld -- TARGETнужный верхний путь? - Если есть шаблон, совпал ли просмотр без изменений с ожиданием?
- Абсолютный путь или относительный?
/tmp/cacheиtmp/cacheразличаются. - Нет ли случайного пробела?
rm -rf old-projectиrm -rf old projectимеют разные цели.
Перед целью, начинающейся с дефиса, используйте --, чтобы она не стала параметром:
$ rm -- -old-name
Не используйте sudo просто из-за ошибки разрешений. Сначала проверьте цель и причину запрета изменения содержащего каталога. Рекурсивное удаление с повышенными правами может повредить ОС или чужие данные.
Параметр -v сообщает об успешных удалениях:
$ rm -rv old-project
removed 'old-project/notes.txt'
removed directory 'old-project'
Какая команда после полной проверки удаляет old-project/ со всем содержимым, сохраняя обычные запросы?
Для безопасной практики:
- Команда Linux rm: удаление файлов — изучите
-r,-iи безопасное удаление. - Организация файлов и каталогов — очистите ненужные каталоги в учебном проекте.
Урок завершён
Вы завершили rm (Удаление)
Теперь вы умеете удалять записи файловой системы, считая каждую цель необратимой.
Проверять пути файлов до удаления.
Просматривать раскрытие шаблона командой только для чтения.
Запрашивать подтверждение через
-iили-I.Предпочитать
rmdir, когда каталог обязан быть пустым.Полностью проверять цель перед рекурсивным удалением.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт