Найти в Дзене
ZeroCoolGames

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

>Команда rm позволяет удалить файл или каталог, передав его имя: "rm filename" или "rm -d directory". Вы также можете включить путь к каталогу. Если в каталоге есть файлы, используйте опцию -r "rm -r directory" для рекурсивного удаления файлов и папок. Команда Linux rmудаляет файлы и каталоги. Чтобы безопасно использовать этот инструмент, вам нужно быть уверенным в том, что произойдет, когда вы нажмете «Enter». Вот что вам нужно знать. Команда Linux rmв первую очередь предназначена для удаления файлов. Это то, с чем сталкивается большинство людей вскоре после начала использования Linux. Просто потому, что вы новичок в Linux , вы, скорее всего, будете совершать ошибки. Вы будете создавать или копировать файлы случайно, или с неправильным именем, или в неправильное место. Все это часть кривой обучения командной строке. Операции по очистке для таких ошибок включают rm. Команда rmможет удалять файлы, группы файлов, каталоги или целые деревья каталогов. Вот почему ее следует использовать с
Оглавление

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

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

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

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

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

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

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

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

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

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

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

rm-конфигурация.gc

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

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

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

-2

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

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

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

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

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

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

ls *.png

rm *.png

ls *.png

-3

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

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

ls-конфигурация*

конфигурация rm*

ls-конфигурация*

-4

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

ls *.??

рм *.??

ls *.??

-5

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

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

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

рм -i *.?

-6

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

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

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

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

rm geonames.sl3

-7

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

rm -f geonames.sl3

-8

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

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

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

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

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

-9

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

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

rm -d архив

rm -r архив

-10

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

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

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

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

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

-11

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

-12

Избегание ошибок при использовании rm

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

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

rm-contributors.txt

rm ./-contributors.txt

-13

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

Здесь у нас есть два файла, один называется "backup" и один называется "backup to delete". Мы можем продемонстрировать проблему с этими именами файлов, используя ls. Если мы попытаемся использовать lsна файле "backup to delete" и не экранируем или не заключим в кавычки имя файла, команда не будет выполнена.

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

-14

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

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

-15

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

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

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

-16

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

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

-17

Если вы для ввода имен файлов, они будут автоматически экранированы, если это необходимо.

Используйте rm -rf, чтобы удалить все

Если вам абсолютно необходимо удалить все и вся, просто используйте команду:

рм -рф

Это объединяет флаг -f, который принудительно удаляет, с флагом -r, который будет удалять папки рекурсивно. Ранее мы включили аргумент -v (чтобы сделать его многословным ), но он не обязателен. Просто помните, что это по сути ядерный вариант, и вам не следует его использовать, если вы не абсолютно уверены, что хотите, чтобы что-то исчезло навсегда.

Какие СИЗ?

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

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

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