## Streams, pipes en redirects

Wanneer er gesproken wordt over een Linux-stream dan zijn het zijn de gegevens die in een Linux-shell van het ene proces naar het andere proces gaan.

Streams kunnen door verschillende Linux verbindingen van opdracht naar opdracht gaan om beheerstaken uit te voeren. Tekens in Linux-streams zijn ofwel standaardinvoer (STDIN) of -uitvoer (STDOUT) of standaard errors (STDERR)

Kortom, wanneer we spreken van een stream is het dus de stroom data die gegenreerd wordt door een gebruiker of een programma.

Wanneer je werkt op de CLI in Linux moet je bekend zijn met de volgende technieken: Streams, Pipes en Redirects. Maar voordat we ons daarin gaan verdiepen maken we eerst kennis met de begrippen: STDIN, STDOUT en STDERR (standard inpute, standard output, standard error).

De STDIN: (Standaard input) is een opdracht die jij in kan voeren op je toetsenbord, maar het kan ook een bestand zijn (met allemaal namen en adressen) waarmee je een MySQL database kan vullen. Wanneer we een STDIN in het commando nodig hebben, gebruiken we de <

STDOUT: (Standaard output) dit is de bestemming waar de opdracht zijn uitvoer naartoe stuurt. Vaak is dit het venster waar de opdracht wordt ingevoerd, maar het zou net zo goed een bestand kunnen zijn. Wanneer we een STDOUT in het commando nodig hebben, gebruiken we de >

STDERR: (Standaard Error) dit is een standaard erro. dit is de lokatie waar errors bij de uitvoering van een commando heengestuurd kunnen worden. Dit is vaak het venster waar het commando wordt uitgevoerd, maar kan net zo goed een bestand zijn. Vaak wordt er voor de locatie van de STDERR gebruik gemaakt van /dev/null, dit kun je vergelijken met de prullenbak in Windows alleen kan je hier geen bestanden mee uithalen. WEG is WEG! Wanneer we een STDERR in het commando nodig hebben, gebruiken we de 2>

Wannneer je werkt met STDIN, STDOUT en STDERR is het dus mogelijk om opdrachten ergens anders heen te sturen, dit wordt redirecten genoemd.

Het redirecten met de STDIN wordt niet heel veel meer gebruikt. Je moet wel weten dat er gebruik gemaakt wordt van een SDTIN wanneer je het symbool < ziet

Redirects https://youtu.be/gE8-4eU3Mcc

Nu je weet hoe Linux omgaat met redirecten van streams gaan we kijken wat pipes ( | ) zijn. Pipes in Linux gebruiken we als de uitkomst van een bepaald commando doorgestuurd moet worden naar een ander commando. Wanneer een Linux-commando nu heel veel data genereert zou u dit kunnen filteren met het commando 'grep'. Het commando 'grep'is uitermate geschikt om te filteren wanneer een commando veel data genereert of data uit grote tekstbestanden te filteren.

Als voorbeeld kijken we naar een commando dat veel output genereert 'ps aux'. Dit commando laat alle lopende processen op het systeem zien.

- a : - Deze optie drukt de actieve processen van alle gebruikers af.
- u : - Deze optie toont de kolom gebruiker of eigenaar in uitvoer.
- x : - Deze optie drukt de processen af ​​die niet vanaf de terminal zijn uitgevoerd.

Wanneer je uit de hele lijst met processen alleen wilt weten welke processen en door een bepaalde gebruiker zijn gestart dan kan je het commando ps aux pipen naa het commando grep en op deze manier filteren. Dit pipen gebeurt op de volgende manier:

ps aux | grep *gebruiker*

Wat Linux dan weer zo krachtig maakt is dat de output geredirect kan worden naar een ander bestand. Dit is zeer zeker de moeite waard om mee te experimenteren, bijvoorbeeld:

ps aux | grep *gebruiker* > processenGebruiker.txt

Pipes https://youtu.be/bCjUW7ZcrB4

Wanneer je werkt met pipes is het ook handig om te werken met tee' s in deze pipes. Dit zijn zogenaamde t-splitsingen.De uitwerking van een commando kan eigenlijk twee kanten op. Zo zou je bijvoorbeeld een log kunnen uitlezen en bepaalde informatie (bijvoorbeeld gebruikers) weg kunnen laten schrijven in een bestand en locaties waar deze gebruikers in willen lggen in een ander bestand.

Maken van een tee in Linux https://youtu.be/5GmTfzSOJfo