Intro
Sommetider ser vi kommandoer som denne i shell’en:
- $ ls foo > /dev/null 2>&1
Det kan være svært at forstå, hvad dette gør for første gang, så denne note vil forklare det kort.
I/O Redirection
Sæt, at du nu har en simpel tekstfil:

Opnå nu at omdirigere indholdet af denne fil til et andet sted:

Omdiriger indholdet af filen.
I ovenstående omdirigering kan vi ikke se noget output på terminalen, fordi >-kommandoen omdirigerer indholdet af test.txt tiloutput.txt, som er en standardudgang (stdout).
I modsætning til standard output er der standard error (stdr), f.eks.

En fejl opstod under viderestillingsprocessen, fordi der ikke findes nogen fil med navnet no_such_file.txt i den aktuelle mappe. I dette tilfælde er det ikke muligt at indtaste indholdet i output.txt, selv om kommandoen > anvendes, fordi der ikke er noget stdout-indhold, men i stedet en fejlmeddelelse i stderror.
Fildeskriptor
Fildeskriptor kan opfattes som et positivt heltal for en åben fil. Hvis du har 100 åbne filer, har du i princippet 100 tilsvarende fildeskriptorer.
I Unix/Unix-lignende systemer er der også fildeskriptorer dedikeret til stdout og stderr, som, for at være helt klar, har dedikerede destinationer for output af dissefor disse output destinationer:
- 1: for stdout
- 2: for stderr
Sammenlægning af alle sammen
I henhold til ovenstående koncept, hvis du ønsker at skrive indholdet af en kendt fil til en anden fil, kan du gøre det

1’eren på denne side repræsenterer stdout, hvis syntaks er repræsenteret som:
- >
Så når du ser nogen skrive from.foo > to.bar, er det bare at undlade at skrive
Sådan kan du også omdirigere stderr på følgende måde:

Hvis du ønsker at omdirigere både stdout og stderr til den samme destination, kan du gøre dette

- &1 bruges som en henvisning til et fildeskriptor-id på 1, dvs. en henvisning til stdout.
- 2>&1 betyder, at indholdet af stderr omdirigeres til stdout.
Summary
- Der er normalt to destinationer for output: stdout og stderr.
- Vi kan dirigere output til forskellige steder, men normalt til en fil.
- Fildeskriptor kan bruges til at skelne mellem stdout (1) og stderr (2).
- kommando > output_location er faktisk en forkortelse af kommando 1> output_location.
- Vi kan bruge & til at henvise til andre fildeskriptorer.