Hur man tar bort filer och kataloger i Linux-terminalen

By rik

Kommandona rm och rmdir används i Linux, macOS och andra Unix-liknande system för att radera både filer och kataloger. De kan jämföras med kommandona del och deltree i Windows och DOS. Dessa verktyg är mycket potenta och erbjuder ett brett spektrum av alternativ.

Det är väsentligt att förstå att filer och kataloger som avlägsnas med rm och rmdir inte placeras i papperskorgen. De tas bort permanent från datorns lagring. Om du oavsiktligt raderar filer med dessa kommandon, är det endast från en säkerhetskopia du kan återställa dem.

Radera filer med rm

Det enklaste scenariot är att radera en enskild fil i aktuell arbetskatalog. Använd kommandot rm följt av ett blanksteg och filnamnet.

rm filnamn.txt

Om filen inte finns i din nuvarande katalog, ange hela sökvägen till filens plats.

rm ./sökväg/till/fil/filnamn.txt

Du kan ange flera filnamn till rm, vilket resulterar i att alla listade filer raderas.

rm fil1.txt fil2.txt

Jokertecken kan användas för att välja grupper av filer för radering. * representerar flera tecken och ? ett enda tecken. Följande kommando skulle radera alla PNG-bildfiler i aktuell katalog.

rm *.png

Detta kommando tar bort alla filer med en enda teckenförlängning, som Fil.1 och Fil.2, men inte Fil.12.

rm *.?

Om en fil är skrivskyddad, kommer systemet att begära en bekräftelse innan radering. Du måste svara med y (ja) eller n (nej) och trycka på ”Enter”.

För att minska risken med jokertecken, använd alternativet -i (interaktivt). Då måste du bekräfta varje filradering separat.

rm -i *.dat

Alternativet -f (force) är motsatsen till interaktivt och tvingar borttagningen utan att fråga efter bekräftelse, även om filerna är skrivskyddade.

rm -f filnamn

Radera kataloger med rm

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

rm -d katalog

Om du anger flera katalognamn, kommer alla tomma kataloger att tas bort.

rm -d katalog1 katalog2 /sökväg/till/katalog3

För att radera kataloger som inte är tomma, använd alternativet -r (rekursivt). Detta tar bort katalogen samt alla filer och underkataloger som finns i den.

rm -r katalog1 katalog2 katalog3

Om en katalog eller fil är skrivskyddad kommer du att bli tillfrågad om bekräftelse. För att radera icke-tomma kataloger och samtidigt ignorera dessa förfrågningar, kombinera alternativen -r (rekursiv) och -f (force).

rm -rf katalog

Här krävs stor försiktighet. Ett misstag med rm -rf kan orsaka förlust av data eller systemfel. Det är farligt, så försiktighet är nödvändig. Använd kommandot tree för att få en överblick över katalogstrukturen och filerna som kommer att raderas av rm -rf.

Använd apt-get för att installera tree om du använder Ubuntu eller annan Debian-baserad distribution. På andra Linux-distributioner, använd ditt pakethanteringsverktyg.

sudo apt-get install tree

Kommandot tree ger en tydlig visualisering av katalogstrukturen och filerna under den katalog där det körs.

tree

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

tree sökväg/till/katalog

Kommandot rm har också --one-file-system, --no-preserve-root och --preserve-root, men de rekommenderas endast för avancerade användare. Felaktig användning kan oavsiktligt radera alla systemfiler. Se manualsidan för mer information.

Radera kataloger med rmdir

Ett annat kommando för att radera kataloger är rmdir. Skillnaden mellan rm och rmdir är att rmdir endast kan radera tomma kataloger. Det kommer aldrig att radera filer.

Det enklaste fallet är att ta bort en enskild tom katalog. Precis som med rm, kan du ange flera katalognamn eller sökvägar till kataloger.

Ta bort en enskild katalog i nuvarande katalog genom att ange namnet till rmdir:

rmdir katalog

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

rmdir katalog1 katalog2 katalog3

Ta bort en katalog som inte finns i aktuell katalog genom att ange hela sökvägen till katalogen:

rmdir /sökväg/till/katalog

Om du försöker ta bort en katalog som inte är tom, kommer rmdir att visa ett felmeddelande. I följande exempel lyckas rmdir radera katalogen klienten, men misslyckas med att ta bort katalogen projekt eftersom den innehåller filer. Katalogen projekt lämnas oförändrad.

När rmdir ger felet ”Katalog inte tom”, slutar den att bearbeta de angivna katalogerna. Om du har bett den att ta bort fyra kataloger och den första inte är tom, kommer rmdir att visa felmeddelandet och avbryta. 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å kataloger skickats till rmdir: arbete/rapporter och arbete/offert. Alternativet --ignore-fail-on-non-empty har inkluderats. Katalogen arbete/rapporter innehåller filer, så rmdir kan inte ta bort den. Alternativet tvingar rmdir att ignorera felet och fortsätta till nästa katalog, arbete/offert. Den katalogen är tom och tas därför bort.

Detta var kommandot som användes:

rmdir --ignore-fail-on-non-empty arbete/rapporter /arbete/offert

Du kan använda alternativet -p (parents) för att radera en katalog och dess överordnade kataloger. Detta fungerar eftersom rmdir börjar med målkatalogen och sedan arbetar sig tillbaka till föräldern. Om den katalogen nu är tom, kan den raderas av rmdir och processen upprepas uppåt genom den sökväg som angavs till rmdir.

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

rmdir -p arbete/fakturor

Både katalogerna fakturor och arbete raderas enligt önskemål.

Oavsett om du använder Bash eller ett annat skal, tillhandahåller Linux flexibla och kraftfulla kommandon för att radera kataloger och filer direkt från kommandoraden. Vissa föredrar ett arbetsflöde kring terminalen, medan andra inte har något val, exempelvis på servrar utan GUI eller i fjärrsessioner på headless system som Raspberry Pi. Dessa kommandon är mycket lämpliga i dessa situationer.

Oavsett arbetsflöde, är dessa kommandon mycket användbara i skalskript. Om ett skript triggas av ett cron-jobb, kan det automatisera rutinuppgifter som att rensa oönskade loggfiler. Var medveten om kraften i dessa kommandon, testa noggrant och behåll alltid en aktuell säkerhetskopia.