Поиск по сайту:

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


Описание: Команда rm позволяет удалить файл или каталог, передав его имя: «rm filename» или «rm -d directory». Вы также можете указать путь к каталогу. Если в каталоге есть файлы, используйте параметр -r «rm -r directory» для рекурсивного удаления файлов и папок.

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

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

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

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

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

Некоторые инструменты более опасны, чем другие, и гораздо менее прощают ошибки. Вот почему никогда не было фильма под названием The Texas Wrench Massacre. rm — это не гаечный ключ, это определенно бензопила.

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

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

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

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

rm config.gc

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

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

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

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

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

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

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

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

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

ls *.png
rm *.png
ls *.png

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

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

ls config*
rm config*
ls config*

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

ls *.??
rm *.??
ls *.??

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

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

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

rm -i *.?

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

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

RELATED: Best Linux Laptops for Developers and Enthusiasts

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

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

rm geonames.sl3

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

rm -f geonames.sl3

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

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

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

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

rm -d old-projects

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

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

rm -d archive
rm -r archive

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

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

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

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

rm -rfv migrated-code

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

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

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

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

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

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

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

ls -hl backup to delete

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

rm backup to delete

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

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

rm 'backup to delete'

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

rm backup\ to\ delete

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

Какие СИЗ?

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

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

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