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:
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