In het vorige hoofdstuk leerde je navigeren door het bestandssysteem. Nu ga je zelf bestanden en mappen aanmaken.
Het commando touch maakt een leeg bestand aan. Als het bestand al bestaat, wordt alleen de tijdstempel bijgewerkt.
touch mijnbestand.txt
Je kunt ook meerdere bestanden tegelijk aanmaken:
touch bestand1.txt bestand2.txt bestand3.txt
Het commando mkdir (make directory) maakt een nieuwe map aan:
mkdir mijnmap
Met de optie -p kun je een hele padstructuur in een keer aanmaken, inclusief tussenliggende mappen die nog niet bestaan:
mkdir -p projecten/2024/januari
Maak een nieuw leeg bestand aan met de naam test.txt in je thuismap.
Maak een nieuwe map aan met de naam oefeningen in je thuismap.
Je wilt drie lege bestanden tegelijk aanmaken: a.txt, b.txt en c.txt. Doe dit in een enkel commando.
Maak de volgende mappenstructuur aan in een enkel commando: school/vakken/linux. De tussenliggende mappen school en vakken bestaan nog niet en moeten automatisch mee aangemaakt worden.
Maak een map verslagen aan in je thuismap en maak daarin meteen een bestand verslag1.txt aan. Voer beide acties uit in een enkele regel.
Nu je bestanden en mappen kunt aanmaken, leer je ze kopieren en verplaatsen.
Het commando cp (copy) kopieert een bestand:
cp bron.txt doel.txt
Om een volledige map met inhoud te kopieren, gebruik je de optie -r (recursive):
cp -r bronmap doelmap
Het commando mv (move) verplaatst een bestand of map. Het wordt ook gebruikt om te hernoemen:
mv oud.txt nieuw.txt # hernoemen
mv bestand.txt Documents/ # verplaatsen naar andere map
Bij mv heb je geen -r nodig voor mappen -- het verplaatst de hele map in een keer.
Kopieer het bestand Documents/readme.txt naar je thuismap en geef de kopie de naam kopie.txt.
Het bestand Documents/notes.md moet hernoemd worden naar Documents/notities.md. Het originele bestand mag daarna niet meer bestaan.
Maak een volledige kopie van de map projects/website (inclusief alle bestanden erin) naar een nieuwe map projects/website_backup.
Maak een nieuw bestand todo.txt aan in je thuismap en verplaats het daarna naar de map Documents. Het bestand mag na afloop niet meer in je thuismap staan. Doe dit in een enkele regel.
Kopieer het bestand Documents/readme.txt naar de map Downloads, maar geef het daar de naam info.txt. Het origineel moet blijven staan. Doe dit in een enkel commando.
Verplaats de volledige map projects/website naar de map Documents. Na afloop moet Documents/website/index.html bestaan en mag de oorspronkelijke locatie niet meer bestaan.
Je kunt nu bestanden aanmaken, kopieren en verplaatsen. Nu leer je hoe je ze verwijdert. Wees voorzichtig: in Linux is er standaard geen prullenbak. Wat je verwijdert, is weg.
rm bestand.txt
Om een map met inhoud te verwijderen:
rm -r mapnaam
Het commando rmdir verwijdert alleen lege mappen. Dit is veiliger dan rm -r:
rmdir legeMap
Het commando rm -rf verwijdert alles zonder bevestiging. De -f (force) onderdrukt waarschuwingen. Dit is het gevaarlijkste commando in Linux:
rm -rf / # NOOIT DOEN -- verwijdert het hele systeem!
Gebruik rm -rf alleen als je zeker weet wat je doet.
Het bestand Documents/readme.txt is niet meer nodig. Verwijder het.
Maak een lege map temp aan en verwijder deze daarna weer. De map is leeg, dus je kunt een veilige methode gebruiken die alleen lege mappen verwijdert. Gebruik twee commando's met &&.
De map projects/website bevat meerdere bestanden en is niet meer nodig. Verwijder de hele map inclusief alles wat erin staat.
Maak een map testmap aan met daarin een bestand data.txt. Verwijder vervolgens de hele map inclusief inhoud. Doe alles in een enkele regel.
In de map projects/website staan twee bestanden: style.css en index.html. Verwijder alleen style.css en laat index.html intact.
Tot nu toe heb je steeds exacte bestandsnamen getypt. Met wildcards (ook wel globbing genoemd) kun je patronen gebruiken om meerdere bestanden tegelijk te selecteren.
| Wildcard | Betekenis | Voorbeeld |
|----------|-----------|-----------|
| * | Nul of meer willekeurige tekens | *.txt -- alle .txt-bestanden |
| ? | Precies een willekeurig teken | bestand?.txt -- bestand1.txt, bestandA.txt |
| [abc] | Een van de opgegeven tekens | bestand[123].txt -- bestand1.txt, bestand2.txt, bestand3.txt |
| [a-z] | Een bereik van tekens | [a-c]*.txt -- bestanden die beginnen met a, b of c |
| [!abc] | Niet een van deze tekens | bestand[!1].txt -- alles behalve bestand1.txt |
Wildcards worden door de shell uitgebreid voordat het commando ze ziet. Ze werken met ls, cp, mv, rm en vrijwel elk ander commando.
Er staan diverse bestanden in de map Documents. Toon een lijst van alleen de bestanden die eindigen op .txt.
Er staan meerdere bestanden in je thuismap. Toon een lijst van alleen de bestanden die beginnen met rapport en eindigen op .txt.
Er staan bestanden log1.txt tot en met log5.txt en ook log10.txt in je thuismap. Toon alleen de logbestanden waarvan er precies een teken staat tussen log en .txt (dus log10.txt mag niet in de lijst staan).
Er staan vier bestanden in je thuismap: verslag_a.txt, verslag_b.txt, verslag_c.txt en verslag_x.txt. Toon alleen de verslagen a, b en c, maar niet x.
Kopieer alle .txt-bestanden uit de map Documents naar de map Downloads in een enkel commando. Gebruik een wildcard-patroon zodat je niet elk bestand apart hoeft te noemen.
Er staan genummerde bestanden in je thuismap: tmp_1.dat tot en met tmp_5.dat, plus tmp_8.dat en tmp_9.dat. Verwijder alleen de bestanden met nummers 1 tot en met 5 en laat de rest staan. Doe dit in een enkel commando.
In dit hoofdstuk heb je geleerd hoe je bestanden en mappen beheert in Linux:
touch maakt lege bestanden aan. Je kunt meerdere bestanden tegelijk aanmaken.mkdir maakt mappen aan. Met -p maak je een hele padstructuur in een keer.cp kopieert bestanden. Met -r kopieer je mappen inclusief inhoud.mv verplaatst bestanden en mappen, en wordt ook gebruikt om te hernoemen.rm verwijdert bestanden. Met -r verwijder je mappen met inhoud. Wees zeer voorzichtig met rm -rf.rmdir verwijdert alleen lege mappen en is daardoor veiliger.* -- nul of meer willekeurige tekens? -- precies een willekeurig teken[abc] -- een van de opgegeven tekens[a-z] -- een bereik van tekens[!abc] -- niet een van deze tekensMet deze commando's heb je volledige controle over het aanmaken, kopieren, verplaatsen en verwijderen van bestanden en mappen. In het volgende hoofdstuk leer je hoe je de inhoud van bestanden bekijkt en bewerkt.