Er zijn 3 file descriptors, stdin, stdout en stderr (std=standaard).
In principe kun je:
Een opmerking hierover: met de opdracht less kun je zowel stdout (welke in de buffer blijft) en stderr, welke op het scherm wordt weergegeven, bekijken, maar is verwijderd als je door de buffer probeert te 'bladeren'.
Hiermee wordt de uitvoer van een programma naar een bestand weggeschreven.
ls -l > ls-l.txt
Hier zal een bestand, genaamd 'ls-l.txt' worden aangemaakt en hierin
zal worden opgevangen wat je krijgt als je de opdracht 'ls -l' typt
en uitvoert.
Dit zorgt dat de uitvoer van stderr van een programma naar een bestand wordt weggeschreven.
grep da * 2> grep-errors.txt
Hier zal een bestand, genaamd 'grep-errors.txt' worden aangemaakt en
hier zal dan het stderr gedeelte van de uitvoer in staan van de
opdracht 'grep da *'.
Dit zorgt dat de sterr uitvoer van een programma naar dezelfde filedescriptor als stdout wordt weggeschreven.
grep da * 1>&2
Hier wordt het stdout gedeelte van de opdracht naar stderr gezonden,
je merkt dat mogelijk op verschillende manieren.
Dit zorgt dat de stderr uitvoer van een programma naar dezelfde filedescriptor wordt weggeschreven als stdout.
grep * 2>&1
Hier wordt het stderr gedeelte van de opdracht naar stdout gestuurd,
als je middels een pipe-symbool de uitvoer naar less stuurt, zul je
zien dat de regels die normaal gesproken 'verdwijnen' (als ze naar
stderr worden geschreven) nu behouden blijven (omdat ze zich op
stdout bevinden).
Hiermee zal alle uitvoer van een programma in een bestand worden geplaatst. Soms is dit geschikt voor cron entries, als je een opdracht in absolute stilte wilt laten uitvoeren.
rm -f $(find / -name core) &> /dev/null
Dit (denkend aan een cron entry) zal ieder bestand genaam 'core'
in iedere directory verwijderen. Merk op dat je er nogal zeker
van moet zijn wat een opdracht doet als je de uitvoer ervan gaat
verwijderen.