Команда Linux rm: все, что вам нужно знать
Опубликовано: 2023-01-22 Команда Linux rm
удаляет файлы и каталоги. Чтобы безопасно использовать этот инструмент, вы должны быть уверены, что произойдет, когда вы нажмете «Ввод». Вот что вам нужно знать.
Что такое команда rm в Linux?
Как удалить файлы с помощью rm
Использование подстановочных знаков с rm
Интерактивное использование rm
Использование опции rm Force
Удаление каталогов с помощью rm
Как избежать ошибок при использовании rm
Какие СИЗ?
Что такое команда rm в Linux?
Команда Linux rm
в первую очередь предназначена для удаления файлов. Это то, с чем сталкивается большинство людей вскоре после того, как они начинают использовать Linux. Просто в силу того, что вы новичок в Linux, вы, вероятно, будете делать ошибки. Вы создадите или скопируете файлы случайно, или с неправильным именем, или в неправильное место. Это все часть кривой обучения командной строке. Операции по исправлению таких ошибок включают rm
.
Команда rm
может удалять файлы, группы файлов, каталоги или целые деревья каталогов. Вот почему его нужно использовать с осторожностью. Использовать rm
несложно, но штраф за неудачу высок.
Когда файл удаляется с помощью rm
, он исчезает. Он не перемещается в корзину. Оно сразу стирается. Это не означает, что вам следует избегать использования rm
. Но чтобы использовать его безопасно, вам нужно знать, что он может делать, и убедиться, что вы используете его правильно.
Некоторые инструменты более опасны, чем другие, и гораздо менее прощают ошибки. Вот почему никогда не было фильма под названием «Техасская резня гаечного ключа» . rm
не гаечный ключ, это определенно бензопила.
Люди используют бензопилы весь день каждый день, и пока они используют ее ответственно и осознанно, все в порядке. То же самое и с rm
. Когда вы вытаскиваете rm
из своей сумки с инструментами, вам следует замедлиться и проверить, а затем еще раз проверить свою командную строку.
Команда rm
является исполняемым файлом, а не частью оболочки. Итак, хотя мы используем здесь Bash, это стандартная Linux rm
, а не специальная Bash rm
.
СВЯЗАННЫЕ: Командные строки: почему люди все еще беспокоятся о них?
Как удалить файлы с помощью rm
Самый простой способ использовать rm
— указать имя файла, который вы хотите удалить.
рм config.gc
Вы молча возвращаетесь в командную строку. rm
придерживается классической закрытой позиции Linux: если он ни на что не жалуется, вы можете считать, что он сделал то, что вы просили. Предоставление такого имени файла заставляет rm
искать файл в текущем рабочем каталоге.
Вы можете указать несколько имен файлов в командной строке. Вы также можете указать путь к каталогу, если файл, который вы хотите удалить, не находится в текущем каталоге.
rm memlog.sh /home/dave/dev-archive/config.gc
Опять же, ничего не сообщается, если rm
удается удалить указанные файлы.
СВЯЗАННЫЕ: 37 важных команд Linux, которые вы должны знать
Использование подстановочных знаков с rm
Подстановочные знаки позволяют указывать группы или коллекции файлов без необходимости перечисления отдельных файлов в командной строке.
Звездочка « *
» обозначает любую последовательность символов, в том числе ни одной. Знак вопроса « ?
” представляет любой одиночный символ.
Чтобы убедиться, что ваши подстановочные знаки будут соответствовать тому, что вы от них ожидаете, и ничего более, вы можете использовать их с ls, прежде чем использовать их с rm.
Чтобы удалить все файлы PNG в текущем каталоге, используйте «*.png». Это означает, что любая последовательность символов, за которой следует «.png», будет соответствовать. Когда файлы были удалены, мы можем использовать ls
, чтобы убедиться, что они исчезли.
лс *.png
гм *.png
лс *.png
На нашем тестовом компьютере у нас есть два файла в текущем каталоге с именами, начинающимися с «config».
Мы можем удалить оба из них, используя подстановочный знак звездочки. Он соответствует обоим файлам, потому что rm
ищет файлы, имена которых начинаются с «config», за которым следует любая последовательность символов. В одном файле эта последовательность символов — «.sl3», расширение имени файла. Другое имя файла не содержит символов после «config», но поскольку звездочка соответствует любым символам или не соответствует символам , оно также соответствует этому имени файла.
лс конфиг*
рм конфиг*
лс конфиг*
Вы можете использовать вопросительный знак в парах. Это удалит файлы, которые имеют расширения файлов ровно из двух символов.
лс *.??
м*.??
лс *.??
СВЯЗАННЫЕ С: 15 специальных символов, которые вам нужно знать для Bash
Интерактивное использование rm
Безопасный способ использования rm
— заставить его запрашивать подтверждение перед удалением каждого файла. Опция -i
(интерактивная) позволяет это сделать. Когда вы добавите эту опцию в свою командную строку, rm
будет запрашивать вас перед каждым удалением, давая вам возможность выполнить действия, которые вы не планировали.
В этой команде мы будем использовать параметр -i
(интерактивный). Он пытается удалить все файлы с односимвольным расширением.
гм -я *.?
Каждый соответствующий файл представлен по очереди. Если вы ответите «y» или «y», файл будет удален. Если вы ответите «n», файл будет сохранен. На самом деле, если вы ответите чем-либо, кроме «y» или «y», файл будет сохранен. Вы можете просто нажать «Enter», и файл будет сохранен.
Вы можете быстро просмотреть список файлов, удаляя или пропуская файлы, чтобы выбрать те, которые вы хотите удалить. Как мы увидим, вы можете использовать опцию i-
(interactive) с другими опциями rm
.
Команды Linux | ||
Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Процессы | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · тайм-аут · стена · да · kill · сон · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · остановка · poweroff · passwd · lscpu · crontab · дата · bg · fg · pidof · nohup · pmap | |
Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · копать · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
СВЯЗАННЫЕ С: Лучшие ноутбуки с Linux для разработчиков и энтузиастов
Использование опции rm Force
Если вы попытаетесь удалить файл, доступный только для чтения, rm
запросит у вас подтверждение перед удалением файла. Это хорошая система безопасности, но она может стать утомительной, если вам нужно удалить много файлов.
гм geonames.sl3
Параметр -f
(force) указывает rm
никогда не запрашивать. Вы говорите ему: «Да, удалите все файлы, о которых вы обычно меня просили». Это также не позволяет rm
жаловаться на несуществующие файлы.
rm -f геоназвания.sl3
Параметр -f
(принудительно) часто используется при удалении вложенного набора файлов и каталогов.
Удаление каталогов с помощью rm
Команда rm
также может удалять каталоги вместе с содержащимися в них файлами. Это похоже на команду rmdir
, но rmdir
не может удалять каталоги с файлами в них. Он удаляет только пустые каталоги. Команда rm
может легко удалить каталоги, содержащие файлы и другие каталоги.
Удаление каталога аналогично удалению файла. Мы указываем имя каталога в командной строке. Нам нужно включить опцию -d
(каталог). Как и при удалении файлов, мы можем указать имя нескольких каталогов. Мы можем указать путь к каталогу, который не находится в текущем рабочем каталоге.
rm -d старые проекты
Если каталог содержит файлы, это не удастся.
Чтобы удалить каталог и его содержимое, используйте флаг -r
(рекурсивный). Это удаляет каталог, его файлы и любые вложенные каталоги, которые он содержит.
rm -d архив
rm -r архив
Вторая команда прошла успешно.
Чтобы переключить rm
в полноценный режим бензопилы, мы можем комбинировать параметры -r
(рекурсивный) и -f
(принудительный). Это говорит rm
рекурсивно удалить все файлы и каталоги в дереве каталогов, даже если они доступны только для чтения, и никогда не запрашивая нас.
На нашем тестовом компьютере у нас есть каталог под названием «мигрированный код». Он содержит файлы и еще один каталог с именем «6502». Каталог «6502» также содержит файлы и другой каталог под названием «ASM». В этом каталоге тоже есть файлы. Некоторые файлы доступны только для чтения.
Мы также включим команду -v
(многословная), чтобы rm
сообщал нам, что он делает.
rm -rfv перенесенный код
В выводе мы видим, что файлы удалены, а когда они пусты, каталоги тоже удалены.
Как избежать ошибок при использовании rm
Пробелы и другие странные символы в именах файлов могут создавать проблемы. Например, имена файлов, начинающиеся с дефиса « -
», могут быть ошибочно приняты за параметры командной строки. Если у нас есть файл с именем «-contributors.txt», rm
попытается обработать имя как последовательность параметров командной строки.
Поскольку в rm
нет параметра с именем « -c
», синтаксический анализ командной строки завершается ошибкой, и файл не удаляется. Чтобы удалить файл, вам нужно указать перед ним «./», чтобы указать путь к нему.
rm -contributors.txt
rm ./-contributors.txt
Пробелы в именах файлов также проблематичны. Либо заключайте в кавычки полное имя файла, либо используйте завершение с помощью табуляции, чтобы вставить имя файла в командную строку за вас, избегая при этом пробелов. Если вы не используете ни одну из этих опций, rm
будет рассматривать каждую часть имени файла как отдельный файл.
Здесь у нас есть два файла, один из которых называется «резервная копия», а другой — «резервная копия для удаления». Мы можем продемонстрировать проблему с этими именами файлов, используя ls
. Если мы попытаемся использовать ls
для файла «резервное копирование для удаления» и не экранируем имя файла и не ставим его в кавычки, команда завершится ошибкой.
ls -hl резервную копию для удаления
ls
жалуется, что не может найти файлы с именами «to» или «delete», но находит файл с именем «backup». Это то, что rm
тоже сделает. Он пожалуется на два отсутствующих файла, а затем удалит файл с именем «резервная копия», чего мы не хотели.
rm резервная копия для удаления
rm
считает, что работает с тремя файлами: «резервное копирование», «в» и «удаление». Он жалуется, что не может найти «кому» и «удалить», но находит и молча удаляет «резервную копию».
Заключение имени файла в кавычки позволяет rm
удалить правильный файл.
rm 'резервная копия для удаления'
Вы также можете избежать пробелов с помощью обратной косой черты « \
», например:
rm резервное копирование\в\удаление
Если вы используете завершение с помощью табуляции для ввода имен файлов, они будут автоматически экранированы, если это необходимо.
Какие СИЗ?
В отличие от реальных бензопил, для rm
не существует средств индивидуальной защиты.
Что вы можете сделать, так это проверить свой синтаксис с помощью ls
перед тем, как попробовать его с помощью rm
, и использовать интерактивный режим, чтобы вы могли решить, что будет удалено.
Кроме этого, это практика, пока вы не почувствуете себя комфортно и уверенно. Самый безопасный способ сделать это — скопировать кучу жертвенных файлов в каталог и потренироваться на них.
СВЯЗАННЫЕ С: удаление файлов старше x дней в Linux