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.