Фатмавати Ахмад Заенури/Shutterstock.com
Команды 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
(force) противоположна интерактивной. Он не запрашивает подтверждение, даже если файлы защищены от записи.
rm -f filename
Как удалить каталоги с помощью rm
Чтобы удалить пустой каталог, используйте параметр -d
(каталог). Вы можете использовать подстановочные знаки ( *
и ?
) в именах каталогов так же, как в именах файлов.
каталог rm -d
Предоставление более одного имени каталога удаляет все указанные пустые каталоги.
rm -d directory1 directory2/path/to/directory3
Чтобы удалить не пустые каталоги, используйте параметр -r
(рекурсивный). Чтобы было ясно, это удаляет каталоги и все файлы и подкаталоги, содержащиеся в них.
rm -r directory1 directory2 directory3
Если каталог или файл защищен от записи, вам будет предложено подтвердить удаление. Чтобы удалить непустые каталоги и подавить эти приглашения, используйте вместе параметры -r
(рекурсивный) и -f
(force).
каталог 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 directory1 directory2 directory3
Удалите каталог не в текущем каталоге, указав полный путь к этому каталогу:
rmdir/path/to/directory
Если вы попытаетесь удалить не пустую папку, rmdir
выдаст вам сообщение об ошибке. В следующем примере rmdir
успешно и без вывода сообщений удаляет каталог clients
, но отказывается удалять каталог projects
, поскольку он содержит файлы. Каталог projects
остается точно таким же, каким он был, а файлы в нем нетронутыми.
Когда rmdir
выдает ошибку «Directory not empty», он прекращает обработку каталогов, переданных ему в командной строке. Если вы попросили удалить четыре каталога, а в первом содержались файлы, rmdir
выдаст вам сообщение об ошибке и больше ничего не сделает. Вы можете принудительно игнорировать эти ошибки с помощью параметра - ignore-fail-on-non-empty
, чтобы обрабатывать другие каталоги.
В следующем примере две папки были переданы в rmdir
, это work/reports
и work/quotes
. Параметр - ignore-fail-on-not-empty
был включен в команду. В папке work/reports
есть файлы, поэтому rmdir
не может удалить его. Опция - ignore-fail-on-not empty
заставляет rmdir
игнорировать ошибку и переходить к следующей папке, которая должна быть обработана, то есть работа/котировки
. Это пустая папка, и rmdir
удаляет ее.
Эта команда использовалась.
rmdir --ignore-fail-on-непустая работа/отчеты/работа/цитаты
Вы можете использовать опцию -p
(parent), чтобы удалить каталог, а также удалить его родительские каталоги. Этот прием работает потому, что rmdir
начинается с целевого каталога, а затем возвращается к родительскому элементу. Теперь этот каталог должен быть пустым, поэтому его можно удалить с помощью rmdir
, и процесс повторяет шаг назад по пути, указанному для rmdir
.
В следующем примере команда, которая передается в rmdir
:
rmdir -p work/invoices
Директории invoices
и work
удаляются по запросу.
Используете ли вы Bash или любую другую оболочку, Linux предоставляет гибкие и мощные команды для удаления каталогов и файлов прямо из командной строки терминала. Некоторые люди предпочитают иметь рабочий процесс, который вращается вокруг терминала. У других может не быть выбора в этом вопросе. Они могут работать на серверах без установленного графического интерфейса или в удаленном сеансе на автономной системе, такой как Raspberry Pi. Эти команды идеально подходят для этой группы людей.
Но какой бы тип рабочего процесса вы ни предпочли, эти команды очень хорошо подходят для включения в сценарии оболочки. Если сценарий запускается заданием cron
, это может помочь автоматизировать рутинные служебные задачи, такие как очистка нежелательных файлов журнала. Если вы исследуете этот вариант использования, помните о силе этих команд, тщательно проверяйте все и всегда сохраняйте последнюю резервную копию.