Kommandoene rm
og rmdir
er sentrale verktøy for å fjerne filer og mapper i Linux, macOS og andre Unix-baserte operativsystemer. Disse tilsvarer i stor grad kommandoene del
og deltree
i Windows og DOS. Det er essensielt å forstå at disse kommandoene er svært potente og tilbyr en rekke muligheter for å manipulere filsystemet.
Det er viktig å være oppmerksom på at filer og mapper slettet med rm
og rmdir
ikke havner i en papirkurv. De fjernes permanent fra systemet ditt. Hvis du ved en feiltakelse sletter noe, vil den eneste måten å gjenopprette dataene på, være fra en sikkerhetskopi.
Fjerne Filer med rm
Den enkleste bruken er å slette en enkelt fil i den gjeldende mappen. Skriv rm
, et mellomrom, og filnavnet du ønsker å fjerne.
rm filnavn.txt
Hvis filen ikke ligger i den gjeldende arbeidskatalogen, må du oppgi en sti til filens plassering.
rm ./sti/til/filen/filnavn.txt
Du kan slette flere filer samtidig ved å angi flere filnavn etter kommandoen rm
.
rm fil1.txt fil2.txt
Jokere (wildcards) kan brukes for å velge grupper av filer for sletting. *
representerer et vilkårlig antall tegn, mens ?
står for et enkelt tegn. For eksempel vil følgende kommando fjerne alle PNG-bildefiler i gjeldende mappe:
rm *.png
Denne kommandoen vil slette alle filer med et filnavn som slutter med et enkelt tegn. For eksempel fil.1
og fil.2
, men ikke fil.12
.
rm *.?
Hvis en fil er skrivebeskyttet, vil systemet be deg om bekreftelse før sletting. Du må svare med y
eller n
og trykke «Enter».
For å minske risikoen ved bruk av rm
med jokere, kan du bruke alternativet -i
(interaktivt). Dette krever at du bekrefter slettingen av hver enkelt fil.
rm -i *.dat
Alternativet -f
(force) er motsatt av interaktivt. Det hopper over bekreftelser, selv om filene er skrivebeskyttet.
rm -f filnavn
Fjerne Mapper med rm
For å slette en tom mappe, bruk alternativet -d
(directory). Du kan også bruke jokere (*
og ?
) i mappenavn, på samme måte som med filnavn.
rm -d mappe
Hvis du spesifiserer mer enn ett mappenavn, vil alle de angitte tomme mappene slettes.
rm -d mappe1 mappe2 /sti/til/mappe3
For å slette mapper som ikke er tomme, brukes alternativet -r
(rekursivt). Dette vil fjerne mappen og alle filer og undermapper den inneholder.
rm -r mappe1 mappe2 mappe3
Dersom en mappe eller fil er skrivebeskyttet, vil du bli bedt om bekreftelse før sletting. For å slette mapper som ikke er tomme uten å bli spurt om bekreftelse, kombinerer du alternativene -r
(rekursiv) og -f
(force).
rm -rf mappe
Vær svært forsiktig med denne kommandoen. En feil med rm -rf
kan medføre tap av data eller systemfeil. Det er risikabelt, og forsiktighet er viktig. For å forstå mappestrukturen og filene som vil bli slettet med rm -rf
, bruk kommandoen tree
.
Bruk apt-get
for å installere denne pakken på Ubuntu eller andre Debian-baserte distribusjoner. For andre Linux-distribusjoner, bruk distribusjonens pakkebehandler.
sudo apt-get install tree
Kommandoen tree
gir et lettfattelig diagram over mappestrukturen og filene under mappen den kjøres fra.
tree
Du kan også angi en sti til tree
for å starte treet fra en annen mappe i filsystemet.
tree sti/til/mappe
Kommandoen rm
har også opsjonene --one-file-system
, --no-preserve-root
og --preserve-root
, men disse anbefales kun for erfarne brukere. Hvis noe går galt kan du ved et uhell slette alle systemfilene dine. Se kommandoens manualside for mer informasjon.
Fjerne Mapper med rmdir
Det finnes en annen kommando, rmdir
, som også brukes for å slette mapper. Forskjellen mellom rm
og rmdir
er at rmdir
kun kan slette mapper som er tomme. Den vil aldri slette filer.
Den enkleste bruken er å slette en enkelt tom mappe. På samme måte som med rm
, kan du sende flere mappenavn til rmdir
eller en sti til en mappe.
Slett en enkelt mappe i den gjeldende katalogen ved å sende navnet til rmdir
:
rmdir mappe
Slett flere mapper ved å sende en liste med navn til rmdir
:
rmdir mappe1 mappe2 mappe3
Slett en mappe som ikke er i gjeldende katalog ved å spesifisere hele stien til den mappen:
rmdir /sti/til/mappe
Hvis du forsøker å slette en mappe som ikke er tom, vil rmdir
gi en feilmelding. I det følgende eksemplet vil rmdir
slette katalogen klient
, men den vil nekte å slette katalogen prosjekt
fordi den inneholder filer. Prosjektmappen forblir uendret, og filene i den er urørt.
Når rmdir
gir en feilmelding om at en mappe ikke er tom, slutter den å behandle mappene som ble sendt til den på kommandolinjen. Hvis du har bedt den om å slette fire mapper og den første inneholder filer, vil rmdir
gi en feilmelding og stoppe videre behandling. Du kan tvinge den til å ignorere disse feilene med alternativet --ignore-fail-on-non-empty
, slik at andre mapper blir behandlet.
I eksemplet nedenfor sendes to mapper til rmdir
, arbeid/rapporter
og arbeid/tilbud
. Alternativet --ignore-fail-on-non-empty
er inkludert i kommandoen. Mappen arbeid/rapporter
inneholder filer, og rmdir
kan derfor ikke slette den. Alternativet tvinger rmdir
til å ignorere feilen og gå videre til neste mappe den må behandle, som er arbeid/tilbud
. Denne mappen er tom, og rmdir
sletter den.
Dette er kommandoen som ble brukt.
rmdir --ignore-fail-on-non-empty work/reports work/quotes
Du kan bruke alternativet -p
(parents) for å slette en mappe og dens overordnede mapper. Dette fungerer fordi rmdir
starter med målmappen og deretter beveger seg tilbake til overordnede. Den katalogen skal nå være tom, slik at den kan slettes av rmdir
, og prosessen gjentas ved å gå tilbake i den gitte stien til rmdir
.
I eksemplet under er kommandoen som sendes til rmdir
:
rmdir -p work/invoices
Både fakturaer
– og arbeid
-mappene slettes som ønsket.
Uansett om du bruker Bash eller et annet skall, tilbyr Linux fleksible og kraftige kommandoer for sletting av mapper og filer direkte fra kommandolinjen. Noen foretrekker en arbeidsflyt som er sentrert rundt terminalen. Andre har kanskje ikke noe valg, og arbeider på servere uten et grafisk brukergrensesnitt eller i eksterne økter på et system som en Raspberry Pi. Disse kommandoene er ideelle for denne gruppen.
Men uansett hva slags arbeidsflyt du foretrekker, er disse kommandoene svært nyttige i shell-skript. Hvis et skript utløses av en cron-jobb, kan det automatisere rutinemessige oppgaver som å fjerne uønskede loggfiler. Ved bruk av disse kommandoene i skript, husk deres styrke, test alt grundig, og sørg for å ha en fersk sikkerhetskopi.