Команда Linux rm: все, что вам нужно знать

Опубликовано: 2023-01-22
Ноутбук Linux с приглашением bash
Фатмавати Ачмад Заэнури/Shutterstock.com
Команда rm позволяет удалить файл или каталог, передав его имя: «rm имя файла» или «rm -d каталог». Вы также можете указать путь к каталогу. Если в каталоге есть файлы, используйте параметр -r «rm -r directory» для рекурсивного удаления файлов и папок.

Команда Linux rm удаляет файлы и каталоги. Чтобы безопасно использовать этот инструмент, вы должны быть уверены, что произойдет, когда вы нажмете «Ввод». Вот что вам нужно знать.

Оглавление

Что такое команда rm в Linux?
Как удалить файлы с помощью rm
Использование подстановочных знаков с rm
Интерактивное использование rm
Использование опции rm Force
Удаление каталогов с помощью rm
Как избежать ошибок при использовании rm
Какие СИЗ?

Что такое команда rm в Linux?

Команда Linux rm в первую очередь предназначена для удаления файлов. Это то, с чем сталкивается большинство людей вскоре после того, как они начинают использовать Linux. Просто в силу того, что вы новичок в Linux, вы, вероятно, будете делать ошибки. Вы создадите или скопируете файлы случайно, или с неправильным именем, или в неправильное место. Это все часть кривой обучения командной строке. Операции по исправлению таких ошибок включают rm .

8 опечаток, которых действительно нужно избегать в Linux
СВЯЗАННЫЕ 8 опечаток, которых действительно нужно избегать в Linux

Команда rm может удалять файлы, группы файлов, каталоги или целые деревья каталогов. Вот почему его нужно использовать с осторожностью. Использовать rm несложно, но штраф за неудачу высок.

Когда файл удаляется с помощью rm , он исчезает. Он не перемещается в корзину. Оно сразу стирается. Это не означает, что вам следует избегать использования rm . Но чтобы использовать его безопасно, вам нужно знать, что он может делать, и убедиться, что вы используете его правильно.

Некоторые инструменты более опасны, чем другие, и гораздо менее прощают ошибки. Вот почему никогда не было фильма под названием «Техасская резня гаечного ключа» . rm не гаечный ключ, это определенно бензопила.

Люди используют бензопилы весь день каждый день, и пока они используют ее ответственно и осознанно, все в порядке. То же самое и с rm . Когда вы вытаскиваете rm из своей сумки с инструментами, вам следует замедлиться и проверить, а затем еще раз проверить свою командную строку.

Команда rm является исполняемым файлом, а не частью оболочки. Итак, хотя мы используем здесь Bash, это стандартная Linux rm , а не специальная Bash rm .

СВЯЗАННЫЕ: Командные строки: почему люди все еще беспокоятся о них?

Как удалить файлы с помощью rm

Самый простой способ использовать rm — указать имя файла, который вы хотите удалить.

 рм config.gc 

Удаление одного файла путем передачи его имени файла в rm

Вы молча возвращаетесь в командную строку. rm придерживается классической закрытой позиции Linux: если он ни на что не жалуется, вы можете считать, что он сделал то, что вы просили. Предоставление такого имени файла заставляет rm искать файл в текущем рабочем каталоге.

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

 rm memlog.sh /home/dave/dev-archive/config.gc 

Удаление двух файлов путем передачи их имени файла и пути к каталогу в rm

Опять же, ничего не сообщается, если rm удается удалить указанные файлы.

СВЯЗАННЫЕ: 37 важных команд Linux, которые вы должны знать

Использование подстановочных знаков с rm

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

Звездочка « * » обозначает любую последовательность символов, в том числе ни одной. Знак вопроса « ? ” представляет любой одиночный символ.

Чтобы убедиться, что ваши подстановочные знаки будут соответствовать тому, что вы от них ожидаете, и ничего более, вы можете использовать их с ls, прежде чем использовать их с rm.

Чтобы удалить все файлы PNG в текущем каталоге, используйте «*.png». Это означает, что любая последовательность символов, за которой следует «.png», будет соответствовать. Когда файлы были удалены, мы можем использовать ls , чтобы убедиться, что они исчезли.

 лс *.png
 гм *.png
 лс *.png 

Использование подстановочного знака звездочки для удаления всех файлов с расширением PNG

На нашем тестовом компьютере у нас есть два файла в текущем каталоге с именами, начинающимися с «config».

Мы можем удалить оба из них, используя подстановочный знак звездочки. Он соответствует обоим файлам, потому что rm ищет файлы, имена которых начинаются с «config», за которым следует любая последовательность символов. В одном файле эта последовательность символов — «.sl3», расширение имени файла. Другое имя файла не содержит символов после «config», но поскольку звездочка соответствует любым символам или не соответствует символам , оно также соответствует этому имени файла.

 лс конфиг*
 рм конфиг*
 лс конфиг* 

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

Вы можете использовать вопросительный знак в парах. Это удалит файлы, которые имеют расширения файлов ровно из двух символов.

 лс *.??
 м*.??
 лс *.?? 

Использование двух подстановочных знаков вопроса для удаления файлов с расширениями, состоящими ровно из двух символов

СВЯЗАННЫЕ С: 15 специальных символов, которые вам нужно знать для Bash

Интерактивное использование rm

Безопасный способ использования rm — заставить его запрашивать подтверждение перед удалением каждого файла. Опция -i (интерактивная) позволяет это сделать. Когда вы добавите эту опцию в свою командную строку, rm будет запрашивать вас перед каждым удалением, давая вам возможность выполнить действия, которые вы не планировали.

В этой команде мы будем использовать параметр -i (интерактивный). Он пытается удалить все файлы с односимвольным расширением.

 гм -я *.? 

Использование rm в интерактивном режиме, чтобы он запрашивал перед каждым удалением

Каждый соответствующий файл представлен по очереди. Если вы ответите «y» или «y», файл будет удален. Если вы ответите «n», файл будет сохранен. На самом деле, если вы ответите чем-либо, кроме «y» или «y», файл будет сохранен. Вы можете просто нажать «Enter», и файл будет сохранен.

Вы можете быстро просмотреть список файлов, удаляя или пропуская файлы, чтобы выбрать те, которые вы хотите удалить. Как мы увидим, вы можете использовать опцию i- (interactive) с другими опциями rm .

СВЯЗАННЫЕ С: Лучшие ноутбуки с Linux для разработчиков и энтузиастов

Использование опции rm Force

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

 гм geonames.sl3 

rm предлагает пользователю подтвердить, что он хочет удалить файл только для чтения

Параметр -f (force) указывает rm никогда не запрашивать. Вы говорите ему: «Да, удалите все файлы, о которых вы обычно меня просили». Это также не позволяет rm жаловаться на несуществующие файлы.

 rm -f геоназвания.sl3 

Использование параметра -f (force), чтобы запретить rm запрашивать удаление

Параметр -f (принудительно) часто используется при удалении вложенного набора файлов и каталогов.

Удаление каталогов с помощью rm

Команда rm также может удалять каталоги вместе с содержащимися в них файлами. Это похоже на команду rmdir , но rmdir не может удалять каталоги с файлами в них. Он удаляет только пустые каталоги. Команда rm может легко удалить каталоги, содержащие файлы и другие каталоги.

Как удалить файлы и каталоги в терминале Linux
СВЯЗАННЫЕ С Как удалить файлы и каталоги в терминале Linux

Удаление каталога аналогично удалению файла. Мы указываем имя каталога в командной строке. Нам нужно включить опцию -d (каталог). Как и при удалении файлов, мы можем указать имя нескольких каталогов. Мы можем указать путь к каталогу, который не находится в текущем рабочем каталоге.

 rm -d старые проекты 

Использование параметра -d (каталог) для удаления каталога

Если каталог содержит файлы, это не удастся.

Чтобы удалить каталог и его содержимое, используйте флаг -r (рекурсивный). Это удаляет каталог, его файлы и любые вложенные каталоги, которые он содержит.

 rm -d архив
 rm -r архив 

Использование параметра -r (рекурсивный) для удаления каталога и его файлов

Вторая команда прошла успешно.

Чтобы переключить rm в полноценный режим бензопилы, мы можем комбинировать параметры -r (рекурсивный) и -f (принудительный). Это говорит rm рекурсивно удалить все файлы и каталоги в дереве каталогов, даже если они доступны только для чтения, и никогда не запрашивая нас.

На нашем тестовом компьютере у нас есть каталог под названием «мигрированный код». Он содержит файлы и еще один каталог с именем «6502». Каталог «6502» также содержит файлы и другой каталог под названием «ASM». В этом каталоге тоже есть файлы. Некоторые файлы доступны только для чтения.

Мы также включим команду -v (многословная), чтобы rm сообщал нам, что он делает.

 rm -rfv перенесенный код 

Использование флагов -rfv, чтобы заставить rm удалять файлы и каталоги, даже файлы только для чтения, без запроса

В выводе мы видим, что файлы удалены, а когда они пусты, каталоги тоже удалены.

Вывод флагов -rfv, показывающий файлы, которые удаляются, и каталоги, которые удаляются, когда они пусты.

Как избежать ошибок при использовании rm

Пробелы и другие странные символы в именах файлов могут создавать проблемы. Например, имена файлов, начинающиеся с дефиса « - », могут быть ошибочно приняты за параметры командной строки. Если у нас есть файл с именем «-contributors.txt», rm попытается обработать имя как последовательность параметров командной строки.

Поскольку в rm нет параметра с именем « -c », синтаксический анализ командной строки завершается ошибкой, и файл не удаляется. Чтобы удалить файл, вам нужно указать перед ним «./», чтобы указать путь к нему.

 rm -contributors.txt
 rm ./-contributors.txt 

Использование «./» для решения проблемы удаления файла, первым символом которого является дефис

Пробелы в именах файлов также проблематичны. Либо заключайте в кавычки полное имя файла, либо используйте завершение с помощью табуляции, чтобы вставить имя файла в командную строку за вас, избегая при этом пробелов. Если вы не используете ни одну из этих опций, rm будет рассматривать каждую часть имени файла как отдельный файл.

Как работать с пробелами в именах файлов в Linux
СВЯЗАННЫЕ Как работать с пробелами в именах файлов в Linux

Здесь у нас есть два файла, один из которых называется «резервная копия», а другой — «резервная копия для удаления». Мы можем продемонстрировать проблему с этими именами файлов, используя ls . Если мы попытаемся использовать ls для файла «резервное копирование для удаления» и не экранируем имя файла и не ставим его в кавычки, команда завершится ошибкой.

 ls -hl резервную копию для удаления 

Попытка использовать ls для файла с пробелами в имени, не заключая строку в кавычки и не экранируя пробелы.

ls жалуется, что не может найти файлы с именами «to» или «delete», но находит файл с именем «backup». Это то, что rm тоже сделает. Он пожалуется на два отсутствующих файла, а затем удалит файл с именем «резервная копия», чего мы не хотели.

 rm резервная копия для удаления 

Попытка использовать rm для файла с пробелами в имени, не заключая строку в кавычки и не экранируя пробелы.

rm считает, что работает с тремя файлами: «резервное копирование», «в» и «удаление». Он жалуется, что не может найти «кому» и «удалить», но находит и молча удаляет «резервную копию».

Заключение имени файла в кавычки позволяет rm удалить правильный файл.

 rm 'резервная копия для удаления' 

Использование rm с именем файла в кавычках для решения проблемы пробелов в имени файла

Вы также можете избежать пробелов с помощью обратной косой черты « \ », например:

 rm резервное копирование\в\удаление 

Использование rm с именем файла с экранированными пробелами для решения проблемы пробелов в имени файла

Если вы используете завершение с помощью табуляции для ввода имен файлов, они будут автоматически экранированы, если это необходимо.

Какие СИЗ?

В отличие от реальных бензопил, для rm не существует средств индивидуальной защиты.

Что вы можете сделать, так это проверить свой синтаксис с помощью ls перед тем, как попробовать его с помощью rm , и использовать интерактивный режим, чтобы вы могли решить, что будет удалено.

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

СВЯЗАННЫЕ С: удаление файлов старше x дней в Linux