
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 имя файла
Как удалить каталоги с помощью rm
Чтобы удалить пустой каталог, используйте параметр -d
(каталог). Вы можете использовать подстановочные знаки ( *
и ?
) в именах каталогов так же, как и в именах файлов.
rm -d каталог
Если указать более одного имени каталога, будут удалены все указанные пустые каталоги.
rm -d каталог1 каталог2 / путь / к / каталог3
Чтобы удалить непустые каталоги, используйте параметр -r
(рекурсивный). Чтобы было ясно, это удаляет каталоги и все файлы и подкаталоги, содержащиеся в них.
rm -r каталог1 каталог2 каталог3
Если каталог или файл защищены от записи, вам будет предложено подтвердить удаление. Чтобы удалить непустые каталоги и подавить эти запросы, используйте параметры -r
(рекурсивный) и -f
(принудительно) вместе.
rm -rf каталог
Здесь требуется осторожность. Ошибка с rm -rf
командой может привести к потере данных или сбоям в работе системы. Это опасно, а осторожность - лучшая политика. Чтобы понять структуру каталогов и файлы, которые будут удалены rm -rf
командой, используйте tree
команду.
Используйте apt-get
для установки этого пакета в вашу систему, если вы используете Ubuntu или другой дистрибутив на основе Debian. В других дистрибутивах Linux используйте вместо этого инструмент управления пакетами вашего дистрибутива Linux.
дерево установки sudo apt-get
Выполнение tree
команды создает простую для понимания диаграмму структуры каталогов и файлов в каталоге, из которого она запускается.
дерево
Вы также можете указать путь к tree
команде, чтобы она запускала дерево из другого каталога в файловой системе.
дерево путь / в / каталог
У rm
команды также есть --one-file-system, --no-preserve-root, --preserve-root
параметры, но они рекомендуются только для опытных пользователей. Если вы ошиблись, вы можете случайно удалить все системные файлы. Обратитесь к странице руководства по команде для получения дополнительной информации.
Как удалить каталоги с помощью rmdir
Есть еще одна команда, rmdir
которую вы можете использовать для удаления каталогов. Разница между rm
и rmdir
заключается в том, что rmdir
можно удалять только пустые каталоги. Он никогда не удалит файлы.
Самый простой случай - удалить один пустой каталог. Как и в случае rm
, вы можете передать несколько имен каталогов rmdir
или путь к каталогу.
Удалите один каталог в текущем каталоге, передав его имя в rmdir
:
каталог rmdir
Удалите несколько каталогов, передав список имен в rmdir
:
rmdir каталог1 каталог2 каталог3
Удалите каталог не в текущем каталоге, указав полный путь к этому каталогу:
rmdir / путь / к / каталогу
Если вы попытаетесь удалить непустую папку, rmdir
появится сообщение об ошибке. В следующем примере rmdir
успешно и незаметно удаляет clients
каталог, но он отказывается удалить projects
каталог, потому что он содержит файлы. projects
Каталог осталось точно так , как это было и файлы в нем не трогают.
Когда rmdir
выдает ошибку «Каталог не пуст», он прекращает обработку каталогов, которые были переданы ему в командной строке. Если вы попросите его удалить четыре каталога, а в первом из них есть файлы, rmdir
вы получите сообщение об ошибке и больше ничего не сделаете. Вы можете заставить его игнорировать эти ошибки с помощью --ignore-fail-on-non-empty
опции, чтобы другие каталоги обрабатывались.
В следующем примере были переданы две папки 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 работа / отчеты / работа / цитаты
Вы можете использовать -p
опцию (parent), чтобы удалить каталог, а также удалить его родительские каталоги. Этот трюк работает, потому что rmdir
начинается с целевого каталога, а затем возвращается к родительскому. Этот каталог теперь должен быть пустым, чтобы его можно было удалить rmdir
, и процесс повторяется, шагая назад по пути, который был предоставлен rmdir
.
В следующем примере передается следующая команда rmdir
:
rmdir -p работа / счета
И каталоги, invoices
и work
каталоги удаляются по запросу.
Независимо от того, используете ли вы Bash или любую другую оболочку, Linux предоставляет гибкие и мощные команды для удаления каталогов и файлов прямо из командной строки терминала. Некоторые люди предпочитают, чтобы рабочий процесс вращался вокруг терминала. У других может не быть выбора в этом вопросе. Они могут работать на серверах без установленного графического интерфейса или в удаленном сеансе на автономной системе, такой как Raspberry Pi. Эти команды идеально подходят для этой группы людей.
Но какой бы тип рабочего процесса вы ни предпочли, эти команды очень хорошо поддаются включению в сценарии оболочки. Если сценарий запускается cron
заданием, он может помочь автоматизировать рутинные служебные задачи, такие как очистка ненужных файлов журнала. Если вы исследуете этот вариант использования, помните о силе этих команд, тщательно все протестируйте и всегда поддерживайте последнюю резервную копию.