Linux-opdrachten voor beginners: De essentiële terminalgids met voorbeelden
De terminal ziet er intimiderend uit totdat je enkele tientallen commando’s kent. Ontdek welke zaken er toe doen, gegroepeerd op wat u probeert te doen, en combineer ze vervolgens om een echte vraag over een logbestand te beantwoorden.
- Een kleine set Linux-opdrachten dekt het grootste deel van het dagelijkse werk:
ls,cd,cp,mv,rm,catengrep. - Leidingen (
|) verbinden eenvoudige gereedschappen om moeilijkere vragen te beantwoorden. rmheeft geen prullenbak, dus controleer dit nogmaals voordat u op Enter drukt.- Gebruik
manof--helpwanneer u een optie vergeet.
De meeste servers, containers en cloudmachines draaien op Linux en hebben meestal geen grafische desktop. Daarom is het leren van Linux-opdrachten zo’n nuttige vaardigheid voor zowel ontwikkelaars als testers. Je hoeft er geen honderden te onthouden. Met een paar dozijn kom je een heel eind.
We hebben de bestands-, zoek- en pipe-voorbeelden getest in Git Bash op Windows, die dezelfde kerntools biedt, en de uitvoer komt uit die run. We hebben de opdrachten voor machtigingen, services, pakketten en externe toegang niet uitgevoerd, omdat deze afhankelijk zijn van een echt Linux-systeem. Details kunnen per distributie variëren, dus controleer de documentatie van uw eigen systeem.
Veilig aan de slag
Om te oefenen hoef je geen Linux te installeren. Goede opties zijn onder meer:
- Windows: Windows-subsysteem voor Linux (WSL), of Git Bash voor de basis.
- macOS: de ingebouwde terminal, waarvan de opdrachten sterk op elkaar lijken, hoewel sommige opties verschillen.
- Elk systeem: een container. Onze Docker-tutorial voor beginners laat zien hoe u er een kunt starten.
Oefen in een wegwerpmap en onthoud dat alles in Linux hoofdlettergevoelig is: Notes.txt en notes.txt zijn verschillende bestanden.
Anatomie van een commando
ls -l /var/log
^ ^ ^
| | argument: what to act on
| option: how to behave
command: what to run
Korte opties kunnen meestal worden gecombineerd, dus ls -l -a en ls -la zijn hetzelfde. Bij lange opties worden twee streepjes gebruikt, zoals in --help. Voor hulp voert u man ls uit voor de volledige handleiding, of ls --help voor een samenvatting. Druk op q om een handleidingpagina te verlaten.
Beweeg door het bestandssysteem
| Commando | Wat het doet |
|---|---|
pwd |
Drukt uw huidige map af |
ls |
Geeft bestanden weer |
ls-la |
Geeft een overzicht van alle bestanden, inclusief verborgen bestanden, met details |
cd-map |
Verplaatst naar een map |
cd.. |
Gaat één niveau omhoog |
cd-~ |
Gaat naar uw thuismap |
cd- |
Keert terug naar de vorige map |
Druk op Tab om bestandsnamen automatisch aan te vullen, en op de pijl-omhoog om eerdere opdrachten terug te halen. Deze twee gewoonten besparen meer tijd dan welke andere tip dan ook. Een bestandsnaam die met een punt begint, zoals .env, is verborgen, en ls toont deze alleen met -a.
Beheer bestanden en mappen
| Commando | Wat het doet |
|---|---|
mkdir -p project/logboeken |
Creëert mappen, inclusief ouders |
tik op notities.txt |
Creëert een leeg bestand |
cp a.txt b.txt |
Kopieert een bestand |
cp -r src/ backup/ |
Kopieert een map |
mv a.txt b.txt |
Hernoemt of verplaatst een bestand |
rm a.txt |
Verwijdert een bestand |
rm -r map/ |
Verwijdert een map en alles daarin |
Hier is een korte sessie van onze run:
$ mkdir -p project/logs
$ cd project
$ touch notes.txt
$ ls
logs notes.txt
$ cp notes.txt backup.txt
$ mv backup.txt old.txt
$ ls
logs notes.txt old.txt
$ rm old.txt
$ ls
logs notes.txt
Tip: rm maakt geen gebruik van een prullenbak en verwijderde bestanden zijn doorgaans verdwenen. Wees vooral voorzichtig met rm -r en jokertekens. Voer eerst ls uit met hetzelfde patroon, om te zien wat er precies overeenkomt, en gebruik rm -i als u voor elk bestand een prompt wilt hebben.
Bestandsinhoud bekijken
| Commando | Wat het doet |
|---|---|
katten bestand |
Drukt een heel bestand af |
minder bestand |
Bladert door een lang bestand (q om te stoppen) |
head -n 5 bestand |
Toont de eerste vijf regels |
staart -n 5 bestand |
Toont de laatste vijf regels |
staart -f bestand |
Volgt nieuwe regels zoals ze zijn geschreven |
wc -l bestand |
Telt lijnen |
Voor de volgende paar voorbeelden hebben we een klein logbestand gemaakt:
$ cat logs/app.log
ERROR db down
INFO started
ERROR disk full
INFO stopped
$ head -n 1 logs/app.log
ERROR db down
$ tail -n 1 logs/app.log
INFO stopped
$ wc -l logs/app.log
4 logs/app.log
tail -f is een dagelijks hulpmiddel waarmee u een live toepassingslogboek kunt bekijken terwijl u een bug reproduceert. Druk op Ctrl+C om het te stoppen.
Zoek met grep en vind
grep zoekt in bestanden, en find zoekt naar de bestanden zelf:
$ grep ERROR logs/app.log
ERROR db down
ERROR disk full
$ grep -c ERROR logs/app.log
2
$ find . -name "*.log"
./logs/app.log
| Optie | Betekenis |
|---|---|
grep-ik |
Negeert casus |
grep-r |
Zoekt recursief in een map |
grep-n |
Toont regelnummers |
grep-v |
Toont regels die niet overeenkomen |
grep-c |
Telt overeenkomende lijnen |
Leidingen en omleiding
Dit is het idee dat de opdrachtregel zo krachtig maakt. Elke tool doet één klein klusje, en je verbindt ze:
| Symbool | Wat het doet |
|---|---|
| |
Stuurt de uitvoer van het ene commando naar het volgende |
> |
Schrijft uitvoer naar een bestand, vervangt de inhoud ervan |
>> |
Voegt uitvoer toe aan een bestand |
2> |
Schrijft foutmeldingen naar een bestand |
$ echo "hello" > greeting.txt
$ echo "world" >> greeting.txt
$ cat greeting.txt
hello
world
Wees voorzichtig met een enkele >, omdat deze stilletjes overschrijft wat al in het bestand stond.
Een echt voorbeeld: vat een logboek samen
Hoeveel regels van elk type staan er in ons logboek? Het combineren van vier eenvoudige commando’s geeft het antwoord:
$ cut -d' ' -f1 logs/app.log | sort | uniq -c
2 ERROR
2 INFO
Van links naar rechts lezen: cut neemt het eerste door spaties gescheiden woord op elke regel, sort groepeert identieke woorden samen, en uniq -c telt elke groep. De sorteerstap is van belang, omdat uniq alleen aangrenzende duplicaten samenvouwt. Voeg | sort -nr toe aan het einde om de meest voorkomende eerst te vermelden.
Dit soort oneliners zijn een grote hulp bij het onderzoeken van storingen. Het kan je snel vertellen of een fout twee of tweeduizend keer is opgetreden, wat handig is om in een bugrapport te zetten.
Bestandsrechten
Voer ls -l uit en je zult zoiets als dit zien:
-rwxr-xr-- 1 asha devs 512 Nov 1 10:00 deploy.sh
Na het eerste teken, dat het bestandstype aangeeft, zijn er drie groepen van drie tekens, voor de eigenaar, de groep en alle anderen. Elk kan r (lezen), w (schrijven) en x (uitvoeren) hebben.
| Commando | Wat het doet |
|---|---|
chmod +x implementeren.sh |
Maakt een script uitvoerbaar |
chmod 644-bestand |
Eigenaar kan lezen en schrijven, anderen kunnen lezen |
chmod 755 script.sh |
Eigenaar heeft volledige toegang, anderen kunnen lezen en uitvoeren |
chown asha-bestand |
Verandert de eigenaar |
sudo-opdracht |
Voert een opdracht uit als beheerder |
De getallen tellen op: lezen is 4, schrijven is 2 en uitvoeren is 1. Dus 7 betekent alle drie, en 5 betekent lezen en uitvoeren. Vermijd chmod 777, dat iedereen volledige toegang geeft, als snelle oplossing voor toestemmingsfouten. Zoek in plaats daarvan de echte oorzaak. En gebruik sudo zorgvuldig, omdat het de veiligheidscontroles verwijdert die normaal gesproken het systeem beschermen.
Processen en systeeminformatie
| Commando | Wat het doet |
|---|---|
ps hulp |
Geeft actieve processen weer |
top of htop |
Toont een liveweergave van CPU en geheugen |
dood 1234 |
Vraagt proces 1234 om te stoppen |
df-h |
Toont vrije schijfruimte |
du -sh map |
Toont de grootte van een map |
gratis -h |
Toont geheugengebruik |
systemctl-status nginx |
Toont de status van een service |
journalctl -u nginx |
Toont de logboeken van een service |
Om software te installeren, gebruik je de pakketbeheerder van je distributie, zoals sudo apt install curl op Debian en Ubuntu, of sudo dnf install curl op Fedora en RHEL.
Archieven en werken op afstand
$ tar -czf logs.tar.gz logs
$ tar -tzf logs.tar.gz
logs/
logs/app.log
In tar betekent c creëren, z betekent gzip, f geeft het bestand een naam en t geeft de inhoud weer. Gebruik tar -xzf logs.tar.gz om een archief uit te pakken. Voor het werken met andere machines heb je deze drie nodig:
| Commando | Wat het doet |
|---|---|
ssh-gebruiker@server |
Opent een externe terminal |
scp-bestand gebruiker@server:/pad/ |
Kopieert een bestand via SSH |
krul -I https://example.com |
Toont de antwoordheaders van een URL |
Dezelfde commando’s worden gebruikt in Dockerfiles en CI/CD-pijplijnen, dus deze kennis loont de moeite voor het hele DevOps-werk.
Veel voorkomende fouten
rm -rfgebruiken zonder te kijken. Controleer eerst je map metpwden wees voorzichtig met spaties in paden.- Overschrijven met
>. Gebruik>>als je wilde toevoegen. - Alles uitvoeren met
sudo. Gebruik het alleen als het nodig is. - Opdrachten plakken die je niet begrijpt. Lees ze eerst, vooral als je een download naar een shell stuurt.
- Aanhalingstekens vergeten. Een bestandsnaam met spaties, zoals
"my file.txt", heeft deze nodig.
Tot slot
Je leert de terminal niet kennen door erover te lezen. Open een shell, maak een oefenmap en voer de opdrachten van elke sectie uit. Probeer vervolgens een echte vraag te beantwoorden met behulp van een pipe, bijvoorbeeld welke fout het vaakst voorkomt in een logbestand. Begin deze week met navigatie en bestanden, voeg grep en pipelines toe, en de rest volgt wanneer je het nodig hebt.
Veelgestelde vragen
Wat zijn de meest elementaire Linux-opdrachten?
Begin met pwd, ls, cd, mkdir, cp, mv, rm, cat en grep. Deze omvatten het verplaatsen, het beheren van bestanden en het zoeken, wat het meeste dagelijkse terminalwerk uitmaakt.
Hoe kan ik Linux-opdrachten oefenen op Windows?
Gebruik Windows Subsystem voor Linux voor een volledige omgeving, of Git Bash voor de basis. Het draaien van een Linux-container met Docker werkt ook goed.
Wat is het verschil tussen > en >> in Linux?
Een enkele > vervangt de inhoud van het bestand door de uitvoer. Een dubbele >> voegt de uitvoer toe aan het einde van het bestand en behoudt wat er al is.
Kan ik het rm-commando ongedaan maken?
Over het algemeen niet, omdat rm geen prullenbak gebruikt. Hersteltools helpen soms, maar zijn niet betrouwbaar, dus bewaar back-ups en controleer deze eerst zorgvuldig.
Wat betekent sudo?
sudo voert een enkele opdracht uit met beheerdersrechten. Het is nodig voor taken zoals het installeren van software, en het moet met zorg worden gebruikt.
Blijf leren
Hulp nodig met testen, WordPress of SEO?
We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen
AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…
Lees artikel →DevOpsOmgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan
Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…
Lees artikel →SoftwareontwikkelingAPI-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten
API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…
Lees artikel →TestautomatiseringSpotten in Python: unittest.mock, patch en de fouten die tests doen liegen
Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…
Lees artikel →SoftwaretestenCodedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent
Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…
Lees artikel →Databases & SQLDELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken
DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…
Lees artikel →Databases & SQLSQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden
SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…
Lees artikel →SoftwareontwikkelingTypeScript-interface versus type: echte verschillen, getest met de compiler
TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…
Lees artikel →SoftwareontwikkelingPython *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden
Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…
Lees artikel →SoftwareontwikkelingPython Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken
Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…
Lees artikel →Kunstmatige intelligentieWat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren
Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…
Lees artikel →DevOpsMonitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen
Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…
Lees artikel →DevOpsDocker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier
Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…
Lees artikel →TestautomatiseringTDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt
TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…
Lees artikel →SoftwaretestenGebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden
Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…
Lees artikel →Databases & SQLSQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen
SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…
Lees artikel →Databases & SQLSQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten
SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…
Lees artikel →SoftwareontwikkelingWat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld
Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…
Lees artikel →SoftwareontwikkelingJavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden
De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…
Lees artikel →SoftwareontwikkelingPython-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden
Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …
Lees artikel →Kunstmatige intelligentieWat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd
Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…
Lees artikel →DevOpsImplementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen
Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…
Lees artikel →TestautomatiseringSchilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen
Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…
Lees artikel →SoftwaretestenBelastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden
Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …
Lees artikel →SoftwaretestenTestcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken
Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…
Lees artikel →Databases & SQLOptimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing
Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…
Lees artikel →Databases & SQLSQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties
SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…
Lees artikel →SoftwareontwikkelingJavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs
Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…
Lees artikel →SoftwareontwikkelingPython-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden
Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…
Lees artikel →SoftwareontwikkelingPython-klassen en -objecten: OOP-zelfstudie met echte voorbeelden
Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…
Lees artikel →Kunstmatige intelligentieWat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype
Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…
Lees artikel →DevOpsLinux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden
Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…
Lees artikel →TestautomatiseringSelenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen
Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …
Lees artikel →SoftwaretestenEquivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden
Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…
Lees artikel →SoftwaretestenErnst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden
Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…
Lees artikel →Databases & SQLTutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden
Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …
Lees artikel →Databases & SQLSQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus
SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…
Lees artikel →SoftwareontwikkelingGit merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt
Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.
Lees artikel →SoftwareontwikkelingPython list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt
Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.
Lees artikel →Databases & SQLSQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)
Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.
Lees artikel →