[Linux scripting] I/O (in Linux)

Een van de belangrijkste zaken in scripts schrijven onder Linux is het gebruik maken van I/O (Input en Output), ook wel bekend als text streams.

In elke Linux distributie (en elk ander OS) heb je de standaard in- en output:

  1. Standaard input stdio (0): meestal je toetsenbord of muis
  2. Standaard output stdout (1): meestal je monitor(s)
  3. Standaard fout stderr (2): meestal je monitor(s)

Als je het voor een willekeurig commando uit zou tekenen ziet het er ongeveer zo uit:

IO Linux

Hier kun je gebruik van maken in je scripts en dagelijkse beheertaken, bijvoorbeeld als je de standaard output (1) van een script naar een tekstbestand wilt schrijven:

$ cat /tmp/bestaatniet 1>resultaat

Het gebeurt bij een aantal (ingebouwde) applicaties dat foutmeldingen standaard naar een logboek geschreven worden. Dit is niet altijd wenselijk. Gelukkig kun je ook je standaard fout (2) naar je standaard output (1) en andersom laten schrijven:

$ cat /tmp/bestaatniet 2>&1

Andersom is het:

$ cat /tmp/bestaatniet 1>&2

Let op: Het & teken is om aan te geven dat je naar standaard output (1) of standaard fout (2) wil schrijven. Zou je het & teken vergeten ($ cat /tmp/bestaatniet 2>1) krijg je een nieuw bestand met de naam 1 waar eventuele foutmeldingen in staan.

Pipes

Dit concept kun je handig inzetten door de standaard output (1) van script A als standaard input (0) in script B te gebruiken.

Hoe je dit het beste toepast staat beschreven in de Pipes