Удаление файлов и директорий в GNU/Linux

Поразительно, но даже некоторые весьма опытные линуксоиды достаточно поверхностно знакомы с удалением элементов файловой системы в GNU/Linux. Это объясняется высокой популярностью графических окружений и, как следствие, «самопереучиванием» под них даже теми пользователями, кто, казалось бы, сидит на UNIX-подобных ОС еще с деда-прадеда. 🙂 Однако я все-таки собираюсь напомнить вам, — а заодно и себе, — как безопасно удалять файлы и каталоги в GNU/Linux с помощью командной строки.

В современных дистрибутивах GNU/Linux за удаление файлов и директорий в режиме командной строки (CLI) отвечают команды «rm» и «rmdir».

Как в GNU/Linux удалять файлы?

Давайте на примере разберем, как удалять файл. Естественно, для начала его нужно создать. 😀 Откройте ваш любимый эмулятор терминала и выполните команду:

touch newfile.txt

Это создаст файл «newfile.txt» в вашем домашнем каталоге (по умолчанию любая новая сессия терминала открывается в домашней директории пользователя, ее начавшего).

Файл создан!

А теперь давайте-ка его удалим! Для этого воспользуйтесь командой:

rm newfile.txt
Файл удален!

Если же вы хотите удалить файл «newfile.txt», когда сессия терминала открыта в директории, отличной от домашней, необходимо указывать полный путь к нашему файлу. Например, вот так:

rm ~/newfile.txt

Обратите внимание! Символ «~» в UNIX-подобных системах — к коим, само собой, относится и GNU Linux — часто означает домашний каталог активного пользователя. Если же нам нужно удалить этот же файл, однако от имени другого пользователя (например, в сессии терминала от root), то путь будет выглядить так: «/home/username/newfile.txt», где «username» — имя соотвествующего пользователя в системе.

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

Подтверждение удаления защищенного файла

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

cd ~ && touch test1.txt test2.txt test3.txt

Команда создаст в вашей домашней директории файлы «test1.txt», «test2.txt» и «test3.txt» соответственно.

Вот они, наши файлы…

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

rm test1.txt test2.txt test3.txt

Это удалит все три только что созданных файла.

Как не бывало!

Команда «rm», как и большинство консольных утилит GNU/Linux, поддерживает использование параметра (опции, ключа — названий много). Скажем, для того, чтобы в предыдущем примере нас всякий раз просили подтвердить удаление каждого из этих трех файлов, нужно прибегнуть к одному из параметров:

rm -i test1.txt test2.txt test3.txt

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

Удаление с подтверждением

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

touch nodelete.txt && sudo chmod 444 nodelete.txt

Первая команда создаст файл, а вторая — та, что после разделителя — ограничит права на его использование только чтением (кстати, детальнее про возможности отличной команды «chmod», предназначенной для смены прав доступа к файлам и папкам, вы можете прочесть здесь).

Если мы попробуем удалить файл без каких-либо параметров, нас переспросят. Однако с правильным параметром («-f») этого не произойдет, и файл удалится тут же.

Перипетии с файлом «nodelete.txt»

Кстати, если вы хотите удалить, например, все файлы с расширением «.txt» в некоем каталоге — пререйдите в него и выполните команду:

rm *.txt

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

Эта возможность может быть вам очень полезна

Как в GNU/Linux удалять директории?

Для удаления директорий, как уже говорилось, используется команда «rmdir». В то же время, удалить каталог — как пустой, так и с каким-либо содержанием — может «rm» с правильным параметром. Более того, «rm» выглядит даже практичнее, чем «rmdir», но ради справедливости я покажу вам оба способа.

Итак, для начала давайте создадим три директории:

cd ~ && mkdir Hello1 Hello2 Hello3

Первая команда изменит рабочий каталог сессии терминала на домашний, а вторая — создаст в нем директории «Hello1», «Hello2» и «Hello3».

Моя домашняя директория с только что созданными «Hello1», «Hello2», «Hello3»

Предлагаю для чистоты эксперимента что-то положить в один из них. Например, в «Hello2»:

touch ~/Hello2/somefile.txt

Теперь в директории «Hello2» имеется файл «somefile.txt».

Проверяем, находимся ли мы все еще в домашнем каталоге:

pwd
Последняя команда вывела на экран адрес рабочего каталога

Если по какой-то причине нет, переходим в него (выполнив команду «cd» без любых дополнительных параметров или же с «~») и удаляем первую созданную директорию с помощью «rmdir»:

rmdir Hello1

Каталог был пуст, поэтому удалится, ничего не переспросив. Но уже в случае с «Hello2» возникнут проблемы: в нем лежит файл! Команда «rmdir» не сможет выполнить поставленной задачи:

rmdir Hello2
Не получается удалить, так как каталог не пуст

В таком случае пригодится уже знакомая нам утилита «rm» с параметром «-r». Она может удалять каталоги, причем по нескольку вместе — так, как в случае с файлами, — и директории с содержимым для нее — не помеха. Давайте-ка удалим «Hello2», прибегнув к этим инструментам:

Очень просто!

Ну, а под конец занятия предлагаю создать защищенный от изменений файл в директории «Hello3», а потом попытаться ее удалить. 😎 Это поможет закрепить знания и понять работу использованых в статье утилит, ежели кто-то умудрился еще этого не сделать:

touch Hello3/test.txt && sudo chmod 444 Hello3/test.txt
Как видим, файл создался и от изменений он защищен

Убедившись, что рабочим каталогом сессии терминала все еще является домашний, следующей командой попробуйте удалить директорию «Hello3» вместе с файлом «test.txt», доступным нам только для чтения:

rm -r Hello3

Система, попросив подтверждения, удалит «Hello3» вместе с содержимым. Если вы не хотите подтверждать действие, можете скомбинировать уже знакомые параметры:

rm -rf Hello3

Или так:

rm -r -f Hello3
Каталог легко удалился, даже не «тявкнув»

Напоследок…

GNU/Linux — очень умная операционная система. Она активно использует идеи многопользовательской среды и разделения прав, характерные для UNIX, поэтому у вас никогда не получится удалить чей-то чужой файл. Исключение — использование прав администратора (как в виде утилиты «sudo», так и непосредственно от root’а): тогда вы сможете делать в системе все, что заблагорассудится.

На моем рабочем компьютере имеются двое пользователей — bohdan (я) и dara (моя невеста). На скриншоте ниже вы можете увидеть, как я, открыв сессию терминала собственным пользователем, переключился на пользователя своей девушки с помощью «su» и введения ее пароля (ох, надеюсь, она об этом не узнает!). Потом я перешел в ее домашний каталог — открытая сессия терминала все еще находилась в моей домашней директории, как вы можете видеть, — и убедился в успешности предыдущей команды с помощью «pwd». Далее я создал файл «file.txt» и тут же, прибегнув к «sudo», ограничил доступ к нему. Напомню, все это происходило под пользователем dara.

Берегите свои пароли!

Следующим шагом я вывел на экран содержимое каталога с некоторыми параметрами, однако в то же время совершил точный поиск с помощью «grep», дабы не показывать вам всего содержимое домашней директории моей девушки. Файл создался, как видим, и права у него — только на чтение, причем для всех.

Наигравшись, я вышел из сеанса пользователя dara командой «exit» и тут же оказался опять в сеансе командной строки собственного пользователя — bohdan. Уже от собственного имени я убедился, что я — это я (команда «whoami»), затем попробовал удалить файл «file.txt», причем, как видите, с параметрами «-r» и «-f». Естественно, система тут же выдала отказ в доступе: не трожь чужое! Я не сдался и повторил предыдущую команду, но через «sudo», то есть воспользовавшись административными привилегиями.

Последняя команда — опять же, выведение на экран содержимого домашней директории моей девушки с использованием «grep». Искал все тот же «file.txt». Не нашел.

Поэтому всегда берегите свои пароли, ибо, зная их, системе очень легко навредить. Если же случилось что-то, казалось бы, непоправимое, обязательно прочтите о том, как восстанавливать удаленные файлы в GNU/Linux.

Автор: root
Изображения: скриншоты автора, из открытых источников

Автор публикации

не в сети 2 месяца

root

0
Адміністратор сайту «LinuxTheBest»
Комментарии: 235Публикации: 67Регистрация: 11-01-2019
Если Вам понравилась статья, то поделитесь ею в соц.сетях:

30
Отправить ответ

 
avatar
 
smilegrinwinkmrgreenneutraltwistedarrowshockunamusedcooleviloopsrazzrollcryeeklolmadsadexclamationquestionideahmmbegwhewchucklesillyenvyshutmouth
Фото и картинки
 
 
 
Другие файлы
 
 
 
9 Темы
21 Ответов
8 Комментаторов
 
Самый обсуждаемый
Горячие комментарии
16 Авторы комментариев
ВасяМаксет КощеевВасяsomebodyГригорий Последние авторы комментариев
Вася
Гость
Вася

Ушел с убунты на Федору доволен как слон))

Максет Кощеев
Участник

Тут как посмотреть. Если Роса то да, а чистая федора геморой как и ред хат, Вы анонист от линукса.Это имхо.

Вася
Гость
Вася

Покупайте сами свою росу.имхо

Максет Кощеев
Участник

Богдан, если заглядываешь на свой сайт, то дай статейку написать, в какой раз спрашиваю. Сайт то бывшим раскручен не хило. Не загни. Не можешь сам, дай другим.

kobtsev1976mailru
Участник

всё загнулся сайт.

Максет Кощеев
Участник

Дай куда и как, есть задумки интересных тем. Про Peppermint, собст,… обзор. Про приколы линя, про то как вычистить Uduntu, про то как ускорить систему удалив ненужный хлам. И ещё много полезного. Или Мы без Вас тут юзаться будем? У меня на системнике Минт со времен РОСИНКИ, До 18.3 обновлен. Минт Форева.!!!!!!!!

GrigS
Участник

“… как ускорить систему удалив ненужный хлам” – интересно-интересно. Т.к. в некоторых случаях не увидел прироста, а в других навредил сам себе.

Максет Кощеев
Участник

https://losst.ru/optimizatsiya-linux-mint-18 К 19 применимо. Заметно шустрее на двух гигах оперативки. И на 15сек быстрее грузится стал. 18.3 Мате у меня. И если компик старый, то и ядро постарее, у меня 4.4.

GrigS
Участник

Надо почитать. Ноут dell 1525. Сейчас такое- OS: Mint 18.3 sylvia Kernel: x86_64 Linux 4.4.0-146-generic Resolution: 1280×800 DE: Mate WM: Compiz WM Theme: eOS CPU: Intel Pentium Dual CPU T2330 @ 1.6GHz GPU: Mesa DRI Intel(R) 965GM RAM: 2360MiB / 3941MiB Startup finished in 6.461s (kernel) + 30.147s (userspace) = 36.609s Думаю, что это приближённо к пределу. Дальше для прогресса – покупка нового железа (пока нет необходимости). И да –… Читать далее »

Максет Кощеев
Участник

Есть ещё фишка, Но на только делах работает, Sudo apt purge dlx- u она его собс запросы режет, скорость нета увеличивается в 2 раза. Но только на Дэле. Видимо у них свой прикол с биосом и дровами.

Book
Участник

Что уж тут душой кривить-то? Применительно к сайту можно сказать – “Бобик сдох”.

somebody
Гость
somebody

Тема не очень популярна, посещаемость сайта ограничена, изюма нема… автору стало неинтересно. Его можно понять. Вот debianeach тоже забросил свой блог. На pingvinus вторую неделю ничего интересного, losst пишет всякий невостребованный шлак. Безысходность накрыла пространство.

yuriy_chijikov
Гость

Когда-то я писал, что сайт загибается….Новости – раз в месяц! И сайт живет за счет наработок старого владельца! Меня обливали грязью и унаваживали! А новый хозяин говорил – плати нам зарплату и мы новости будем выдавать! Это вообще – дичь! Зачем автор ввязался в то, что вытянуть не может?! Я себя даже предлагал в модераторы, уж я-то все новости бы отслеживал, так, как сижу дома за ПК сутками! Но –… Читать далее »

Max
Администратор

мы вам в личку писали предложение стать модератором. вы проигнорировали.

yuriy_pyjikov
Гость
yuriy_pyjikov

Интересно мне, чем же вы занимаешься сидя сутками за ПК. Имея возможность сидеть сутками за ПК, можно с нуля освоить web разработку, написать движок для сайта, развернуть сайт и постить всё, что интересно самому. К примеру сайт как pingvinus.ru пишется месяца за четыре, ещё полгода на изучение серверного языка верхнего уровня (любой из линейки Python, Ruby, Perl, PHP) и ещё полгода на изучение клиентских диалектов (HTML, CSS, JavaScript) – ничего… Читать далее »

yuriy.chijikov
Гость

Я уже пол-года пользуюсь своим ЛИЧНЫМ дистрибутивом, сделанным САМИМ И ДЛЯ СЕБЯ! Рад и доволен! И уже ни с кем “не срусь” на чужих сайтах – в этом нет смысла! Пользуюсь в основном англо-язычными ресурсами – там уровень культуры и взаимоуважения – гораздо выше!

Максет Кощеев
Участник

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

yuriy.chijikov
Гость

Привет, Макс…! Какой версией Минта Вы пользуетесь? В данном случае – это важно!?

yuriy2153.pyjikov
Гость
yuriy2153.pyjikov

Йа вам про Ерёму, вы мне про Фому. На рутрекере если пошукать, можно ЛИЧНЫХ “дистрибутивов” найти цельную кучу, но все они будут – говно неюзабельное, за редким-редким исключением. По уму система легко собирается под личные предпочтения из netinst от Debian, или mini.iso от Ubuntu, и не надо никаких личных дистрибутивов – бо маразм. Система устанавливается один раз, на минимум 2 года, а не как вы – поставил, снёс, поставил, снёс.… Читать далее »

yuriy.chijikov
Гость

И я Вам про Ерему, а Вы мне про Фому…. Зачем мне чужие говносборки!? Я сделал для себя то, Что ИМЕННО МНЕ нужно! Мне это ИНТЕРЕСНО!!! И мне Очень нужен ЛИЧНЫЙ дистрибутив! Потому, как НИ ОДИН меня не устраивает ЛИЧНО, как пользователя!!! Случилось так, что после определенных событий в 2015 г. я получил инвалидность. В 2017 г. мне сделали тяжелую операцию. Я все эти года, до сих пор, сидел дома.… Читать далее »

1111
Гость
1111

yuriy_pyjikov
ответ прост и очевиден, чтобы все этим заниматься, нужно иметь хоть какие-то мозги, а это явно не тот случай.
когда учиться, если целыми днями переустанавливать всевозможные системы и программы и висеть на куче форумов.
да и зачем, главное, самому себя считать “экспертом”

Book
Участник

“Это объясняется высокой популярностью графических окружений”
И что в этом плохого? Зачем приплетать терминал туда, где можно обойтись двумя кликами кнопок мышки?
В любом деле меру нужно знать.

kuchera066
Участник

Из всех знакомых мне графических пакетных менеджеров и всяческих магазинов ПО используемых в deb,rpm,arch системах единственный более менее “внятный” это дебианский синаптик. Все остальные время от времени выдают ошибки, что-то типа “невозможно, неудалось”, и приходится открывать терминал и смотреть подробный “выхлоп” почему? Поэтому я всегда администрирование системы стараюсь делать в терминале чтобы избавиться от лишней “головной боли” впоследствии. Хотя согласен в любом деле меру нужно знать и очистить корзину, удалить… Читать далее »

SemenoFF
Участник

підкажіть, як видалити тільки файли в теці, а саму теку не чіпати?
маскою:
rm ~/test/*.*
?

kuchera066
Участник

Вспомнилось сразу как меня когда-то “научили” на форумах легендарной команде “rm -rf /”. Надолго запомнил ))).

newbie
Участник
newbie

man -ы надо читать, а не по форумам шарить. делаешь в консоли такую команду: dpkg -L coreutils это если у вас Debian или Ubuntu… команда выхлопнет состав пакета coreutils – основополагающие низкоуровневые консольные инструменты на все случаи жизни, в конце перечня man -ы почти к каждой программе в пакете. вот что надо читать. а вы по форумам да сомнительным сайтам шаритесь, друг у друга подсматриваете да тырите, сами ничему научиться… Читать далее »

kuchera066
Участник

Как раз для этого я и написал свой пост, чтобы люди понимали, что команды help, man, systemctl, journalctl, check(fedora) и официальная документация иногда полезнее любых форумов. Свою историю я выдумал, кто в здравом уме будет удалять корень? (разве только человек впервые увидевший линукс) и ожидал больше дизлайков и ответов. Но к сожалению мало кого интересует терминал и статьи о нем. Насчет лайки/дизлайки у меня тоже складывается мнение, что сайт и… Читать далее »

Book
Участник

“лайки/дизлайки здесь живут своей жизнью”
А разве они кому-то интересны? Нужно обсуждать, спорить, убеждать, а не тупо ставить + или -. Чем-то напоминает детсадовскую песочницу…

kuchera066
Участник

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

Авторизация
*
*
 
Регистрация
*
*
*
*
 
Генерация пароля