Les 2
Bestanden en mappen
Bestanden en mappen maken, kopiëren, verplaatsen en verwijderen, en wildcards gebruiken.
🎯 Na deze les kun je
- bestanden en mappen beheren met mkdir, cp, mv en rm
- wildcards gebruiken
- de mappenstructuur van Linux (FHS) uitleggen
In les 1 heb je rondgelopen door het bestandssysteem. Nu ga je het zelf inrichten: mappen maken, bestanden kopiëren, verplaatsen, hernoemen en verwijderen. Op de commandline gaat dat vaak sneller dan met een muis, vooral als het om veel bestanden tegelijk gaat. Met wildcards verplaats je in één commando alle foto's uit een map. Maar met dezelfde kracht gooi je in één commando ook alles weg. Daarom leer je in deze les ook voorzichtig te werken.
Mappen en lege bestanden maken
mkdir projecten
mkdir -p projecten/website/css
touch notities.txt
ls -R projecten
projecten:
website
projecten/website:
css
projecten/website/css:
mkdir(make directory) maakt een map.mkdir -pmaakt ook alle tussenliggende mappen aan, en geeft geen fout als de map al bestaat.touchmaakt een leeg bestand (of werkt de tijd bij van een bestaand bestand).ls -Rtoont de inhoud recursief: ook alle submappen.
Kopiëren met cp
cp notities.txt notities.bak # kopie met een andere naam
cp notities.txt projecten/ # kopie in een andere map
cp -r projecten projecten-backup # een hele map kopiëren
cp bron doel: eerst wat je kopieert, dan waarheen. Een map kopiëren kan alleen met -r (recursive). Zonder -r krijg je cp: -r not specified; omitting directory 'projecten'.
Bestaat het doelbestand al, dan overschrijft cp het zonder te vragen. Met cp -i (interactive) vraagt het eerst om bevestiging.
Verplaatsen en hernoemen met mv
Linux kent geen apart commando om te hernoemen. Hernoemen is verplaatsen naar een nieuwe naam:
mv notities.bak oud.txt # hernoemen
mv oud.txt projecten/ # verplaatsen naar een map
mv projecten/oud.txt ~/archief.txt # verplaatsen én hernoemen
Net als cp overschrijft mv zonder waarschuwing; mv -i vraagt het eerst. Voor mappen heeft mv geen -r nodig.
Verwijderen met rm en rmdir
rm archief.txt # een bestand verwijderen
rmdir lege-map # een LEGE map verwijderen
rm -r projecten-backup # een map met alle inhoud verwijderen
rmdir weigert als de map niet leeg is (Directory not empty). Dat is een veiligheid. rm -r verwijdert alles eronder.
Op de commandline bestaat geen prullenbak. Wat rm verwijdert, is weg.
Wildcards
Met wildcards (jokertekens) beschrijf je een groep bestandsnamen:
| Wildcard | Betekent | Voorbeeld | Past op |
|---|---|---|---|
* |
nul of meer willekeurige tekens | *.jpg |
foto1.jpg, vakantie.jpg |
? |
precies één teken | factuur-2026-0?.pdf |
factuur-2026-01.pdf t/m -09 |
[abc] |
één van deze tekens | foto[12].jpg |
foto1.jpg, foto2.jpg |
{a,b} |
elk van deze woorden | mkdir {fotos,facturen} |
maakt twee mappen |
Neem een rommelige downloadmap:
$ ls
factuur-2026-01.pdf foto1.jpg notities.txt vakantie.JPG
factuur-2026-02.pdf foto2.jpg setup.exe
$ ls *.jpg
foto1.jpg foto2.jpg
vakantie.JPG doet niet mee: Linux is hoofdlettergevoelig (les 1). Met *.[jJ][pP][gG] vang je beide schrijfwijzen.
Belangrijk om te snappen: niet het commando, maar de shell vult de wildcard in. Je typt ls *.jpg, maar de shell maakt daar ls foto1.jpg foto2.jpg van, en pas dan start ls. Daarom werken wildcards bij elk commando.
Twijfel je wat een wildcard raakt? Kijk eerst met ls of echo: echo *.jpg laat precies zien welke namen de shell invult. Pas daarna vervang je ls door mv of rm.
De Linux-mappenboom (FHS)
In les 1 zag je al een paar mappen onder /. Hun indeling ligt vast in de Filesystem Hierarchy Standard (FHS), zodat je op elke Linux-machine weet waar je moet zoeken:
| Map | Inhoud |
|---|---|
/bin, /usr/bin |
programma's voor iedereen (ls, cp) |
/sbin, /usr/sbin |
programma's voor systeembeheer |
/etc |
configuratiebestanden (les 5) |
/home |
thuismappen van gebruikers |
/root |
thuismap van de beheerder root |
/var |
gegevens die veranderen: logs (/var/log), websites (/var/www), databases |
/tmp |
tijdelijke bestanden, vaak gewist bij herstart |
/usr |
geïnstalleerde software en bibliotheken |
/opt |
losse software van derden |
/dev |
apparaten als bestanden (schijven, /dev/null) |
/proc |
informatie over draaiende processen, gemaakt door de kernel (les 6) |
/mnt, /media |
koppelpunten voor extra schijven en USB-sticks (les 13) |
Op moderne systemen zijn /bin en /sbin vaak verwijzingen naar /usr/bin en /usr/sbin; het maakt voor jou geen verschil.
Typische fout: rm -r zonder nadenken
De gevaarlijkste combinatie op de commandline is rm -r met een wildcard of een variabele. Een paar echte valkuilen:
- Een spatie te veel.
rm -r oud *in plaats vanrm -r oud*verwijdert de mapouden alles in de huidige map. - Verkeerde map. Je denkt dat je in
~/downloadsstaat, maar je staat in~. Controleer metpwdvoordat je met wildcards verwijdert. rm -rf. De-f(force) zet alle waarschuwingen uit. Gebruik het alleen als je precies weet wat je doet.
Een veilige werkwijze:
pwd: sta ik waar ik denk?ls patroon: wat raakt dit patroon precies?- Pas dan
rm, en bij twijfelrm -i.
Oefenen
Oefening 1. Maak in één commando de mappen school/wiskunde, school/engels en school/informatica.
Modelantwoord oefening 1
mkdir -p school/{wiskunde,engels,informatica}
De accolades maken er drie paden van; -p maakt school er vanzelf bij.
Oefening 2. In een map staan rapport-v1.docx, rapport-v2.docx, rapport-v10.docx en rapport-def.docx. Welke bestanden raakt rapport-v?.docx? En rapport-v*.docx?
Modelantwoord oefening 2
rapport-v?.docx: alleen rapport-v1.docx en rapport-v2.docx (? is precies één teken). rapport-v*.docx: ook rapport-v10.docx. rapport-def.docx doet bij geen van beide mee.
Oefening 3. Wat is het verschil tussen cp map nieuwe-map en cp -r map nieuwe-map? En wat doet mv map nieuwe-map?
Modelantwoord oefening 3
cp map nieuwe-map weigert: zonder -r kopieert cp geen mappen. cp -r kopieert de map met alle inhoud; het origineel blijft bestaan. mv hernoemt de map naar nieuwe-map (bestaat nieuwe-map al als map, dan wordt map daarin geplaatst).
Lab: een rommelige downloadmap opruimen
- Start het lab:
docker run -it --rm registry.wizg.it/webhosting/beetje-labs:les2. - In
~/downloadsstaan tientallen bestanden door elkaar: foto's (.jpgen.JPG), pdf's, installatiebestanden (.exe,.deb) en tekstbestanden. - Maak in je thuismap de mappen
opgeruimd/fotos,opgeruimd/documentenenopgeruimd/software. - Verplaats met wildcards elk soort bestand naar de juiste map. Controleer eerst met
lswat je patroon raakt. - Maak een kopie van alle facturen (
factuur-*.pdf) inopgeruimd/belasting. - Verwijder de lege map
~/downloadsmetrmdir(lukt dat niet, dan is hij nog niet leeg). - Controleer met
beetje check les2.
Samenvatting
mkdir -pmaakt mappen (ook tussenliggende),touchmaakt een leeg bestand.cp bron doelkopieert (-rvoor mappen),mvverplaatst of hernoemt,rmverwijdert (-rvoor mappen),rmdirverwijdert alleen lege mappen.cpenmvoverschrijven zonder te vragen;-ivraagt eerst.rmheeft geen prullenbak.- Wildcards
*,?,[ ]en{ }worden door de shell ingevuld. Kijk eerst metlsofechowat ze raken. - De FHS bepaalt waar wat staat: configuratie in
/etc, logs in/var/log, programma's in/usr/bin.
In les 3 ga je in bestanden kijken en zoeken, en commando's aan elkaar koppelen met pipes.
Lab
Een rommelige downloadmap opruimen
💻 Dit lab doe je op je eigen computer met Docker. Start de lab-container met (geeft de opdracht een eigen startcommando, gebruik dan dat):
$ docker run -it --rm registry.wizg.it/webhosting/beetje-labs:les2
Klaar? Controleer je werk met:
$ beetje check les2