Как да изтрия файлове и директории в терминала на 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 име на файл

Как да премахнете директории с rm

За да премахнете празна директория, използвайте опцията -d (директория). Можете да използвате заместващи символи ( *и ?) в имената на директории, точно както можете да използвате имената на файловете.

rm -d директория

Предоставянето на повече от едно име на директория изтрива всички посочени празни директории.

rm -d directory1 directory2 / path / to / directory3

За да изтриете директории, които не са празни, използвайте опцията -r(рекурсивна). За да бъде ясно, това премахва директориите и всички файлове и поддиректории, съдържащи се в тях.

rm -r директория1 директория2 директория3

Ако директория или файл са защитени от запис, ще бъдете подканени да потвърдите изтриването. За да изтриете директории, които не са празни, и да потиснете тези подкани, използвайте опциите -r(рекурсивна) и -f(принудителна) заедно.

rm -rf директория

Тук се изисква грижа. Грешката с rm -rfкомандата може да причини загуба на данни или неизправност в системата. Това е опасно и предпазливостта е най-добрата политика. За да разберете структурата на директориите и файловете, които ще бъдат изтрити от rm -rfкомандата, използвайте treeкомандата.

Използвайте  apt-get за инсталиране на този пакет на вашата система, ако използвате Ubuntu или друга дистрибуция, базирана на Debian. В други Linux дистрибуции вместо това използвайте инструмента за управление на пакети на вашата Linux дистрибуция.

sudo apt-get инсталационно дърво

Изпълнението на treeкомандата създава проста за разбиране диаграма на структурата на директориите и файловете под директорията, от която се изпълнява.

дърво

Можете също така да предоставите път към treeкомандата, който да я накара да стартира дървото от друга директория във файловата система.

дърво път / към / директория

В rmкомандата също има --one-file-system, --no-preserve-root, --preserve-rootопции, но тези, които се препоръчват само за напреднали потребители. Ако объркате нещо, можете случайно да изтриете всичките си системни файлове. За повече информация вижте страницата с ръководството на командата.

Как да премахнете директории с rmdir

Има още една команда, наречена rmdir, която можете да използвате за изтриване на директории. Разликата между rmи rmdirе, че rmdirможе да изтрива само празни директории. Той никога няма да изтрие файлове.

Най-простият случай е изтриването на една празна директория. Както при rm, можете да предадете множество имена на директории rmdirили път към директория.

Изтрийте една директория в текущата директория, като предадете името й на rmdir:

rmdir директория

Изтрийте множество директории, като предадете списък с имена на   rmdir:

rmdir директория1 директория2 директория3

Изтрийте директория, която не е в текущата директория, като посочите пълния път до нея:

rmdir / път / към / директория

Ако се опитате да изтриете папка, която не е празна, rmdirще ви се появи съобщение за грешка. В следващия пример rmdirуспешно и безшумно изтрива clientsдиректорията, но отказва да изтрие projectsдиректорията, защото съдържа файлове. В projectsуказателя остава точно както е било и файловете в нея, са недокоснати.

Когато 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да игнорирате грешката и преминете към следващата папка тя трябва да процес, което е work/quotes. Това е празна папка и я rmdirизтрива.

Това беше използваната команда.

rmdir --ignore-fail-on-non-empty work / reports / work / quotes

Можете да използвате опцията  -p (родители), за да изтриете директория и да изтриете и нейните родителски директории. Този трик работи, защото rmdirзапочва с целевата директория и след това се връща към родителя. Тази директория вече трябва да е празна, за да може да бъде изтрита от rmdirи процесът се повтаря, като се върне обратно към пътя, който е бил предоставен rmdir.

В следващия пример командата, на която се предава rmdirе:

rmdir -p работа / фактури

Както директориите, така invoicesи workдиректориите се изтриват, както е поискано.

Независимо дали използвате Bash или друга обвивка, Linux предоставя гъвкави и мощни команди за изтриване на директории и файлове направо от командния ред на терминала. Някои хора предпочитат да имат работен процес, който се върти около терминала. Други може да нямат избор по въпроса. Те могат да работят на сървъри без инсталиран GUI или на отдалечена сесия върху безглава система като Raspberry Pi. Тези команди са идеални за тази група хора.

Но какъвто и тип работен процес да предпочетете, тези команди се поддават много добре на включването в скриптове на черупки. Ако скриптът се задейства от cronзадание, това може да помогне за автоматизиране на рутинни домакински задачи, като например изчистване на нежелани регистрационни файлове. Ако разследвате този случай на използване, помнете силата на тези команди, тествайте внимателно всичко и винаги поддържайте скорошно архивиране.