Opdracht 4 - Linux 101¶
Doel¶
In het OLOD Computer Systems heb je al kennisgemaakt met een aantal commando's van het Linux-besturingssysteem. Als IT'er is het essentieel om met de Command Line Interface (CLI) te kunnen werken. In dit OLOD focussen we specifiek op de CLI van Linux, maar de concepten die je hier leert, zijn ook van toepassing op andere besturingssystemen zoals Windows en macOS.
In deze opdracht herhalen we de basiscommando's en -concepten van de CLI die je nodig hebt om de volgende opdrachten te kunnen uitvoeren. Als je moeilijkheden ondervindt, is het een best practice om zoveel mogelijk de UI te vermijden en de CLI te gebruiken. Dit zal je helpen om vlotter te kunnen werken met de command line.
Na deze opdracht kan je:
- Documentatie raadplegen via de CLI.
- Vlot navigeren binnen een mappenstructuur door middel van absolute en relatieve paden.
- Symbolische en harde links aanmaken en gebruiken.
- Eigenschappen en permissies van bestanden opvragen en wijzigen.
- Extra softwarepakketten installeren.
Opzet¶
Neem deze opdracht stap voor stap door. Voer de commando's uit in de Ubuntu virtuele machine die je hebt opgezet in opdracht 2. Doorheen de opdracht worden verschillende commando's of andere gegevens gevraagd. Probeer het commando of de gevraagde informatie te vinden.
Opstart van de terminal¶
Start jouw Ubuntu virtuele machine en open een terminal. Standaard kom je terecht in de home directory van de gebruiker osboxes.

Wat is het pad van de home directory van de gebruiker osboxes?
Het pad is /home/osboxes.
Alle home directories van de gebruikers op het systeem bevinden zich in /home, met uitzondering van /root voor de root gebruiker.
Hoe heb je dit gevonden?
Met onderstaand commando is een mogelijkheid
Of je weet het pad uit je parate kennis, etc.
Hulp zoeken¶
Voordat we beginnen met de commando's, is het belangrijk om te weten hoe je hulp kan zoeken over een commando. Dit kan je doen door het commando man te gebruiken. man staat voor manual en geeft je de handleiding van een commando.
Zoek de handleiding van het commando man.
| Bash | |
|---|---|
Hoe kan je hulp krijgen over het gebruik van het commando man zonder de man-pagina te gebruiken?
| Bash | |
|---|---|
Natuurlijk kan je ook op het internet zoeken naar hulp. Een handige website is https://explainshell.com/. Hier kan je een commando invoeren en vervolgens krijg je uitleg over de verschillende onderdelen van het commando. Met een zoekmachine vind je ook snel het gezochte commando. Vergeet hierbij niet om de juiste shell op te geven, bijvoorbeeld bash in ons geval.
Hoe kan je zoeken naar alle man-pagina's die het woord copy bevatten? Hiervoor bestaan verschillende manieren. Geef er minstens twee.
Sommige man-pagina's zijn ontzettend groot. Bijvoorbeeld, de man-pagina van bash bevat alle informatie van bash en is zo groot dat het moeilijk wordt om informatie snel terug te vinden.
Hoe kan je zoeken in een man-pagina? Welke toets heb je daarvoor nodig? Zoek eens op hoe je iets in commentaar kan zetten in bash in diens man-pagina. Welke zoekterm kan je hiervoor gebruiken?
Je gebruikt de toets / om het zoeken te starten. Vervolgens typ je de zoekterm en druk je op Enter.
Zoeken naar commentaar in bash kan je doen met de zoekterm comment, m.a.w.:
Hoe kan je naar het volgende en vorige resultaat van jouw zoekopdracht springen? Welke toetsen heb je daarvoor nodig?
Om naar het volgende resultaat te springen, gebruik je de toets n. Om naar het vorige resultaat te springen, gebruik je de toets N.
Navigeren in de directory structuur¶
Op Linux bestaat er geen onderscheid tussen bestanden en mappen. Een directory is een speciaal type bestand dat een lijst van bestandsnamen bevat. Een bestand kan een gewoon bestand zijn, een directory, een link, een apparaat, een socket, een pipe, enzovoort. Hierover volgt nog meer in een volgend hoofdstuk.
In welke map bevind je je momenteel? Welk commando heb je hiervoor gebruikt?
Normaal bevind je je nog in /home/osboxes.
Je vindt het pad van de huidige map met het commando pwd.
Navigeer naar de map /etc met behulp van de CLI. Welk commando heb je hiervoor gebruikt?
| Bash | |
|---|---|
Lijst alle bestanden en mappen op in de map /etc. Welk commando heb je hiervoor gebruikt?
| Bash | |
|---|---|
Breid het vorige commando uit zodat je ook de verborgen bestanden en mappen ziet, en zodat je een lange lijst krijgt met o.a. bestandsrechten, eigenaar, groep, grootte, enzovoort. Welk commando heb je hiervoor gebruikt?
| Bash | |
|---|---|
Eventueel kan je ls -lah gebruiken om de bestandsgroottes in human-readable formaat te krijgen.
Keer met een zo kort mogelijk commando terug naar de home directory van de gebruiker osboxes. Welk commando heb je hiervoor gebruikt?
| Bash | |
|---|---|
cd zonder argumenten keert terug naar de home directory van de huidige gebruiker.
Keer nu met een zo kort mogelijk commando terug naar de map waar je net was zonder het pad /etc te gebruiken. Welk commando heb je hiervoor gebruikt?
| Bash | |
|---|---|
cd met "-" als argument keert terug naar de vorige map.
Je hebt nu waarschijnlijk al heel wat commando's uitgevoerd. Je kan deze commando's opnieuw oproepen met de pijltjestoetsen omhoog en omlaag. Dit is handig als je een commando wil herhalen of aanpassen. Je complete commandohistoriek kan je trouwens eenvoudig opvragen met het commando history. Probeer dit even uit.
De beste sneltoets om commando's uit het verleden te hergebruiken is Ctrl + r, ook wel reverse-search-history genoemd:
- Druk
Ctrl+rin. - Voer de zoekterm in (bijv.
ec,echoofcho... om eenechocommando terug te vinden). Een eerste resultaat verschijnt. - Is het eerste resultaat niet wat je zocht? Druk nogmaals
Ctrl+rom verder terug te zoeken in het verleden naar jouw commando. Blijf dit herhalen tot je het commando gevonden hebt. - Heb je het commando gevonden? Druk dan op
Enterom het uit te voeren. Vind je jouw commando niet en wil jereverse-search-historyverlaten? Gebruik danEscofCtrl+c.
Tip: Ctrl + r werkt ook in Windows Powershell CLI terminals!
Misschien wil je ook het scherm leegmaken. Dit kan je doen met het commando clear of met de sneltoets Ctrl + l.
Wat is het verschil tussen clear en Ctrl + l?
Ctrl + l zorgt er enkel voor dat de prompt bovenaan de terminal (of het scherm) komt te staan. Je kan nog steeds naar boven scrollen om vorige commando's te zien.
Het commando clear daarentegen verwijdert effectief de geschiedenis van het scherm, je kan dus niet meer naar boven scrollen. Je kan wel vorige commando's nog oproepen via de pijltjestoetsen, Ctrl + r...
Absolute en relatieve paden¶
Voer de volgende commando's uit in je home directory:
| Bash | |
|---|---|
Deze commando's maken een aantal bestanden en mappen aan in de home directory van de gebruiker osboxes. We gaan nu deze bestanden en mappen verplaatsen, kopiΓ«ren, hernoemen en verwijderen.
Ga naar de map opdracht-3.
Hoe kan je in één oogopslag (als boomstructuur) zien welke bestanden en mappen er in de map opdracht-3 staan? Mogelijk moet je hiervoor een pakket installeren.
Hoe print je het relatieve pad (vanuit opdracht-3) van alle words.txt-bestanden? Gebruik find.
find is een zeer flexibel commando, zeker omdat je per resultaat een actie kan uitvoeren. Wat je niet kan met find, is zoeken op de inhoud van bestanden. Dit kan wel met het commando grep.
Hoe zoek je in opdracht-3 recursief naar alle bestanden die de string ASCI bevatten?
Navigeer naar de map opdracht-3/a/b. Geef het absolute pad naar deze map. Geef vervolgens het relatieve pad, vertrekkende van de home directory van de gebruiker osboxes, naar deze map.
Absoluut pad: /home/osboxes/opdracht-3/a/b
Relatief pad: ./opdracht-3/a/b
Navigeer nu met behulp van een relatief pad naar de map opdracht-3/a/d/e. Kopieer hier het bestand words.txt vanuit de map opdracht-3/a/c/e naartoe. Gebruik enkel relatieve paden. Welke commando's gebruik je hiervoor?
Hernoem dit bestand naar ietsanders.txt. Welk commando gebruik je hiervoor?
| Bash | |
|---|---|
Verplaats ietsanders.txt naar de map opdracht-3/a/c/f. Gebruik enkel relatieve paden. Welk commando gebruik je hiervoor?
| Bash | |
|---|---|
Verwijder nu het bestand opdracht-3/a/c/f/ietsanders.txt. Welk commando gebruik je hiervoor?
| Bash | |
|---|---|
Grote bestanden¶
Op Linux is vaak een bestand met woorden uit bijvoorbeeld het Brits Engels of het Nederlands aanwezig (soms moet je hiervoor nog een pakket installeren). Deze bestanden staan in de map /usr/share/dict.
Bekijk het bestand /usr/share/dict/words eerst met cat.
Past het volledige bestand in jouw terminal zonder te scrollen?
| Bash | |
|---|---|
Het bestand is te groot om op één scherm te tonen. Je moet scrollen doorheen de geschiedenis van de terminal.
Je kan niet in elke terminal scrollen, in dat geval moet je gebruik maken van less.
Hoe open je het bestand met less?
| Bash | |
|---|---|
Hoe scroll je meteen een heel scherm verder?
Druk op de spatiebalk.
Hoe zoek je naar een bepaalde tekst? Hoe navigeer je door de zoekresultaten?
Je gebruikt de toets / om het zoeken te starten. Vervolgens typ je de zoekterm en druk je op Enter.
Om naar het volgende resultaat te springen, gebruik je de toets n. Om naar het vorige resultaat te springen, gebruik je de toets N.
Bij welk ander commando kan je ook deze toetsen gebruiken?
Hoe verlaat je deze weergave?
Druk op q.
Sommige commando's kunnen meer output geven dan op één scherm past, zoals bijvoorbeeld ls -al /etc.
Hoe kan je de output van dit commando doorgeven aan less met een pipe om door de output te kunnen scrollen?
| Bash | |
|---|---|
Dit is een voorbeeld van een pipe. Met een pipe kan je de output van het ene commando doorgeven aan het andere commando.
less is een zogenaamde pager. Een pager is een programma dat de output van een ander programma toont en je toelaat om door de output te scrollen. less is een verbeterde versie van more en laat je toe om zowel vooruit als achteruit te scrollen.
man gebruikt less, dus je zal merken dat veel toetsen dezelfde functie hebben bij man en less.
Nano¶
Voer de volgende commando's uit en zorg ervoor dat je begrijpt wat ze doen:
Als we het bestand test.txt willen aanpassen, kunnen we hiervoor op de CLI een teksteditor gebruiken. Er zijn op Linux standaard verschillende editors beschikbaar zoals vi of vim, en nano. De vi-familie teksteditors zijn zeer krachtig, maar niet eenvoudig om mee te beginnen. Deze gaan we dus hier niet gebruiken. Mocht je toch in vi of vim terechtkomen, dan kan je deze afsluiten met de volgende toetsenreeks: esc, :, q, !. Wij gaan hier even kort kijken naar nano: je kan er niet zoveel mee als met vi, maar het is wel intuΓ―tiever te gebruiken.
Open het test.txt bestand met nano. Welk commando gebruik je hiervoor?
| Bash | |
|---|---|

Je ziet onderaan de toetsencombinaties die je kan gebruiken. In de Linux-wereld is ^ het symbool voor ctrl en M- het symbool voor alt. Bijvoorbeeld, ^c is gelijk aan het tegelijkertijd indrukken van ctrl en c, en M-c is gelijk aan het tegelijkertijd indrukken van alt en c.
Probeer het bestand test.txt aan te passen zodat het bestand nu Hi world! bevat, sla het op en verlaat nano.
Welke toetsencombinaties heb je hiervoor gebruikt?
^o en Enter om op te slaan. Daarna ^x om nano te verlaten.
Links¶
Symbolische Links¶
Op Linux is dikwijls een bestand met woorden uit bv. het Brits Engels of het Nederlands aanwezig (soms moet je hiervoor nog een pakket installeren). Deze bestanden staan in de map /usr/share/dict. Navigeer naar deze map en bekijk de inhoud hiervan.
Navigeer naar de map /usr/share/dict/ en bekijk de inhoud hiervan. Wat valt je op als je de eigenschappen van het bestand words bekijkt?
Je zal zien dat bepaalde bestanden met een pijltje verwijzen naar een ander bestand. Dit zijn snelkoppelingen of links naar een ander bestand.
Vooraan zo'n bestand zal je bij het commando ls -l ook altijd een "l" zien staan. Deze letter duidt op een link.
Bestanden zoals /usr/share/dict/words noemen we symbolische links. Dit zijn als het ware snelkoppelingen naar een ander bestand. Zo kan je eenzelfde bestand op meerdere plekken op je systeem beschikbaar maken door simpelweg naar het originele bestand te verwijzen.
Maak een link naar een bestand uit de map /usr/share/dict in opdracht-3/a/c/f. Je mag zelf kiezen welk bestand. Zorg ervoor dat je een symbolische link aanmaakt!
Welk commando heb je gebruikt? Gebruik een relatief pad voor het bestand uit de map /usr/share/dict en een absoluut pad voor het bestand in de map opdracht-3/a/c/f.
| Bash | |
|---|---|
Navigeer terug naar de map opdracht-3/a/c/f en print de eerste en laatste 20 regels van jouw aangemaakte bestand in opdracht-3/a/c/f.
Welke commando's heb je gebruikt? Werkt dit?
| Bash | |
|---|---|
Dit werkt duidelijk niet. Bij links worden relatieve paden altijd gevolgd vanaf de map waarin de link staat. In dit geval hebben we dus een lus gecreΓ«erd.
Verwijder de link uit opdracht-3/a/c/f. Maak de link opnieuw en gebruik voor voor het eerste argument een absoluut pad. Print vervolgens opnieuw de eerste en laatste 20 regels van jouw aangemaakte bestand in opdracht-3/a/c/f.
Welke commando's heb je gebruikt? Werkt dit nu wel?
| Bash | |
|---|---|
Nu werkt het wel!
Verwijder de map opdracht-3/a/d en maak een symbolische link met de naam opdracht-3/a/d naar de map opdracht-3/a/c. Gebruik nu wel een relatief pad voor het eerste argument van ln. Zorg dat je ook effectief naar de map opdracht-3/a/d kan navigeren.
Maak nu een symbolische link met de naam opdracht-3/a/c/f/woorden naar opdracht-3/a/b/e/words.txt. Hernoem nu opdracht-3/a/b/e/words.txt naar opdracht-3/a/b/e/words2.txt.
Welke commando's heb je gebruikt?
Je zou vanuit de map opdracht-3 een gelijkaardige uitvoer van het tree -l commando moeten krijgen:
Print de eerste 20 regels via de symbolische link opdracht-3/a/c/f/woorden.
Wat merk je op?
| Bash | |
|---|---|
De link woorden is kapot omdat we het originele bestand hernoemd hebben.
Wat zie je als je het commando ls uitvoert op de aangemaakte link?
| Bash | |
|---|---|
De link wordt in het rood geprint op het scherm. Dit wijst erop dat de link niet meer werkt.
Links die wijzen naar ongeldige bestandsnamen worden gebroken links genoemd.
Harde links¶
Terwijl symbolische links wijzen naar de bestandsnaam, kunnen we ook harde links aanmaken die wijzen naar de effectieve inhoud van een ander bestand.
Maak een harde link met de naam opdracht-3/a/c/e/words2.txt naar opdracht-3/a/b/e/words2.txt.
Vanuit de map opdracht-3 zou je een gelijkaardige uitvoer van het tree -l commando moeten krijgen:
Zie je een verschil tussen de harde link en symbolische links?
Ja, bij een symbolische link zie je een effectieve verwijzing naar het originele bestand. Bij een hard link zie je dit niet, het valt dus niet meteen op dat het bestand een link is.
Hernoem nu opdracht-3/a/b/e/words2.txt naar opdracht-3/a/b/e/words3.txt.
Je zou een gelijkaardige uitvoer van het tree -l commando moeten krijgen:
Print de eerste 20 regels via de harde link opdracht-3/a/c/e/words2.txt. Wat merk je op?
We krijgen de eerste 20 lijnen van het bestand opdracht-3/a/b/e/words3.txt te zien.
Waarin verschilt dit met de symbolische link opdracht-3/a/c/f/woorden?
Een symbolische link is gebroken indien je het originele bestand verwijdert, hernoemt, verplaatst... Een harde link houdt een referentie bij naar de inode van het bestand, dit is een referentie op een dieper niveau. Dit komt in een later hoofdstuk nog uitgebreid aan bod.
Hernoem nu terug opdracht-3/a/b/e/words3.txt naar opdracht-3/a/b/e/words.txt, zodat zowel de harde links als de symbolische links allemaal werken. Test dit uit om zeker te zijn dat alles werkt.
Welke commando's heb je gebruikt?
Nu zouden alle links terug moeten werken.
Voer het commando tree -l --inodes uit. Hierdoor kan je de inodes zien van de bestanden en mappen.
Wat merk je op bij de harde links, symbolische links en de bestanden waar ze naar wijzen? Komt dit overeen met jouw kennis van harde en symbolische links? Merk je een verschil op tussen harde en symbolische links naar hetzelfde bestand?
Hard links delen dezelfde inode, symbolische links krijgen zelf een nieuwe inode toegekend.
Hard links verwijzen dus onmiddellijk naar het originele bestand, symbolische links verwijzen hiernaar via een omweg (= via een nieuw bestand).
Permissies¶
Op Linux kan je de permissies van een bestand instellen voor de eigenaar, de groepseigenaar en voor anderen (die dus geen (groeps)eigenaar zijn).
Hoe bekijk je de permissies van alle bestanden met de extensie txt in de map opdracht-3?
Wat stellen deze permissies voor?
Je ziet -rw-rw-r-- bij elk bestand. Het 1e karakter duidt het type bestand aan, bv. een gewoon bestand (-), een link (l), een map (d)...Vervolgens heb je drie groepjes van drie karakters. Deze stellen de permissies voor respectievelijk de eigenaar, groepseigenaar en anderen voor.
Deze groepen van permissies kunnen 3 letters bevatten:
- r: read (= lezen)
- w: write (= schrijven)
- x: execute (= uitvoeren)
Naast de permissies staan respectievelijk de gebruikersnaam van de eigenaar en de groepsnaam van de groepseigenaar.
Zorg ervoor dat bestand2.txt en bestand4.txt alleen lees- en schrijfrechten hebben voor de eigenaar. De groepseigenaars en andere gebruikers krijgen geen enkele permissie. Met het ls commando zou je -rw------- moeten zien. Dit kan met twee aparte commando's, maar ook met één commando. Zoek naar "Brace expansion" in de man-pagina van bash.
Welke commando's heb je gebruikt?
Geef vervolgens alle txt-bestanden met een oneven getal de schrijfpermissie voor andere gebruikers. Met het ls commando zou je -rw-rw-rw- moeten zien. Dit kan opnieuw met één commando.
Als alles goed is verlopen, zou het eerste commando van deze sectie een gelijkaardige uitvoer moeten geven:
| Text Only | |
|---|---|
CPU verbruik bekijken¶
Soms wil je graag weten wat er allemaal gebeurt op een systeem. Een commando dat je hiervoor kan gebruiken is top.
Welk proces gebruikt op dit moment het meeste CPU?
Het antwoord hangt af van je eigen systeem. Het commando top sorteert standaard van groot naar klein op CPU gebruik.
top vind je op bijna elk Linux-systeem, maar is vrij basic. Wil je graag wat meer details zien, dan kan je eens htop installeren. Dit is al iets visueler.
Wat zie je bij htop dat je niet kon zien met top?
Verschil met top:
Er is een visuele weergaven van CPU en RAM verbruik, ook wordt het nu in kleur weergegeven.
Wil je nog meer details en grafieken in de terminal weergeven? Dan kan je eens btop proberen.
Wat zie je bij btop dat je niet kon zien met htop?
Verschil met htop:
De grafieken zijn nog visueler uitgebouwd dan htop. Ook zijn er nu grafieken toegevoegd voor netwerk-, en opslagverbruik.
Opruimen¶
We kunnen nog heel lang doorgaan met basiscommando's en -concepten uit Linux. Tenslotte moet je alles leren door het gewoon te doen en door de terminal niet te vermijden.
Verwijder als laatste in één keer de map opdracht-3 met alle bestanden en submappen.
Staat het gekozen words-bestand van de symbolische link nog steeds in de map /usr/share/dict?
Ja. Als je een symbolische link verwijdert, dan wordt het originele bestand niet verwijderd. Dit is wel zo bij een hard link.