Как да изтриете файлове и директории в терминала на Linux

Командите 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, използвайте командата дърво.

  Как да хоствате Linux Xonotic Game Server

Използвайте 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, но те се препоръчват само за напреднали потребители. Ако сбъркате нещо, може случайно да изтриете всичките си системни файлове. Консултирайте се с командата страница наръчник за повече информация.

  Как да настроите RPMFusion на Fedora Linux

Как да премахнете директории с 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, така че да се обработват други директории.

  Как да използвате RustDesk на Linux

В следващия пример две папки са предадени на 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, той може да помогне за автоматизиране на рутинни домакински задачи, като например почистване на нежелани регистрационни файлове. Ако проучите този случай на употреба, запомнете силата на тези команди, тествайте всичко внимателно и винаги поддържайте скорошно архивиране.