← Terug naar tutorials

Command Line Interface (CLI) Basis Onder de Knie Krijgen voor Beginners

command linecliterminalbasisbeginnerslinuxmacoswindowsshellcommando's

Command Line Interface (CLI) Basis Onder de Knie Krijgen voor Beginners

Inleiding: wat is een CLI en waarom zou je het leren?

Een Command Line Interface (CLI) is een manier om je computer te bedienen door tekstcommando’s te typen in plaats van te klikken in een grafische interface. Je werkt in een terminal (Linux/macOS) of in PowerShell/Opdrachtprompt (Windows).

Waarom is dit nuttig?

Deze tutorial legt de basis grondig uit en gebruikt echte commando’s die je direct kunt uitvoeren.


1. Terminologie: terminal, shell, prompt en commando’s

Terminal

De terminal is het venster waarin je typt en output ziet. Voorbeelden:

Shell

De shell is het programma dat jouw commando’s interpreteert. Veelvoorkomende shells:

Prompt

De prompt is het stukje tekst dat aangeeft dat de shell klaar is voor input. Voorbeelden:

Commando, argumenten en opties

Een commando bestaat vaak uit:

Voorbeeld (Linux/macOS):

ls -la /etc

2. Veilig oefenen: waar kun je experimenteren?

Maak een oefenmap in je thuismap zodat je niets belangrijks stukmaakt.

Linux/macOS:

mkdir -p ~/cli-oefening
cd ~/cli-oefening

Windows PowerShell:

mkdir $HOME\cli-oefening
cd $HOME\cli-oefening

Tip: werk in het begin nooit in systeemmappen als je niet weet wat je doet (zoals /etc, /bin, C:\Windows).


3. Navigeren door mappen

Waar ben ik?

Linux/macOS:

pwd

Windows PowerShell:

Get-Location

Inhoud van een map bekijken

Linux/macOS:

ls
ls -l
ls -la

PowerShell:

Get-ChildItem
Get-ChildItem -Force

Uitleg:

Van map veranderen

Linux/macOS:

cd /pad/naar/map
cd ~
cd ..
cd -

PowerShell:

cd C:\pad\naar\map
cd $HOME
cd ..
cd -

Belangrijke concepten:


4. Bestanden en mappen maken, kopiëren, verplaatsen en verwijderen

Mappen maken

Linux/macOS:

mkdir project
mkdir -p project/src

PowerShell:

mkdir project
mkdir project\src

-p maakt tussenniveaus automatisch aan.

Lege bestanden maken

Linux/macOS:

touch notities.txt

PowerShell:

New-Item -ItemType File -Name notities.txt

Tekst in een bestand zetten

Linux/macOS:

echo "Hallo CLI" > notities.txt
echo "Tweede regel" >> notities.txt

PowerShell:

"Hallo CLI" | Out-File -FilePath notities.txt -Encoding utf8
"Tweede regel" | Out-File -FilePath notities.txt -Encoding utf8 -Append

Uitleg:

Bestand bekijken

Linux/macOS:

cat notities.txt

PowerShell:

Get-Content notities.txt

Kopiëren

Linux/macOS:

cp notities.txt backup.txt
cp -r project project-backup

PowerShell:

Copy-Item notities.txt backup.txt
Copy-Item project project-backup -Recurse

Verplaatsen of hernoemen

Linux/macOS:

mv backup.txt backup-oud.txt
mv backup-oud.txt project/

PowerShell:

Move-Item backup.txt backup-oud.txt
Move-Item backup-oud.txt project\

Verwijderen (voorzichtig)

Linux/macOS:

rm backup-oud.txt
rm -r project-backup
rm -rf project-backup

PowerShell:

Remove-Item backup-oud.txt
Remove-Item project-backup -Recurse
Remove-Item project-backup -Recurse -Force

Belangrijk: verwijderen via CLI gaat meestal niet naar een prullenbak.


5. Autocompletion, geschiedenis en sneltoetsen

Autocompletion

Druk op Tab om commando’s en paden automatisch aan te vullen. Dit bespaart tijd en voorkomt typefouten.

Geschiedenis

Linux/macOS:

PowerShell:

Handige sneltoetsen (veel shells)


6. Hulp en documentatie lezen

Ingebouwde hulp

Linux/macOS:

man ls
man cp

PowerShell:

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Examples
Get-Help Get-ChildItem -Full

Korte hulp via opties

Linux/macOS:

ls --help

PowerShell cmdlets hebben vaak -? niet nodig; gebruik Get-Help.

Hoe lees je manpages?


7. Paden: absoluut, relatief en speciale tekens

Absoluut pad

Begint vanaf de “wortel” van het bestandssysteem:

Relatief pad

Begint vanaf je huidige map:

Spaties in namen

Gebruik aanhalingstekens of escape-tekens.

Linux/macOS:

mkdir "Mijn Project"
cd "Mijn Project"

PowerShell:

mkdir "Mijn Project"
cd "Mijn Project"

8. Wildcards en globbing: veel bestanden tegelijk

Wildcards zijn patronen waarmee je meerdere bestanden tegelijk kiest.

Linux/macOS (en vaak ook PowerShell):

Voorbeeld:

touch foto1.jpg foto2.jpg fotoA.png
ls *.jpg

PowerShell:

New-Item foto1.jpg -ItemType File
New-Item foto2.jpg -ItemType File
New-Item fotoA.png -ItemType File
Get-ChildItem *.jpg

Let op: wildcards worden meestal door de shell uitgebreid vóór het commando draait. Dat betekent dat rm *.jpg echt alle .jpg-bestanden kan verwijderen.


9. Zoeken: bestanden vinden en tekst doorzoeken

Bestanden zoeken op naam

Linux/macOS:

find . -name "*.txt"
find . -type f -name "notities.txt"

PowerShell:

Get-ChildItem -Recurse -Filter *.txt
Get-ChildItem -Recurse -File -Filter notities.txt

Uitleg:

Tekst zoeken in bestanden

Linux/macOS:

grep "CLI" notities.txt
grep -R "TODO" .
grep -n "regel" notities.txt

PowerShell:

Select-String -Pattern "CLI" -Path notities.txt
Select-String -Pattern "TODO" -Path .\* -Recurse
Select-String -Pattern "regel" -Path notities.txt

Uitleg:


10. Pipes en redirection: commando’s aan elkaar knopen

Een van de grootste krachten van CLI is dat je output van het ene commando kunt doorgeven aan het volgende.

Pipe |

Linux/macOS:

ls -la | grep ".txt"

PowerShell:

Get-ChildItem | Select-String ".txt"

Concept:

Output omleiden naar bestand

Linux/macOS:

ls -la > lijst.txt

PowerShell:

Get-ChildItem | Out-File lijst.txt -Encoding utf8

Fouten apart behandelen (Linux/macOS)

Linux/macOS heeft aparte stromen:

Voorbeeld:

ls bestaand.txt nietbestaand.txt > output.txt 2> fouten.txt

Alles (output + fouten) samen:

ls bestaand.txt nietbestaand.txt > alles.txt 2>&1

11. Processen en taken beheren

Een commando dat lang duurt stoppen

Druk Ctrl + C.

Processen bekijken

Linux/macOS:

ps
ps aux

PowerShell:

Get-Process

Een proces stoppen

Linux/macOS:

kill 12345
kill -9 12345

PowerShell:

Stop-Process -Id 12345
Stop-Process -Name notepad

Uitleg:


12. Rechten en eigenaarschap (Linux/macOS)

Op Linux/macOS zijn bestandsrechten cruciaal.

Rechten bekijken

ls -l

Voorbeeldoutput:

-rw-r--r--  1 naam  staff  120  Jan  1 12:00 notities.txt

Betekenis (globaal):

Rechten aanpassen met chmod

Uitvoerbaar maken:

chmod +x script.sh

Specifieke rechten zetten (bijvoorbeeld 755):

chmod 755 script.sh

Uitleg van 755:

Eigenaarschap aanpassen met chown (vaak met beheerdersrechten)

sudo chown naam:groep bestand.txt

Let op: sudo geeft tijdelijk beheerdersrechten. Wees extra voorzichtig.


13. Werken met editors in de terminal

Snelle editor: nano (Linux/macOS)

nano notities.txt

Handig om te onthouden:

PowerShell: eenvoudige bewerking

Je kunt ook met een grafische editor openen vanuit PowerShell, bijvoorbeeld Kladblok:

notepad notities.txt

14. Netwerkbasis: testen en downloaden

Verbinding testen

Linux/macOS:

ping -c 4 8.8.8.8

PowerShell:

ping 8.8.8.8

HTTP ophalen

Linux/macOS:

curl -I https://example.com
curl https://example.com > pagina.html

PowerShell:

Invoke-WebRequest -Method Head -Uri https://example.com
Invoke-WebRequest -Uri https://example.com -OutFile pagina.html

Uitleg:


15. Archiveren en comprimeren

Linux/macOS: tar en gzip

Maak een tar.gz:

tar -czf project.tar.gz project

Uitpakken:

tar -xzf project.tar.gz

Uitleg:

Windows PowerShell: zip

In moderne PowerShell:

Compress-Archive -Path project -DestinationPath project.zip
Expand-Archive -Path project.zip -DestinationPath uitgepakt

16. Omgevingsvariabelen en configuratie

Omgevingsvariabelen zijn sleutel-waarde instellingen die programma’s kunnen gebruiken.

Linux/macOS

Toon een variabele:

echo $HOME
echo $PATH

Tijdelijk zetten (alleen voor huidige sessie):

export NAAM="Jan"
echo $NAAM

PowerShell

Toon variabelen:

$HOME
$env:PATH

Tijdelijk zetten:

$env:NAAM = "Jan"
$env:NAAM

Waarom belangrijk?


17. Kleine automatisering: een eenvoudige back-up taak

Hier is een praktisch voorbeeld: kopieer alle .txt bestanden naar een map backup met datum.

Linux/macOS (bash)

Maak een scriptbestand:

nano backup_txt.sh

Plak dit:

#!/usr/bin/env bash
set -e

doelmap="backup-$(date +%Y-%m-%d)"
mkdir -p "$doelmap"

cp -v *.txt "$doelmap/" 2>/dev/null || true
echo "Klaar: $doelmap"

Maak uitvoerbaar en run:

chmod +x backup_txt.sh
./backup_txt.sh

Uitleg:

PowerShell

Maak een scriptbestand:

notepad backup_txt.ps1

Plak dit:

$doelmap = "backup-{0}" -f (Get-Date -Format "yyyy-MM-dd")
New-Item -ItemType Directory -Path $doelmap -Force | Out-Null

Get-ChildItem -Filter *.txt -File -ErrorAction SilentlyContinue |
  Copy-Item -Destination $doelmap -Force -Verbose

"Klare back-up: $doelmap"

Run:

.\backup_txt.ps1

Opmerking: als scripts niet mogen draaien door beleid, kun je tijdelijk toestaan (met beleid en voorzichtigheid):

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

18. Veelgemaakte fouten en hoe je ze voorkomt

1) Verkeerde map

Je denkt dat je in ~/cli-oefening zit, maar je zit elders. Controleer:

2) rm -rf zonder controle

Voer eerst een “droge run” uit door te kijken welke bestanden je raakt:

3) Spaties en speciale tekens

Gebruik quotes:

cd "Mijn Project"

4) Commando niet gevonden

Mogelijke oorzaken:

Controleer op Linux/macOS:

which grep

Controleer op PowerShell:

Get-Command grep

19. Oefenopdrachten (met oplossingen)

Opdracht A: maak structuur en bestanden

  1. Maak map workshop
  2. Maak submappen data en scripts
  3. Maak bestand data/invoer.txt met drie regels tekst
  4. Toon de inhoud

Oplossing Linux/macOS:

mkdir -p workshop/{data,scripts}
echo "regel1" > workshop/data/invoer.txt
echo "regel2" >> workshop/data/invoer.txt
echo "regel3" >> workshop/data/invoer.txt
cat workshop/data/invoer.txt

Oplossing PowerShell:

mkdir workshop
mkdir workshop\data
mkdir workshop\scripts
"regel1" | Out-File workshop\data\invoer.txt -Encoding utf8
"regel2" | Out-File workshop\data\invoer.txt -Encoding utf8 -Append
"regel3" | Out-File workshop\data\invoer.txt -Encoding utf8 -Append
Get-Content workshop\data\invoer.txt

Opdracht B: zoek en filter

  1. Zoek alle .txt bestanden onder workshop
  2. Zoek in die bestanden naar het woord regel2

Oplossing Linux/macOS:

find workshop -name "*.txt"
grep -R "regel2" workshop

Oplossing PowerShell:

Get-ChildItem workshop -Recurse -Filter *.txt
Select-String -Path workshop\* -Recurse -Pattern "regel2"

Opdracht C: archiveren

  1. Maak een archief van workshop
  2. Pak het uit in een nieuwe map

Oplossing Linux/macOS:

tar -czf workshop.tar.gz workshop
mkdir uitgepakt
tar -xzf workshop.tar.gz -C uitgepakt

Oplossing PowerShell:

Compress-Archive -Path workshop -DestinationPath workshop.zip
Expand-Archive -Path workshop.zip -DestinationPath uitgepakt

20. Volgende stappen: wat leer je hierna?

Als je deze basis beheerst, zijn logische vervolgstappen:


Samenvatting

Je hebt geleerd hoe je:

Als je wilt, kan ik een vervolg maken met een reeks praktische mini-projecten (logbestanden analyseren, mappen opschonen, batch-hernoemen, en een complete back-up workflow) afgestemd op jouw besturingssysteem.