De rm
en rmdir
commando’s verwijderen bestanden en mappen op Linux, macOS en andere Unix-achtige besturingssystemen. Ze zijn vergelijkbaar met de del
en deltree
opdrachten in Windows en DOS. Deze commando’s zijn erg krachtig en hebben nogal wat opties.
Het is belangrijk op te merken dat bestanden en mappen verwijderd zijn met rm
en rmdir
niet naar de prullenbak worden verplaatst. Ze worden onmiddellijk van uw computer verwijderd. Als u per ongeluk bestanden verwijdert met deze opdrachten, kunt u ze alleen herstellen vanaf een back-up.
Hoe bestanden te verwijderen met rm
Het eenvoudigste geval is het verwijderen van een enkel bestand in de huidige directory. Typ de rm
opdracht, een spatie en vervolgens de naam van het bestand dat u wilt verwijderen.
rm file_1.txt
Als het bestand niet in de huidige werkmap staat, geef dan een pad op naar de locatie van het bestand.
rm ./path/to/the/file/file_1.txt
U kunt meer dan één bestandsnaam doorgeven rm
. Hierdoor worden alle gespecificeerde bestanden verwijderd.
rm file_2.txt file_3.txt
Jokertekens kunnen worden gebruikt om groepen bestanden te selecteren die moeten worden verwijderd. De *
staat voor meerdere karakters en de ?
staat voor een enkel teken. Met deze opdracht worden alle png-afbeeldingsbestanden in de huidige werkmap verwijderd.
rm *.png
Met deze opdracht worden alle bestanden verwijderd die een extensie van één teken hebben. Hiermee worden bijvoorbeeld File.1 en File.2 verwijderd, maar niet File.12.
rm *.?
Als een bestand tegen schrijven is beveiligd, wordt u hierom gevraagd voordat het bestand wordt verwijderd. U moet reageren met y
of n
en druk op ‘Enter’.
Om het risico van gebruik te verminderen rm
met jokertekens gebruikt u de -i
(interactieve) optie. Dit vereist dat u het verwijderen van elk bestand bevestigt.
rm -i *.dat
De -f
(force) optie is het tegenovergestelde van interactief. Het vraagt niet om bevestiging, zelfs niet als bestanden tegen schrijven zijn beveiligd.
rm -f filename
Directory’s verwijderen met rm
Om een lege map te verwijderen, gebruikt u de -d
(directory) optie. U kunt jokertekens gebruiken (*
en ?
) in directorynamen net zoals u kunt met bestandsnamen.
rm -d directory
Als u meer dan één mapnaam opgeeft, worden alle opgegeven lege mappen verwijderd.
rm -d directory1 directory2 /path/to/directory3
Om mappen te verwijderen die niet leeg zijn, gebruikt u de -r
(recursieve) optie. Voor alle duidelijkheid: hiermee worden de mappen en alle bestanden en submappen die erin staan verwijderd.
rm -r directory1 directory2 directory3
Als een directory of bestand tegen schrijven is beveiligd, wordt u gevraagd om het verwijderen te bevestigen. Om mappen te verwijderen die niet leeg zijn en om deze prompts te onderdrukken, gebruikt u de -r
(recursief) en -f
(forceer) opties samen.
rm -rf directory
Zorg is hier vereist. Een fout maken met de rm -rf
commando kan gegevensverlies of een systeemstoring veroorzaken. Het is gevaarlijk en voorzichtigheid is het beste beleid. Om inzicht te krijgen in de directorystructuur en de bestanden die worden verwijderd door het rm -rf
commando, gebruik dan de tree
opdracht.
Gebruik apt-get
om dit pakket op uw systeem te installeren als u Ubuntu of een andere op Debian gebaseerde distributie gebruikt. Gebruik op andere Linux-distributies de pakketbeheertool van je Linux-distributie.
sudo apt-get install tree
Het uitvoeren van het tree
commando produceert een eenvoudig te begrijpen diagram van de directorystructuur en bestanden onder de directory van waaruit het wordt uitgevoerd.
tree
U kunt ook een pad naar het tree
commando om ervoor te zorgen dat het de boom start vanuit een andere map in het bestandssysteem.
tree path/to/directory
De rm
commando heeft ook --one-file-system, --no-preserve-root, --preserve-root
opties, maar die worden alleen aanbevolen voor gevorderde gebruikers. Als u iets verkeerd doet, kunt u per ongeluk al uw systeembestanden verwijderen. Raadpleeg de handleidingpagina van het commando voor meer informatie.
Directory’s verwijderen met rmdir
Er is nog een commando, genaamd rmdir
, die u kunt gebruiken om mappen te verwijderen. Het verschil tussen rm
en rmdir
is dat rmdir
kan alleen lege mappen verwijderen. Het zal nooit bestanden verwijderen.
Het eenvoudigste geval is het verwijderen van een enkele lege map. Net als bij rm
, kunt u meerdere directory-namen doorgeven aan rmdir
of een pad naar een directory.
Verwijder een enkele map in de huidige map door de naam door te geven aan rmdir
:
rmdir directory
Verwijder meerdere mappen door een lijst met namen door te geven aan rmdir
:
rmdir directory1 directory2 directory3
Verwijder een map die niet in de huidige map staat door het volledige pad naar die map op te geven:
rmdir /path/to/directory
Als u een map probeert te verwijderen die niet leeg is, rmdir
zal u een foutmelding geven. In het volgende voorbeeld rmdir
verwijdert met succes en stil het clients
directory, maar het weigert de projects
directory omdat het bestanden bevat. De projects
map blijft precies zoals het was en de bestanden erin zijn onaangeroerd.
Wanneer rmdir
geeft een “Directory niet leeg” -fout, het stopt met het verwerken van de mappen die eraan zijn doorgegeven op de opdrachtregel. Als je hem hebt gevraagd om vier mappen te verwijderen en de eerste had bestanden erin, rmdir
zou u de foutmelding geven en niets meer doen. U kunt het dwingen om deze fouten te negeren met de --ignore-fail-on-non-empty
optie zodat andere mappen worden verwerkt.
In het volgende voorbeeld zijn twee mappen doorgegeven rmdir
, dit zijn work/reports
en work/quotes
. De --ignore-fail-on-non-empty
optie is opgenomen in de opdracht. De work/reports
map bevat bestanden, dus rmdir
kan het niet verwijderen. De --ignore-fail-on-non-empty
optie krachten rmdir
om de fout te negeren en door te gaan naar de volgende map die het moet verwerken, namelijk work/quotes
. Dit is een lege map, en rmdir
verwijdert het.
Dit was het commando dat werd gebruikt.
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
U kunt de -p
(ouders) optie om een map te verwijderen en ook de bovenliggende mappen te verwijderen. Deze truc werkt omdat rmdir
begint met de doelmap en gaat vervolgens terug naar de bovenliggende map. Die map zou nu leeg moeten zijn, dus het kan worden verwijderd door rmdir
, en het proces herhaalt zich om terug te gaan op het pad dat werd geboden rmdir
.
In het volgende voorbeeld wordt het commando doorgegeven aan rmdir
is:
rmdir -p work/invoices
Beide invoices
en de work
mappen worden verwijderd, zoals gevraagd.
Of je nu Bash of een andere shell gebruikt, Linux biedt flexibele en krachtige opdrachten waarmee je mappen en bestanden rechtstreeks vanaf de terminalopdrachtregel kunt verwijderen. Sommige mensen geven de voorkeur aan een workflow die draait om de terminal. Anderen hebben misschien geen keus in deze kwestie. Ze werken mogelijk op servers zonder dat een GUI is geïnstalleerd of op een externe sessie op een headless-systeem zoals een Raspberry Pi. Deze commando’s zijn perfect voor die groep mensen.
Maar welk type workflow u ook verkiest, deze commando’s lenen zich uitstekend om in shellscripts te worden opgenomen. Als een script wordt geactiveerd door een cron
job, kan het helpen bij het automatiseren van routinematige huishoudelijke taken, zoals het verwijderen van ongewenste logbestanden. Als u die use case onderzoekt, onthoud dan de kracht van deze opdrachten, test alles zorgvuldig en houd altijd een recente back-up bij.