Командите rm и rmdir изтриват файлове и директории на Linux, macOS и други подобни на Unix операционни системи. Те са подобни на командите del и deltree в Windows и DOS. Тези команди са много мощни и имат доста опции.
Важно е да се отбележи, че файловете и директориите, изтрити с помощта на rm и rmdir, не се преместват в кошчето. Те се премахват незабавно от вашия компютър. Ако случайно изтриете файлове с помощта на тези команди, единственият начин да ги възстановите е от резервно копие.
Съдържание
Как да премахнете файлове с rm
Най-простият случай е изтриването на един файл в текущата директория. Въведете командата rm, интервал и след това името на файла, който искате да изтриете.
rm file_1.txt
Ако файлът не е в текущата работна директория, посочете път до местоположението на файла.
rm ./path/to/the/file/file_1.txt
Можете да подадете повече от едно име на файл на rm. Това изтрива всички посочени файлове.
rm file_2.txt file_3.txt
Заместващите символи могат да се използват за избор на групи файлове, които да бъдат изтрити. * представлява множество знака, а ? представлява единичен знак. Тази команда ще изтрие всички png файлове с изображения в текущата работна директория.
rm *.png
Тази команда ще изтрие всички файлове, които имат разширение с един знак. Например, това ще изтрие File.1 и File.2, но не и File.12.
rm *.?
Ако файлът е защитен от запис, ще бъдете подканени, преди файлът да бъде изтрит. Трябва да отговорите с y или n и да натиснете „Enter“.
За да намалите риска от използване на rm с заместващи знаци, използвайте опцията -i (интерактивна). Това изисква да потвърдите изтриването на всеки файл.
rm -i *.dat
Опцията -f (сила) е противоположна на интерактивната. Той не подканва за потвърждение, дори ако файловете са защитени от запис.
rm -f filename
Как да премахнете директории с rm
За да премахнете празна директория, използвайте опцията -d (директория). Можете да използвате заместващи знаци (* и ?) в имената на директории точно както с имената на файлове.
rm -d directory
Предоставянето на повече от едно име на директория изтрива всички посочени празни директории.
rm -d directory1 directory2 /path/to/directory3
За да изтриете директории, които не са празни, използвайте опцията -r (рекурсивна). За да бъде ясно, това премахва директориите и всички файлове и поддиректории, съдържащи се в тях.
rm -r directory1 directory2 directory3
Ако директория или файл са защитени от запис, ще бъдете подканени да потвърдите изтриването. За да изтриете директории, които не са празни, и да потиснете тези подкани, използвайте опциите -r (рекурсивно) и -f (принудително).
rm -rf directory
Тук се изисква грижа. Допускането на грешка с командата rm -rf може да причини загуба на данни или неизправност на системата. Опасно е и най-добрата политика е предпазливостта. За да разберете структурата на директориите и файловете, които ще бъдат изтрити от командата rm -rf, използвайте командата дърво.
Използвайте apt-get, за да инсталирате този пакет във вашата система, ако използвате Ubuntu или друга базирана на Debian дистрибуция. В други дистрибуции на Linux използвайте вместо това инструмента за управление на пакети на вашата Linux дистрибуция.
sudo apt-get install tree
Изпълнението на командата дърво произвежда лесна за разбиране диаграма на структурата на директорията и файловете под директорията, от която се изпълнява.
tree
Можете също да предоставите път към командата дърво, за да я накарате да стартира дървото от друга директория във файловата система.
tree path/to/directory
Командата rm също има опции –one-file-system, –no-preserve-root, –preserve-root, но те се препоръчват само за напреднали потребители. Ако сбъркате нещо, може случайно да изтриете всичките си системни файлове. Консултирайте се с командата страница наръчник за повече информация.
Как да премахнете директории с rmdir
Има друга команда, наречена rmdir, която можете да използвате за изтриване на директории. Разликата между rm и rmdir е, че rmdir може да изтрива само празни директории. Той никога няма да изтрие файлове.
Най-простият случай е изтриването на една празна директория. Както при rm, можете да подадете множество имена на директории на rmdir или път към директория.
Изтрийте една директория в текущата директория, като предадете името й на rmdir:
rmdir directory
Изтрийте множество директории, като предадете списък с имена на rmdir:
rmdir directory1 directory2 directory3
Изтрийте директория, която не е в текущата директория, като посочите пълния път до тази директория:
rmdir /path/to/directory
Ако се опитате да изтриете папка, която не е празна, rmdir ще ви даде съобщение за грешка. В следващия пример rmdir успешно и безшумно изтрива клиентската директория, но отказва да изтрие директорията на проекти, защото съдържа файлове. Директорията с проекти е оставена точно както е била и файловете в нея са недокоснати.
Когато rmdir даде грешка „Директорията не е празна“, той спира да обработва директориите, които са му предадени в командния ред. Ако сте го помолили да изтрие четири директории и първата има файлове в нея, rmdir ще ви даде съобщението за грешка и ще направи нищо повече. Можете да го принудите да игнорира тези грешки с опцията –ignore-fail-on-non-empty, така че да се обработват други директории.
В следващия пример две папки са предадени на rmdir, това са work/reports и work/quotes. Опцията –ignore-fail-on-non-empty е включена в командата. Папката work/reports има файлове в нея, така че rmdir не може да я изтрие. Опцията –ignore-fail-on-non-empty принуждава rmdir да игнорира грешката и да премине към следващата папка, която трябва да обработи, която е работа/кавички. Това е празна папка и rmdir я изтрива.
Това беше използваната команда.
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
Можете да използвате опцията -p (родители), за да изтриете директория и да изтриете нейните родителски директории. Този трик работи, защото rmdir започва с целевата директория и след това се връща обратно към родителя. Тази директория вече трябва да е празна, така че може да бъде изтрита от rmdir и процесът се повтаря, като се връща обратно по пътя, предоставен на rmdir.
В следващия пример командата, която се предава на rmdir е:
rmdir -p work/invoices
Както фактурите, така и работните директории се изтриват, както е поискано.
Независимо дали използвате Bash или друга обвивка, Linux предоставя гъвкави и мощни команди за изтриване на директории и файлове направо от командния ред на терминала. Някои хора предпочитат да имат работен процес, който се върти около терминала. Други може да нямат избор по въпроса. Те може да работят на сървъри без инсталиран GUI или на отдалечена сесия на безглава система, като Raspberry Pi. Тези команди са идеални за тази група хора.
Но какъвто и тип работен поток предпочитате, тези команди са много подходящи за включване в скриптове на обвивката. Ако скриптът се задейства от задание на cron, той може да помогне за автоматизиране на рутинни домакински задачи, като например почистване на нежелани регистрационни файлове. Ако проучите този случай на употреба, запомнете силата на тези команди, тествайте всичко внимателно и винаги поддържайте скорошно архивиране.