Hur man tar bort filer och kataloger i Linux-terminalen

Kommandona rm och rmdir tar bort filer och kataloger på Linux, macOS och andra Unix-liknande operativsystem. De liknar kommandona del och deltree i Windows och DOS. Dessa kommandon är mycket kraftfulla och har en hel del alternativ.

Det är viktigt att notera att filer och kataloger som raderas med rm och rmdir inte flyttas till papperskorgen. De tas omedelbart bort från din dator. Om du av misstag tar bort filer med dessa kommandon, är det enda sättet du kan återställa dem från en säkerhetskopia.

Hur man tar bort filer med rm

Det enklaste fallet är att ta bort en enda fil i den aktuella katalogen. Skriv kommandot rm, ett mellanslag och sedan namnet på filen du vill ta bort.

rm file_1.txt

Om filen inte finns i den aktuella arbetskatalogen, ange en sökväg till filens plats.

rm ./path/to/the/file/file_1.txt

Du kan skicka mer än ett filnamn till rm. Om du gör det raderas alla angivna filer.

rm file_2.txt file_3.txt

Jokertecken kan användas för att välja grupper av filer som ska raderas. * representerar flera tecken och ? representerar ett enda tecken. Detta kommando skulle radera alla png-bildfiler i den aktuella arbetskatalogen.

rm *.png

Detta kommando skulle radera alla filer som har ett enda teckentillägg. Till exempel skulle detta radera File.1 och File.2, men inte File.12.

rm *.?

Om en fil är skrivskyddad kommer du att bli tillfrågad innan filen raderas. Du måste svara med y eller n och trycka på ”Enter”.

För att minska risken att använda rm med jokertecken, använd alternativet -i (interaktivt). Detta kräver att du bekräftar raderingen av varje fil.

rm -i *.dat

Alternativet -f (kraft) är motsatsen till interaktiv. Den frågar inte efter bekräftelse även om filerna är skrivskyddade.

rm -f filename

Hur man tar bort kataloger med rm

För att ta bort en tom katalog, använd alternativet -d (katalog). Du kan använda jokertecken (* och ?) i katalognamn precis som du kan med filnamn.

rm -d directory

Om du anger mer än ett katalognamn tas alla angivna tomma kataloger bort.

rm -d directory1 directory2 /path/to/directory3

För att ta bort kataloger som inte är tomma, använd alternativet -r (rekursivt). För att vara tydlig tar detta bort katalogerna och alla filer och underkataloger som finns i dem.

rm -r directory1 directory2 directory3

Om en katalog eller en fil är skrivskyddad kommer du att uppmanas att bekräfta raderingen. För att ta bort kataloger som inte är tomma och för att undertrycka dessa uppmaningar, använd alternativen -r (rekursiv) och -f (force) tillsammans.

rm -rf directory

Här krävs omsorg. Att göra ett misstag med kommandot rm -rf kan orsaka dataförlust eller systemfel. Det är farligt, och försiktighet är den bästa policyn. För att få en förståelse för katalogstrukturen och filerna som kommer att raderas av kommandot rm -rf, använd kommandot träd.

Använd apt-get för att installera det här paketet på ditt system om du använder Ubuntu eller en annan Debian-baserad distribution. På andra Linux-distributioner, använd din Linux-distributions pakethanteringsverktyg istället.

sudo apt-get install tree

Att köra trädkommandot ger ett enkelt att förstå diagram över katalogstrukturen och filerna under katalogen från vilken det körs.

tree

Du kan också ange en sökväg till trädkommandot för att få det att starta trädet från en annan katalog i filsystemet.

tree path/to/directory

Kommandot rm har också –one-file-system, –no-preserve-root, –preserve-root, men de rekommenderas endast för avancerade användare. Om du får något fel kan du av misstag radera alla dina systemfiler. Konsultera kommandots manualsida för mer information.

Hur man tar bort kataloger med rmdir

Det finns ett annat kommando, kallat rmdir, som du kan använda för att ta bort kataloger. Skillnaden mellan rm och rmdir är att rmdir bara kan ta bort kataloger som är tomma. Det kommer aldrig att radera filer.

Det enklaste fallet är att ta bort en enda tom katalog. Som med rm kan du skicka flera katalognamn till rmdir , eller en sökväg till en katalog.

Ta bort en enskild katalog i den aktuella katalogen genom att skicka dess namn till rmdir:

rmdir directory

Ta bort flera kataloger genom att skicka en lista med namn till rmdir:

rmdir directory1 directory2 directory3

Ta bort en katalog som inte finns i den aktuella katalogen genom att ange den fullständiga sökvägen till den katalogen:

rmdir /path/to/directory

Om du försöker ta bort en mapp som inte är tom kommer rmdir att ge dig ett felmeddelande. I följande exempel raderar rmdir framgångsrikt, och tyst, klientens katalog men den vägrar att ta bort projektkatalogen eftersom den innehåller filer. Projektkatalogen lämnas exakt som den var och filerna i den är orörda.

När rmdir ger felet ”Katalog inte tom”, slutar den att bearbeta katalogerna som skickades till den på kommandoraden. Om du har bett den att ta bort fyra kataloger och den första hade filer i sig, skulle rmdir ge dig felmeddelandet och inte göra något mer. Du kan tvinga den att ignorera dessa fel med alternativet –ignore-fail-on-non-empty så att andra kataloger bearbetas.

I följande exempel har två mappar skickats till rmdir, dessa är arbete/rapporter och arbete/citat . Alternativet –ignore-fail-on-non-empty har inkluderats i kommandot. Mappen arbete/rapporter har filer i sig, så rmdir kan inte ta bort den. Alternativet –ignore-fail-on-non-empty tvingar rmdir att ignorera felet och gå vidare till nästa mapp som den behöver bearbeta, vilket är arbete/citat. Detta är en tom mapp och rmdir tar bort den.

Detta var kommandot som användes.

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

Du kan använda alternativet -p (föräldrar) för att ta bort en katalog och för att också ta bort dess överordnade kataloger. Det här tricket fungerar eftersom rmdir börjar med målkatalogen och går sedan tillbaka till föräldern. Den katalogen bör nu vara tom, så den kan tas bort av rmdir, och processen upprepar stegen tillbaka uppåt på sökvägen som gavs till rmdir.

I följande exempel är kommandot som skickas till rmdir:

rmdir -p work/invoices

Både fakturorna och arbetskatalogerna raderas efter önskemål.

Oavsett om du använder Bash eller något annat skal, tillhandahåller Linux flexibla och kraftfulla kommandon för dig att ta bort kataloger och filer direkt från terminalens kommandorad. Vissa människor föredrar att ha ett arbetsflöde som kretsar kring terminalen. Andra kanske inte har något val i frågan. De kan arbeta på servrar utan ett GUI installerat eller på en fjärrsession på ett huvudlöst system som en Raspberry Pi. Dessa kommandon är perfekta för den gruppen människor.

Men vilken typ av arbetsflöde du än föredrar, lämpar sig dessa kommandon mycket väl för att inkluderas i skalskript. Om ett skript utlöses av ett cron-jobb, kan det hjälpa till att automatisera rutinmässiga hushållsuppgifter som att rensa oönskade loggfiler. Om du undersöker det användningsfallet, kom ihåg kraften i dessa kommandon, testa allt noggrant och underhåll alltid en ny säkerhetskopia.