In- en output Streams
In Linux (en Unix-gebaseerde systemen) werken programma’s met streams voor het verwerken van data.

Er zijn drie standaardstreams:
Standaard input (stdin) [Bestandsdescriptor 0]
Verwacht invoer van de gebruiker of een bestand.
Standaard komt de invoer van het toetsenbord
Standaard output (stdout) [Bestandsdescriptor 1]
Stuurt de normale uitvoer van een programma naar het scherm.
Standaard error (stderr) [Bestandsdescriptor 2]
Stuurt foutmeldingen naar het scherm.
Linux stelt je in staat om deze streams te 'redirecten' en met behulp van een 'pipeline' de uitvoer van het ene programma naar het andere door te sturen. Zo kan je bijvoorbeeld een sortering uitvoeren met het sort
commando en deze opslagen in een nieuw bestand.
Redirection in Linux
Redirection stelt je in staat om de standaard input, output of error output om te leiden naar een bestand of een ander commando.
Output Redirection (>
, >>
)
>
, >>
)Laten we eerst even kijken hoe we de standaardoutput naar een bestand schrijven.
Overschrijven (>
)
>
)Wanneer we standaardoutput van een commando naar een bestand willen schrijven maken we gebruik van >
.
echo "Hallo wereld" > bestand.txt
Dit schrijft "Hallo wereld" naar bestand.txt.
⚠️ Let op, indien het bestand reeds bestaat zal dit het bestand volledig overschrijven.
Toevoegen (>>
)
>>
)Wanneer je bestand waarin je de uitkomst wil naartoe schrijven al bestaat, en je wil de uitkomst van de je commando toevoegen aan dit bestand zonder het te overschrijven kunnen we >>
gebruiken.
echo "Nieuwe regel" >> bestand.txt
Nu wordt "Nieuwe regel" toegevoegd aan bestand.txt, zonder de vorige inhoud te verwijderen.
Input Redirection (<
)
<
)Je kunt standaard input van een bestand lezen in plaats van van het toetsenbord. Zo kunnen we bijvoorbeeld opties voor een commando opslagen in een bestand en dit bestand gebruiken als input stream wanneer we het commando uitvoeren.
sort_opties.txt
-t ';'
-k 3
-n
-r
sort $(< sort_opties.txt) pokemon.txt
We gebruiken hier $(< bestand)
om de inhoud van een bestand in te lezen en als een argument door te geven.
Error Redirection (2>
, 2>>
)
2>
, 2>>
)Fouten (stderr) kunnen ook naar een bestand worden omgeleid.
Overschrijven (2>
)
2>
)In het volgende commando proberen we een directory te tonen die niet bestaat:
ls /niet-bestaande-map 2> fouten.log
We sturen de foutmelding naar fouten.log
in plaats van naar het scherm door middel van 2>
.
⚠️ Let op, indien het bestand reeds bestaat zal dit het bestand volledig overschrijven.
Append (2>>
)
2>>
)Wanneer we de foutmelding willen toevoegen aan een reeds bestand zonder te overschrijven gebruiken we weer twee groter dan tekens.
ls /nog-een-niet-bestaande-map 2>> fouten.log
Nu wordt de foutmelding toegevoegd aan fouten.log.
Output en Error samen redirecten (2>&1
)
2>&1
)Soms wil je zowel standaardoutput als standaarderror naar hetzelfde bestand sturen.
ls /bestaande-map /niet-bestaande-map > output_en_fouten.log 2>&1
> output_en_fouten.log
stuurt stdout naar het bestand.2>&1
stuurt stderr naar dezelfde bestemming als stdout.
Je kan dit ook nog korter schrijven met &>
:
ls /bestaande-map /niet-bestaande-map &> output_en_fouten.log
Combineren van Commando's
Een pipeline (|) stuurt de uitvoer van het ene commando naar de invoer van een ander commando.

Op deze manier kunnen we in één taak de inhoud tonen van de /etc
-map, en hierin filteren op bestanden die "passwd"
bevatten:
ls -al /etc | grep "passwd"
Last updated