Cover
Start nu gratis LinuxEssentials.pdf
Summary
# Inleiding tot Linux en Unix
Dit onderwerp introduceert de oorsprong van Linux en Unix, hun ontwikkeling, en de relatie tussen beide besturingssystemen.
### 1.1 Wat is Linux?
Linux is een populair besturingssysteem dat, hoewel minder zichtbaar op desktops vergeleken met Windows, MacOSX of ChromeOS, dominant is in server-, IoT- en mobiele omgevingen. Het wordt gebruikt in een breed scala aan apparaten, waaronder smartphones, servers, tablets, IoT-apparaten, slimme apparaten, zelfrijdende auto's, modems, routers en spelconsoles zoals de PlayStation. Linux heeft zelfs een eigen mascotte: de pinguïn Tux [2](#page=2).
#### 1.1.1 Statistieken en Feiten over Linux
* De meerderheid van de supercomputers draait op Linux [2](#page=2).
* Populaire cloudinfrastructuurproviders maken veelvuldig gebruik van Linux [2](#page=2).
* Linux-statistieken tonen een brede adoptie en populariteit [2](#page=2).
### 1.2 De Oorsprong van Unix
Unix werd in 1969 gecreëerd door Dennis Ritchie en Ken Thompson. Oorspronkelijk werd de broncode van Unix vrij gedeeld. Het bedrijf AT&T Bell Labs besloot echter om Unix commercieel te gaan verkopen, wat leidde tot de ontwikkeling van verschillende versies. Tegelijkertijd ontwikkelde BSD het besturingssysteem onafhankelijk van Unix, resulterend in [3](#page=3):
* Unix: de commerciële versie.
* BSD Unix: de open source versie [3](#page=3).
In de jaren '80 ontstonden diverse versies van Unix. Vanwege de commercialisering van Unix, werd de broncode herschreven als onderdeel van het GNU-project, met als doel een open source besturingssysteem te creëren waar de gemeenschap aan kon bijdragen. Het GNU-project miste echter nog een kernel [3](#page=3).
### 1.3 De Ontwikkeling van Linux
Linus Torvalds, een student, creëerde in de jaren '90 een eigen besturingssysteem en deelde zijn werk via een nieuwsgroep. De kernel die Torvalds ontwikkelde, wordt nog steeds dagelijks gebruikt en verder ontwikkeld [3](#page=3).
> **Tip:** Begrijpen dat Linux voortbouwt op concepten van Unix en de ontwikkeling van het GNU-project is cruciaal voor het plaatsen van Linux in de technologische geschiedenis [3](#page=3).
### 1.4 Linux Distributies
Linux-distributies, ook wel distro's genoemd, vereenvoudigen het installatieproces van GNU/Linux en bijbehorende applicaties op een computer. Enkele bekende distributies zijn Ubuntu, RedHat, Fedora, CentOS, Debian, Archlinux en Oracle Linux. Vanwege de schaalbaarheid van Linux zijn er ook gespecialiseerde distro's voor specifieke doeleinden, zoals Clonezilla [4](#page=4).
> **Voorbeeld:** Een gebruiker die een stabiel en gebruiksvriendelijk systeem zoekt voor desktopgebruik, kiest wellicht voor Ubuntu, terwijl een systeembeheerder die maximale controle en flexibiliteit wenst, kan kiezen voor Debian of Archlinux [4](#page=4).
---
# Installatie van Ubuntu Server met Virtualisatie
Dit onderdeel behandelt het opzetten van een virtuele machine en het installeren van Ubuntu Server hierop, inclusief de configuratie van virtuele hardware.
### 2.1 De rol van virtualisatie
Virtualisatie is een concept waarbij een computersysteem met een besturingssysteem virtueel op een ander systeem kan draaien. Dit maakt het mogelijk om meerdere gastbesturingssystemen met hun eigen virtuele hardware op één hostsysteem te draaien. In deze cursus wordt virtualisatie gebruikt om een lokale virtuele machine (VM) op te zetten als simulatie van een cloud instance. Dit biedt voordelen, zoals de mogelijkheid om te werken zonder internetverbinding [5](#page=5).
### 2.2 Benodigde software en bestanden
Voor de installatie van Ubuntu Server in een virtuele omgeving is het besturingssysteem **Ubuntu Server** vereist. Dit is een op Debian gebaseerde distributie die gedownload kan worden als een.iso bestand. Een.iso bestand is een exacte kopie van een CD/DVD en wordt gebruikt om het besturingssysteem in de virtuele machine te installeren [5](#page=5).
#### 2.2.1 Virtualisatiesoftware
Er zijn verschillende virtualisatiesoftwarepakketten beschikbaar, waaronder VMware Workstation, Virtualbox en Hyper-V. In deze cursus zal **VMware Workstation** worden gebruikt [6](#page=6).
### 2.3 Het aanmaken van een virtuele machine in VMware Workstation
Het proces voor het aanmaken van een nieuwe VM in VMware Workstation begint via het menu `File > New Virtual Machine` [6](#page=6).
#### 2.3.1 Initiële configuratie
1. **Wizard start:** Selecteer de optie `Typical` [6](#page=6).
2. **Installatie van besturingssysteem:** Kies de optie `I will install the operating system later` [7](#page=7).
3. **Besturingssysteem selectie:** Kies voor `Linux` en in de versiedropdown voor `Ubuntu 64 bit` [7](#page=7).
4. **Naam en opslaglocatie:** Geef de virtuele machine een naam en kies een opslagmap [8](#page=8).
> **Tip:** Sla de VM-bestanden niet op in een map die wordt gesynchroniseerd met cloudopslag (zoals OneDrive, Dropbox of Google Drive), omdat dit kan leiden tot corruptie van de VM [8](#page=8).
5. **Harde schijf configuratie:** Configureer de grootte van de virtuele harde schijf, standaard 20 GB, wat later uitgebreid kan worden [8](#page=8).
#### 2.3.2 Hardware aanpassen
Na het klikken op `Customize Hardware` kunnen verdere configuraties worden doorgevoerd [9](#page=9).
1. **Koppelen van ISO-bestand:** Koppel het gedownloade.iso bestand van Ubuntu Server aan het virtuele cd-rom-station door `New CD/DVD` te selecteren en te bladeren naar het.iso bestand [9](#page=9).
2. **Voltooiing VM aanmaak:** Klik op `Finish` om de virtuele machine aan te maken [10](#page=10).
3. **UEFI BIOS instelling:** Ga naar `Edit virtual machine settings` om het UEFI BIOS in te stellen. Navigeer naar het tabblad `Options`, klik op `Advanced` en selecteer `UEFI`. Hier kunnen ook instellingen voor 'Side channel mitigations' worden gevonden indien er waarschuwingen optreden tijdens het opstarten [11](#page=11) [12](#page=12).
De VM kan nu worden opgestart door op het groene pijltje te klikken [12](#page=12).
### 2.4 Installatie van Ubuntu Server
Na het opstarten van de virtuele machine start het installatieproces van Ubuntu Server [13](#page=13).
> **Tip:** Er is geen muisaanwijzer beschikbaar tijdens de installatie; navigeer met de pijltjestoetsen en Enter [13](#page=13).
#### 2.4.1 Veelvoorkomende problemen en oplossingen
* **Intel VT-x foutmelding:** Als de VM de foutmelding `This host supports Intel VT-x, but Intel VT-x is disabled` geeft, moet de VT-X optie in de BIOS van de laptop worden geactiveerd [13](#page=13).
* **Muis terugkrijgen:** Om de muis terug te krijgen in het hostbesturingssysteem (zoals Windows), druk op `CTRL + ALT` [13](#page=13).
#### 2.4.2 Installatiestappen
1. **Startscherm:** Kies `Try or Install Ubuntu` [13](#page=13).
2. **Taalkeuze:** Selecteer `English` [14](#page=14).
3. **Update installatieprogramma:** Sla de update van het installatieprogramma over indien dit scherm verschijnt [14](#page=14).
4. **Toetsenbordindeling:** Kies de juiste toetsenbordindeling (bijvoorbeeld `Belgian` voor AZERTY, `French (Macintosh)` voor Mac) [15](#page=15).
5. **Netwerk, Proxy en Mirror:** In de volgende 7 stappen worden geen wijzigingen aangebracht; klik op `Done` of `Continue` [16](#page=16).
6. **Gebruikersaccount aanmaken:** Maak een gebruikersaccount aan met de volgende gegevens [20](#page=20):
* Gebruikersnaam: `student`
* Servernaam: `ubserv`
* Wachtwoord: `pxl`
7. **Ubuntu Pro upgrade:** Kies `Skip for now` op de vraag om te upgraden naar Ubuntu Pro [21](#page=21).
8. **Extra pakketten:** Installeer als extra pakket de `OpenSSH server` [22](#page=22).
9. **Installatie voltooid:** Het besturingssysteem wordt nu geïnstalleerd en geconfigureerd. Na voltooiing verschijnt de optie `Reboot now` [24](#page=24).
#### 2.4.3 Na de herstart
1. **CD/DVD ontkoppelen:** Voordat de server opnieuw opstart, is het belangrijk om in de instellingen van de Virtuele Machine de optie om de CD/DVD te verbinden bij het opstarten uit te vinken. Dit voorkomt dat de installatie opnieuw wordt geladen bij elke opstart [24](#page=24).
2. **Bevestigen herstart:** Druk op de `ENTER` toets [24](#page=24) [25](#page=25).
3. **Inloggen:** Na de herstart moet nogmaals op de `enter` toets gedrukt worden om de inlogprompt te zien. Log in met de aangemaakte gebruikersnaam (`student`) en wachtwoord (`pxl`). Het wachtwoord wordt niet zichtbaar getypt [25](#page=25) [26](#page=26).
---
# Werken met de Command Line Interface (CLI)
Dit onderwerp introduceert de command line interface (CLI), een tekstgebaseerde manier om met een besturingssysteem te interageren, inclusief de componenten zoals prompts, commando's, argumenten, opties, het gebruik van manpages en shell history [27](#page=27).
### 3.1 Introductie tot de Command Line Interface (CLI)
De Command Line Interface (CLI) is een interactieve omgeving waarbij invoer uitsluitend via het toetsenbord plaatsvindt, zonder de aanwezigheid van een grafische gebruikersinterface (GUI). Dit wordt vaak toegepast in serveromgevingen om systeembronnen te besparen en het aanvalsoppervlak te verkleinen. CLI's worden als een efficiënte en betrouwbare methode beschouwd voor systeembeheer en automatisering [27](#page=27).
#### 3.1.1 De prompt
Na het inloggen wordt de gebruiker geconfronteerd met een **prompt**, een regel tekst die informatie geeft over het huidige systeem en de gebruiker. De prompt bestaat doorgaans uit de gebruikersnaam, de hostnaam van de server en het huidige werkdirectorypad. Het symbool `~` is een afkorting voor de home directory van de ingelogde gebruiker (bijvoorbeeld `/home/student`). De invoer van de gebruiker begint na het `USD`-teken, wat het einde van de prompt aangeeft [28](#page=28).
> **Tip:** Vergelijk de prompt met het pad `C:\Users\student` in Windows; het geeft aan waar je momenteel in het bestandssysteem bent [28](#page=28).
### 3.2 Commando's, argumenten en opties
Om met een besturingssysteem via de CLI te werken, worden **commando's** gebruikt. Een commando kan bestaan uit [28](#page=28):
* **Commando zelf:** De naam van de opdracht die wordt uitgevoerd (bijv. `echo`, `shutdown`).
* **Argumenten:** Extra informatie die aan het commando wordt meegegeven, zoals een string die moet worden afgedrukt door `echo` [28](#page=28).
* **Opties:** Specifieke vlaggen (meestal voorafgegaan door een koppelteken `-`) die de functionaliteit van een commando aanpassen of uitbreiden [29](#page=29).
#### 3.2.1 Voorbeeld: `echo` en `shutdown`
Het `echo` commando drukt de meegegeven argumenten af [28](#page=28).
```bash
student@linux-ess:~USD echo hello world
hello world
```
Het `shutdown` commando wordt gebruikt om de machine af te sluiten of te herstarten. Het kan een argument bevatten dat aangeeft wanneer de actie moet plaatsvinden, zoals `now` [29](#page=29).
```bash
student@linux-ess:~USD sudo shutdown now
```
#### 3.2.2 `sudo` en beheerdersrechten
Het `sudo` commando (Superuser Do) wordt gebruikt om commando's uit te voeren met beheerdersrechten (als de "root" gebruiker). Dit is noodzakelijk voor bepaalde bewerkingen die standaardrechten overschrijden [29](#page=29).
#### 3.2.3 Opties van commando's
Commando's kunnen diverse opties hebben die hun gedrag beïnvloeden. Bijvoorbeeld, het `shutdown` commando kent opties zoals `-H` voor halt, `-P` voor power-off (standaard), en `-r` voor reboot [29](#page=29).
> **Let op:** Alle commando's, opties, argumenten, en bestands- en mapnamen zijn hoofdlettergevoelig in Linux [30](#page=30).
### 3.3 Manpages: de handleidingen
Linux-systemen voorzien in ingebouwde documentatie voor commando's en systeembestanden, bekend als **manpages** (manual pages). Deze zijn toegankelijk via het `man` commando [30](#page=30).
#### 3.3.1 Navigeren in manpages
* **Opvragen:** Typ `man ` (bv. `man shutdown`) [30](#page=30).
* **Bladeren:** Gebruik de spatiebalk of pijltjestoetsen om door pagina's te navigeren [30](#page=30).
* **Zoeken:** Typ `/` gevolgd door het zoekwoord en druk op Enter. Gebruik `n` voor het volgende resultaat en `N` voor het vorige [30](#page=30).
* **Verlaten:** Druk op `q` om de manpage te sluiten [30](#page=30).
* **Sneltoetsen:**
* `g`: Ga naar de eerste regel [31](#page=31).
* `G`: Ga naar de laatste regel [31](#page=31).
* `h`: Toon helpinformatie binnen de manpage [31](#page=31).
#### 3.3.2 Manpage secties
Sommige sleutelwoorden kunnen verwijzen naar zowel commando's als configuratiebestanden. Manpages zijn onderverdeeld in **secties** om dit te onderscheiden. De getallen tussen haakjes na een sleutelwoord in de uitvoer van `apropos` of `man -k` geven de sectie aan (bv. `passwd ` voor het commando en `passwd ` voor het bestand). Om een specifieke sectie te openen, specificeer je het sectienummer voor het commando (bv. `man 5 passwd`) [1](#page=1) [30](#page=30) [31](#page=31) [5](#page=5).
#### 3.3.3 Zoeken naar commando's en hun locaties
* **`man -k ` of `apropos `:** Zoekt naar commando's waarvan de beschrijving het sleutelwoord bevat [30](#page=30).
* **`whatis `:** Geeft een korte beschrijving van een commando [31](#page=31).
* **`whereis -m `:** Toont de locatie(s) van de manpage-bestanden voor een commando [31](#page=31).
Manpages worden opgeslagen in gecomprimeerde archieven met een `.gz` extensie [32](#page=32).
### 3.4 Shell history
De **shell** in Linux houdt een geschiedenis bij van alle uitgevoerde commando's. Dit maakt het mogelijk om eerder gebruikte commando's snel te herhalen, te bewerken of op te zoeken [32](#page=32).
#### 3.4.1 Gebruik van de history
* **Navigeren:** Gebruik de pijl omhoog en omlaag toetsen om door eerdere commando's te bladeren [32](#page=32).
* **Herhalen laatste commando:** Typ `!!` (bang bang) om het laatst uitgevoerde commando opnieuw uit te voeren. Dit is handig om een commando opnieuw uit te voeren met `sudo` als het de eerste keer faalde vanwege ontbrekende rechten [32](#page=32).
* **Tonen geschiedenis:** Het commando `history` toont de lijst van gebruikte commando's. Je kunt een specifiek aantal commando's tonen met een argument (bv. `history 10`) [32](#page=32) [33](#page=33).
* **Uitvoeren via ID:** Elk commando in de history heeft een uniek ID-nummer. Je kunt een commando uitvoeren door `!n` te typen, waarbij `n` het ID-nummer is (bv. `!261` om commando met ID 261 uit te voeren) [33](#page=33).
#### 3.4.2 Beperkingen van de history
Standaard worden commando's die beginnen met een spatie, of commando's die identiek zijn aan het direct voorgaande commando, mogelijk niet opgeslagen in de geschiedenis [33](#page=33).
#### 3.4.3 Interactief zoeken in history
* **`CTRL-R`:** Start een omgekeerde zoekopdracht (van nieuw naar oud) door de shell history. Typ de zoekterm na het indrukken van `CTRL-R`. Druk opnieuw op `CTRL-R` om naar het volgende overeenkomende commando te zoeken [33](#page=33).
* Pijltjestoetsen kunnen worden gebruikt om de opdrachtregel te bewerken na een zoekopdracht [33](#page=33).
* `CTRL-C` annuleert de zoekopdracht en keert terug naar een lege opdrachtregel [33](#page=33).
* Druk op Enter om het gevonden commando uit te voeren [33](#page=33).
---
# Bestanden en Mappen Beheer
Dit gedeelte van de cursus behandelt de fundamentele principes en commando's voor het beheren van bestanden en mappen in een Linux-omgeving, inclusief navigatie, creatie, verwijdering, kopiëren, verplaatsen en zoeken.
### 4.1 Navigeren door het bestandssysteem
De kern van navigatie in Linux ligt in het begrijpen van de huidige locatie en het kunnen wijzigen daarvan.
#### 4.1.1 Huidige werkmap tonen (pwd)
Het commando `pwd` (print working directory) toont de absolute locatie van de map waarin de gebruiker zich momenteel bevindt. Dit is essentieel om te weten waar commando's worden uitgevoerd [34](#page=34).
> **Tip:** De prompt van de shell bevat vaak informatie over het huidige pad, wat een visuele indicator is van uw locatie [34](#page=34).
#### 4.1.2 Werkmap wijzigen (cd)
Met het commando `cd` (change directory) kan de gebruiker naar een andere map navigeren. Dit commando accepteert een pad als argument [35](#page=35).
* **Absolute paden:** Deze paden beginnen bij de rootdirectory (`/`) en specificeren de volledige hiërarchie naar de gewenste map [39](#page=39).
* **Relatieve paden:** Deze paden specificeren de locatie ten opzichte van de huidige werkmap [39](#page=39).
* **`~` (tilde):** Een shortcut om direct naar de homefolder van de huidige gebruiker te navigeren [35](#page=35) [40](#page=40).
* **`cd` zonder argument:** Navigeert ook naar de homefolder [35](#page=35).
* **`cd -`:** Navigeert terug naar de vorige werkmap [36](#page=36).
> **Tip:** Linux CLI ondersteunt pathcompletion met de Tab-toets, wat typfouten vermindert en de efficiëntie verhoogt [39](#page=39).
#### 4.1.3 Structuur van mappen weergeven (tree)
Het `tree`-commando visualiseert de hiërarchie van mappen en bestanden binnen een opgegeven pad [37](#page=37).
* Met de optie `-a` kunnen verborgen bestanden en mappen (die beginnen met een `.`) worden weergegeven [37](#page=37).
> **Example:** `tree -a /home/student` zal alle bestanden en mappen in de home directory van de student tonen, inclusief verborgen items [38](#page=38).
### 4.2 Padtypes
Het correct gebruiken van paden is cruciaal voor het aansturen van commando's naar de juiste locaties in het bestandssysteem.
#### 4.2.1 Absoluut pad
Een absoluut pad begint altijd met de rootdirectory (`/`) en beschrijft de volledige weg van het hoogste niveau naar het doel [39](#page=39).
> **Example:** `/etc/nginx/sites-available` is een absoluut pad [39](#page=39).
#### 4.2.2 Relatief pad
Een relatief pad definieert de locatie ten opzichte van de huidige werkmap [39](#page=39).
* `.` (één punt): Verwijst naar de huidige map [40](#page=40).
* `..` (twee puntjes): Verwijst naar de bovenliggende map [40](#page=40).
* `~` (tilde): Verwijst naar de thuismap van de huidige gebruiker [40](#page=40).
> **Tip:** Combinaties van `.` en `..` kunnen worden gebruikt om complexere relatieve navigatie uit te voeren, zoals `../../teacher` om twee niveaus omhoog te gaan en vervolgens naar de `teacher`-map te gaan [40](#page=40).
### 4.3 Inhoud van mappen tonen (ls)
Het `ls`-commando wordt gebruikt om de inhoud van een map weer te geven [40](#page=40).
* Zonder argumenten toont het de inhoud van de huidige werkmap [40](#page=40).
* Met een pad als argument toont het de inhoud van die specifieke map [40](#page=40).
Veelgebruikte opties voor `ls`:
* `-a` (all): Toont ook verborgen bestanden en mappen (beginnend met een punt) [41](#page=41).
* `-l` (long listing): Toont gedetailleerde informatie, waaronder machtigingen, eigenaar, groep, grootte en tijdstempel [41](#page=41).
* `-h` (human readable): Toont bestandsgroottes in een leesbaar formaat (bv. KB, MB) [41](#page=41).
> **Example:** `ls -alh` toont een lange lijst van alle bestanden (inclusief verborgen) met leesbare groottes [41](#page=41).
### 4.4 Mappen maken (mkdir)
Het commando `mkdir` (make directory) wordt gebruikt om nieuwe mappen aan te maken [42](#page=42).
* `mkdir ` creëert een map in de huidige werkmap [42](#page=42).
* De optie `-p` (parents) is essentieel bij het aanmaken van mappen met ontbrekende vooroudermappen. Deze optie zorgt ervoor dat alle benodigde tussenliggende mappen ook worden aangemaakt [42](#page=42) [43](#page=43).
> **Example:** `mkdir -p backups/Steam/games/PayDay2` creëert `backups`, `Steam`, `games` en `PayDay2` indien ze nog niet bestaan [43](#page=43).
> **Important:** Linux is hoofdlettergevoelig. `mkdir walkthroughs Walkthroughs` creëert twee afzonderlijke mappen [43](#page=43).
### 4.5 Werken met bestanden
#### 4.5.1 Een leeg bestand maken (touch)
Het `touch`-commando creëert een leeg bestand als het nog niet bestaat. Indien het bestand wel al bestaat, wordt de tijdstempel van de laatste wijziging bijgewerkt [43](#page=43) [44](#page=44).
> **Example:** `touch new_document.txt` maakt een nieuw, leeg bestand met de opgegeven naam [44](#page=44).
#### 4.5.2 Bestanden met spaties in de naam
Bestanden met spaties in hun naam moeten worden ingesloten in dubbele aanhalingstekens (`" "`), enkele aanhalingstekens (`' '`) of de spatie moet worden voorafgegaan door een backslash (`\`) [45](#page=45).
> **Example:** `touch "My Document.txt"` of `touch My\ Document.txt` [45](#page=45).
#### 4.5.3 Bestanden verplaatsen (mv)
Het `mv`-commando wordt gebruikt om bestanden en mappen te verplaatsen of te hernoemen [46](#page=46).
* `mv ` verplaatst het bronbestand of de bronmap naar de doelmap [46](#page=46).
* Als het doel een andere naam is, wordt het bestand of de map hernoemd [47](#page=47).
> **Tip:** `mv` is het standaardcommando voor zowel het verplaatsen als het hernoemen van één bestand of map [48](#page=48).
#### 4.5.4 Bestanden kopiëren (cp)
Het `cp`-commando maakt een kopie van een bestand of map [49](#page=49).
* `cp ` kopieert het bronbestand naar het doel. Dit kan ook een nieuwe naam voor het gekopieerde bestand zijn [49](#page=49).
* Om mappen recursief (inclusief submappen en inhoud) te kopiëren, gebruik de optie `-r` [51](#page=51).
* Standaard overschrijft `cp` bestaande bestanden zonder waarschuwing. De optie `-i` (interactief) vraagt om bevestiging voordat een bestand wordt overschreven [52](#page=52).
> **Example:** `cp -r source_folder destination_folder` kopieert de hele `source_folder` naar `destination_folder` [51](#page=51).
#### 4.5.5 Bestanden hernoemen (rename)
Voor het bulk hernoemen van bestanden, met name met behulp van reguliere expressies (regex), is het `rename`-commando nuttig [52](#page=52).
* Het commando gebruikt een patroon om zoek- en vervangingsoperaties uit te voeren [53](#page=53).
* De wildcard `*` kan worden gebruikt om op meerdere bestanden tegelijk te werken [53](#page=53).
* Reguliere expressies maken complexe bewerkingen mogelijk, zoals het wijzigen van extensies [54](#page=54).
* De optie `-i` kan worden gebruikt voor hoofdletterongevoelig zoeken en vervangen [55](#page=55).
> **Example:** `rename 's/\.txt/\.odt/' *.txt` vervangt de `.txt` extensie door `.odt` voor alle `.txt` bestanden [54](#page=54).
#### 4.5.6 Bestanden identificeren (file)
Omdat Linux geen bestands-extensies vereist, identificeert het `file`-commando het type bestand door de inhoud te analyseren [55](#page=55).
> **Example:** `file /etc/passwd` zal tonen dat het een ASCII tekstbestand is [55](#page=55).
#### 4.5.7 Bestanden en mappen verwijderen (rm)
* `rmdir` kan alleen lege mappen verwijderen [56](#page=56).
* Het `rm`-commando wordt gebruikt om bestanden en mappen te verwijderen [56](#page=56).
* De opties `-r` (recursief) en `-f` (force) worden vaak samen gebruikt als `rm -rf` om mappen en hun inhoud geforceerd te verwijderen [57](#page=57).
> **Caution:** Wees uiterst voorzichtig met `rm -rf`, vooral als root-gebruiker, aangezien verwijderde bestanden niet naar een prullenbak gaan en permanent verdwenen zijn [57](#page=57).
### 4.6 Zoeken naar bestanden
Linux biedt krachtige tools om bestanden te lokaliseren binnen het bestandssysteem.
#### 4.6.1 Zoeken op het bestandssysteem (find)
Het `find`-commando doorzoekt het bestandssysteem op basis van opgegeven criteria, zoals de naam van het bestand en de startmap [58](#page=58).
* Standaard begint de zoekopdracht in de huidige werkmap [58](#page=58).
* De optie `-name` specificeert het zoekpatroon [58](#page=58).
* Om in mappen te zoeken waarvoor de gebruiker geen rechten heeft, kan `sudo` worden gebruikt [59](#page=59) [60](#page=60).
* De optie `-iname` maakt de zoekopdracht hoofdletterongevoelig [60](#page=60).
> **Example:** `find /home/student -name "*log*"` zoekt naar alle bestanden in de home directory die "log" in hun naam bevatten [58](#page=58).
#### 4.6.2 Zoeken in een bestandssysteemdatabase (locate)
Het `locate`-commando doorzoekt een vooraf opgebouwde database van bestanden, wat doorgaans veel sneller is dan `find` [61](#page=61).
* Het is aanbevolen om de database bij te werken met `sudo updatedb` voordat je `locate` gebruikt, om zeker te zijn van de meest actuele informatie [61](#page=61).
* `locate` doorzoekt altijd het gehele bestandssysteem [61](#page=61).
* `sudo locate` toont ook bestanden waarvoor de gebruiker normaal gesproken geen leesrechten heeft [61](#page=61) [62](#page=62).
* De optie `-i` maakt de zoekopdracht hoofdletterongevoelig [62](#page=62).
* De optie `-b` (basename) beperkt de zoekopdracht tot alleen bestandsnamen (niet mapnamen) [62](#page=62).
> **Example:** `sudo locate -i -b modem` zoekt hoofdletterongevoelig naar bestandsnamen die "modem" bevatten [62](#page=62).
---
# Softwarebeheer en Pakingen
Dit onderdeel behandelt het beheren van softwarepakketten op Linux-systemen, inclusief installatie, verwijdering en updates met behulp van package managers zoals `apt`, en introduceert compressietools zoals `gzip` en `tar` [63](#page=63).
### 5.1 Package managers
Package managers zijn tools die het proces van het installeren, verwijderen en updaten van software op een Linux-systeem vereenvoudigen. Ze maken gebruik van databases, genaamd repositories, om beschikbare pakketten te vinden en hun dependencies te beheren [63](#page=63) [64](#page=64).
#### 5.1.1 Apt
`apt` (Advanced Package System) is een veelgebruikte high-level command-line interface voor pakketbeheer op Debian-gebaseerde systemen zoals Ubuntu. Het stelt gebruikers in staat om softwarepakketten te installeren, verwijderen en updaten [64](#page=64).
##### 5.1.1.1 Repositories
Repositories zijn databases die lijsten bevatten van beschikbare softwarepakketten. Om deze te gebruiken, moeten ze eerst naar de lokale machine worden gedownload met het commando `sudo apt update`. De configuratie van repositories is te vinden in `/etc/apt/sources.list` of in bestanden binnen de map `/etc/apt/sources.list.d/` [65](#page=65).
##### 5.1.1.2 Software zoeken
Met `apt search ` kunnen gebruikers zoeken naar beschikbare pakketten. Het is aan te raden om eerst `sudo apt update` uit te voeren om ervoor te zorgen dat de zoekopdracht plaatsvindt in de meest recente repository-lijsten [70](#page=70).
> **Tip:** Gebruik reguliere expressies in de zoekterm voor meer specifieke zoekopdrachten, bijvoorbeeld `\.zip` om letterlijk naar een punt te zoeken [70](#page=70).
##### 5.1.1.3 Software installeren
Software wordt geïnstalleerd met het commando `sudo apt install `. `apt` analyseert de benodigde dependencies en vraagt om bevestiging voordat de installatie plaatsvindt [71](#page=71).
> **Tip:** Als een pakket niet gevonden kan worden, verschijnt de melding "E: Unable to locate package ". Dit kan betekenen dat het pakket niet bestaat, of dat de repository die het pakket bevat niet is toegevoegd [72](#page=72).
##### 5.1.1.4 Software verwijderen
Om software te verwijderen, wordt het commando `sudo apt remove ` gebruikt. Dit commando verwijdert het pakket zelf, maar laat de configuratiebestanden achter. Ongebruikte dependencies kunnen worden opgeruimd met `sudo apt autoremove` [73](#page=73).
Voor het verwijderen van zowel het pakket als de bijbehorende configuratiebestanden, kan `sudo apt purge ` gebruikt worden [73](#page=73).
##### 5.1.1.5 Software bijwerken
Individuele pakketten kunnen worden bijgewerkt door het installatiecommando opnieuw uit te voeren: `sudo apt install `. Om alle geïnstalleerde pakketten op het systeem bij te werken, wordt het commando `sudo apt upgrade` gebruikt [73](#page=73) [74](#page=74).
> **Tip:** Voer altijd eerst `sudo apt update` uit voordat je software bijwerkt of installeert, om zeker te zijn van de meest recente repository-informatie [74](#page=74).
#### 5.1.2 Dpkg
`dpkg` is een oudere pakketbeheerder die de voorloper is van `apt-get` en `apt`. Het werkt met `.deb`-bestanden en maakt geen gebruik van repositories. Dependencies moeten handmatig worden geïnstalleerd, wat historisch tot "dependency hell" kon leiden [78](#page=78).
* Installeren: `sudo dpkg -i .deb` [78](#page=78).
* Herconfigureren: `sudo dpkg-reconfigure ` [78](#page=78).
#### 5.1.3 Snap
Snaps zijn zelfstandige softwarebundels die alle dependencies bevatten en in een geïsoleerde omgeving draaien. Dit maakt het mogelijk om meerdere versies van dezelfde software naast elkaar te installeren en te gebruiken. Snaps zijn distro-onafhankelijk en te vinden in de Snap Store of te zoeken met `snap search` [78](#page=78).
Belangrijke `snap` commando's:
* `snap search `: Zoeken naar snaps [79](#page=79).
* `snap list`: Toont geïnstalleerde apps [78](#page=78).
* `snap list --all`: Toont alle geïnstalleerde versies [78](#page=78).
* `snap install `: Installeren van een snap [79](#page=79).
* `snap remove `: Verwijderen van een snap [78](#page=78).
* `snap refresh`: Upgraden van snaps (gebeurt automatisch) [78](#page=78).
* `snap revert --revision `: Teruggaan naar een eerdere versie [78](#page=78).
> **Tip:** Het commando `snap update` bestaat niet; snaps worden automatisch gecontroleerd op updates door de snap daemon [79](#page=79).
### 5.2 Compressietools
Compressietools worden gebruikt om de bestandsgrootte te verkleinen, wat handig is voor opslag en gegevensoverdracht [74](#page=74).
#### 5.2.1 Gzip
`gzip` is een tool voor het comprimeren van individuele bestanden. Het creëert een gecomprimeerd bestand met de extensie `.gz`. Het originele bestand verdwijnt na compressie [74](#page=74).
* Comprimeren: `gzip ` [74](#page=74).
* Decomprimeren: `gunzip .gz` [74](#page=74).
#### 5.2.2 Tar
`tar` (Tape Archive) wordt gebruikt om meerdere bestanden en mappen samen te voegen tot één enkel archiefbestand (een tarball). `tar` behoudt ook bestandsrechten en eigenaren [75](#page=75) [81](#page=81).
* Een tar-bestand maken: `tar -cf .tar ` [75](#page=75).
* Inhoud van een tar-bestand bekijken: `tar -tf .tar` [75](#page=75).
* Een tar-bestand maken en direct comprimeren met gzip (tarball): `tar -czf .tar.gz ` [75](#page=75).
* Inhoud van een tarball bekijken: `tar -tzf .tar.gz` [75](#page=75).
* Een tar-bestand uitpakken: `tar -xf .tar` [76](#page=76).
* Een gecomprimeerde tarball uitpakken: `tar -xzf .tar.gz` [76](#page=76).
* Uitpakken naar een specifieke map: Gebruik de `-C
Glossary
| Term | Definition |
|------|------------|
| Besturingssysteem | Een besturingssysteem (OS) is software die een computer beheert en de interactie tussen de gebruiker en de hardware faciliteert. |
| Kernel | De kernel is het centrale deel van een besturingssysteem dat direct met de hardware communiceert en de basisfunctionaliteit van het systeem beheert. |
| Distributie | Een Linux-distributie is een compleet besturingssysteem dat is opgebouwd rond de Linux-kernel, samen met een selectie van softwarepakketten en een gebruikersinterface. |
| Virtualisatie | Virtualisatie is een technologie die het mogelijk maakt om meerdere virtuele computersystemen op één fysieke hardware te creëren en te beheren, elk met hun eigen besturingssysteem en resources. |
| Virtuele Machine (VM) | Een virtuele machine is een softwarematige emulatie van een fysiek computersysteem, waarop een besturingssysteem kan worden geïnstalleerd en uitgevoerd. |
| Host Systeem | Het host systeem is de fysieke computer waarop virtualisatiesoftware draait en virtuele machines worden gecreëerd. |
| Gast Besturingssysteem | Het gast besturingssysteem is het besturingssysteem dat binnen een virtuele machine draait. |
| Command Line Interface (CLI) | Een command line interface is een tekstgebaseerde interface waarmee gebruikers commando's aan de computer kunnen geven. |
| Graphical User Interface (GUI) | Een graphical user interface is een visuele interface die grafische elementen zoals iconen, vensters en knoppen gebruikt om interactie met de computer mogelijk te maken. |
| Prompt | De prompt is een tekstuele indicator in een command line interface die aangeeft dat het systeem klaar is om een commando te ontvangen. |
| Commando | Een commando is een instructie die aan de computer wordt gegeven om een specifieke taak uit te voeren. |
| Argument | Een argument is een waarde die aan een commando wordt meegegeven om de functionaliteit ervan te specificeren of te beïnvloeden. |
| Optie | Een optie is een speciaal argument dat begint met een koppelteken (-) en de gedragingen van een commando aanpast. |
| Sudo | Sudo (super user do) is een commando waarmee een gebruiker tijdelijk verhoogde rechten (zoals root-rechten) kan verkrijgen om systeembeheertaken uit te voeren. |
| Root | De root-gebruiker is de superuser in een Linux-systeem met volledige administratieve rechten. |
| Manpages | Manpages (manual pages) zijn de ingebouwde helpbestanden in een Linux-systeem die gedetailleerde informatie geven over commando's, bestanden en programma's. |
| Shell | Een shell is een command-line interpreter die gebruikersinteractie met het besturingssysteem mogelijk maakt, zoals Bash. |
| Bestandssysteem | Het bestandssysteem is de structuur en methode waarmee bestanden en mappen op een opslagmedium worden georganiseerd en beheerd. |
| Root Directory | De root directory (aangeduid met '/') is het hoogste niveau in de hiërarchie van een bestandssysteem, waaruit alle andere mappen en bestanden zijn afgeleid. |
| Home Folder | De home folder is de persoonlijke map van een gebruiker, meestal gelegen in /home/gebruikersnaam, waar persoonlijke bestanden worden opgeslagen. |
| Pad | Een pad is een reeks directory's die de locatie van een bestand of map in het bestandssysteem aangeeft. |
| Absoluut Pad | Een absoluut pad begint vanaf de root directory ('/') en specificeert de volledige locatie van een bestand of map. |
| Relatief Pad | Een relatief pad geeft de locatie van een bestand of map aan ten opzichte van de huidige werkdirectory. |
| Pipe (|) | Een pipe is een mechanisme dat de standaard uitvoer (stdout) van het ene commando doorstuurt als standaard invoer (stdin) naar het volgende commando. |
| Standaard Uitvoer (stdout) | De standaard uitvoer is de output die een commando normaal gesproken genereert, meestal weergegeven op het scherm. |
| Standaard Invoer (stdin) | De standaard invoer is de input die een commando verwacht, meestal afkomstig van het toetsenbord. |
| Standaard Fout (stderr) | De standaard fout is de uitvoer die foutmeldingen van een commando bevat. |
| Redirection (>) | Redirection is het omleiden van de uitvoer van een commando naar een bestand in plaats van naar het scherm. |
| Gzip | Gzip is een commando voor bestandscompressie dat bestanden comprimeert tot een kleiner formaat, meestal met de extensie .gz. |
| Tar | Tar (tape archive) is een commando dat meerdere bestanden en mappen samenvoegt tot één archiefbestand, meestal met de extensie .tar. |
| Package Manager | Een package manager is een softwaretool die het installeren, bijwerken, configureren en verwijderen van softwarepakketten op een besturingssysteem vereenvoudigt. |
| Apt | Apt (Advanced Package Tool) is een package manager die wordt gebruikt in Debian-gebaseerde Linux-distributies zoals Ubuntu. |
| Repository | Een repository is een opslagplaats voor softwarepakketten die door een package manager kan worden gebruikt om software te downloaden en te installeren. |
| Umask | Umask (user file-creation mode mask) is een commando dat de standaardrechten bepaalt voor nieuw aangemaakte bestanden en mappen. |
| Setuid | De setuid-bit is een speciale permissie die, wanneer toegepast op een uitvoerbaar bestand, ervoor zorgt dat het bestand wordt uitgevoerd met de rechten van de bestandseigenaar, niet die van de gebruiker die het uitvoert. |
| Setgid | De setgid-bit is een speciale permissie die, wanneer toegepast op een map, ervoor zorgt dat bestanden en submappen die in die map worden aangemaakt, dezelfde groepseigenaar krijgen als de map zelf. |
| Sticky Bit | De sticky bit is een speciale permissie die, wanneer toegepast op een map, voorkomt dat gebruikers bestanden of submappen in die map kunnen verwijderen of hernoemen, tenzij ze de eigenaar zijn van het bestand of de map. |
| Access Control Lists (ACL) | Access Control Lists bieden een fijnmaziger mechanisme voor toegangscontrole dan de standaard Unix-permissies, waardoor specifieke rechten voor individuele gebruikers en groepen kunnen worden ingesteld. |
| Bash | Bash (Bourne Again SHell) is de standaard command-line interpreter (shell) die in veel Linux-distributies wordt gebruikt. |
| Shebang | De shebang is de eerste regel in een scriptbestand, beginnend met `#!`, die aangeeft welke interpreter moet worden gebruikt om het script uit te voeren. |
| Variabele | Een variabele is een naam die wordt gebruikt om een waarde op te slaan die kan worden hergebruikt in een script of shell-sessie. |
| Shell Embedding | Shell embedding is het proces waarbij de uitvoer van een commando binnen een ander commando wordt ingevoegd, meestal met behulp van `$(commando)`. |
| Regular Expression (Regex) | Een reguliere expressie is een reeks tekens die een zoekpatroon definieert dat kan worden gebruikt om tekst te matchen en te manipuleren. |
| Filter | Een filter is een commando of programma dat gegevens verwerkt en doorgeeft aan een ander commando, vaak om de uitvoer te manipuleren of te selecteren. |
| Pipe | Een pipe is een mechanisme dat de standaard uitvoer (stdout) van het ene commando doorstuurt als standaard invoer (stdin) naar het volgende commando. |
| Crontab | Crontab is een systeem dat het plannen van commando's en scripts mogelijk maakt om op regelmatige tijden te worden uitgevoerd. |
| Umask | Umask (user file-creation mode mask) is een commando dat de standaardrechten bepaalt voor nieuw aangemaakte bestanden en mappen. |