Verder Terug Inhoud

3. Alles over omleiding

3.1 Theorie en snelle naslag

Er zijn 3 file descriptors, stdin, stdout en stderr (std=standaard).

In principe kun je:

  1. stdout naar een bestand omleiden
  2. stderr naar een bestand omleiden
  3. stdout naar stderr omleiden
  4. stderr naar stdout omleiden
  5. stderr en stdout naar een bestand omleiden
  6. stderr en stdout naar stdout omleiden
  7. stderr en stdout naar stderr omleiden
1 is een representatie van stdout en 2 van stderr.

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'.

3.2 Voorbeeld: stdout naar bestand

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.

3.3 Voorbeeld: stderr naar bestand

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 *'.

3.4 Voorbeeld: stdout naar stderr

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.

3.5 Voorbeeld: stderr naar stdout

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).

3.6 Voorbeeld: stderr en stdout naar bestand

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.
Verder Terug Inhoud