3.1 Zoeken en doorgeven
Hier bouw je op verder: Bestanden lezen met cat, head en tail
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
Met grep zoek je in een bestand naar een woord. Je krijgt alleen de regels te zien waar het in staat:
grep Failed /var/log/auth.log
Mar 26 10:15:01 oefenpc sshd[1234]: Failed password for admin from 192.168.1.100
Mar 26 10:15:03 oefenpc sshd[1234]: Failed password for admin from 192.168.1.100
Mar 26 10:15:04 oefenpc sshd[1234]: Failed password for admin from 192.168.1.100
grep let op hoofdletters: grep failed vindt hier niets. Met grep -i maakt het niet uit.
De pipe
Het teken | heet een pipe. Hij geeft de uitvoer Wat een commando terugzegt: meestal tekst op het scherm, of met > in een bestand.Alle begrippen van het ene commando Een opdracht die je in de terminal typt, zoals whoami of ls; na Enter voert de computer hem uit.Uitgelegd in 1.1 Je eerste commando'sAlle begrippen door aan het volgende, in plaats van hem op het scherm te zetten:
cat /etc/passwd | grep student
student:x:1000:1000:student:/home/student:/bin/bash
cat leest het hele bestand, en grep houdt alleen de regel met student over. Zo bouw je met kleine commando's iets groters.
Voorspel
In 1.1 zag je wat er in /etc staat. Wat geeft dit, denk je?
ls /etc | grep host
Klik hier als je het hebt geprobeerd
hostname
hosts
ls /etc geeft de namen in /etc, en grep host houdt de namen over waar host in zit. Ze staan onder elkaar: op het scherm zet ls de namen naast elkaar, maar naar een pipe zet hij elke naam op een eigen regel. Zo kan grep, dat per regel kiest, per naam kiezen.
Opdracht 3.1.a: wat doet de webserver?
In /var/log/apache2/access.log schrijft de webserver elk bezoek. Zoek met één regel alle bezoeken aan inloggen.html.
Klik hier voor een tip
Het woord waarnaar je zoekt komt eerst, het bestand erachter.
Klik hier voor het antwoord
grep inloggen.html /var/log/apache2/access.log
192.168.1.100 - - [26/Mar/2026:10:15:01 +0100] "GET /inloggen.html HTTP/1.1" 200 1234
192.168.1.100 - - [26/Mar/2026:10:15:05 +0100] "POST /inloggen.html HTTP/1.1" 303 0
Twee bezoeken van dezelfde computer: eerst haalt hij het formulier op (GET), dan verstuurt hij het (POST). De andere drie regels in het logboek gaan over andere pagina's. Met cat /var/log/apache2/access.log | grep inloggen.html mag ook; het resultaat is hetzelfde.
Er gaat iets mis
Geen uitvoer
Oorzaak: grep vond niets. Dat is geen fout: dan zegt hij niets. Vaak scheelt het een hoofdletter.
Oplossing: probeer het met -i, of zoek op een kleiner stuk van het woord.
# niets: in het bestand staat Failed met een hoofdletter
grep failed /var/log/auth.log
# drie regels
grep -i failed /var/log/auth.log
De terminal blijft wachten
Oorzaak: je zette geen bestand achter het patroon, en er komt ook niets door een pipe binnen. Dan wacht grep op tekst die jij typt. Dat lijkt op vastlopen. De oefenterminal kan niet wachten, en zegt het:
oefenterminal: grep zonder bestand wacht op wat je typt; dat kan hier niet. Zet een bestand achter het patroon.
Oplossing: zet het bestand achter het patroon. Staat het al te wachten, in WSL Windows Subsystem for Linux: een echte Linux die op je Windows-computer draait, naast je gewone programma's.Uitgelegd in 5.1 WSL installerenAlle begrippen of op een server Een computer of programma dat iets aanbiedt aan andere computers, zoals een website; een servercomputer staat meestal zonder scherm in een datacenter.Uitgelegd in 7.2 Inloggen op een andere computerAlle begrippen, druk dan op Ctrl+C: dat stopt het commando dat nu draait, en je krijgt je prompt De regel voor de cursor, zoals student@oefenpc:~$: wie je bent, op welke computer, en in welke map je staat.Uitgelegd in 1.1 Je eerste commando'sAlle begrippen terug.
Door naar 3.2 Bestanden vinden.