Intro
Ibland ser vi kommandon som detta i skalet:
- $ ls foo > /dev/null 2>&1
Det kan vara svårt att förstå vad detta gör för första gången, så den här anteckningen kommer att förklara det kortfattat.
I/O Redirection
Antag att du nu har en enkel textfil:

Omdirigera nu innehållet i denna fil till en annan plats:

Omdirigera innehållet i filen.
I omdirigeringsåtgärden ovan ser vi inget utdata som visas på terminalen, eftersom kommandot > omdirigerar innehållet i test.txt tilloutput.txt, som är en standardutgång (stdout).
I motsats till standardutgång finns standardfel (stdr), t.ex.

Ett fel inträffade under omdirigeringen eftersom det inte finns någon fil med namnet no_such_file.txt i den aktuella katalogen. I det här fallet är det, trots att kommandot > används, inte möjligt att skriva in innehållet i output.txt, eftersom det inte finns något stdout-innehåll, utan istället ett felmeddelande i stderror.
Filbeskrivare
Filbeskrivare kan ses som ett positivt heltal för en öppen fil. Om du har 100 öppna filer har du i princip 100 motsvarande filbeskrivare.
I Unix/Unix-liknande system finns det också filbeskrivare som är dedikerade till stdout och stderr, vilka, för att vara tydlig, har dedikerade destinationer för utdata från dessaför dessa utdatadestinationer:
- 1: för stdout
- 2: för stderr
Sammanfogning av allting
Enligt konceptet ovan, om du vill skriva innehållet i en känd fil till en annan fil, kan du göra så här

1:an på den här sidan representerar stdout, vars syntax representeras som:
- >
Så när du ser någon skriva from.foo > to.bar, så utelämnar den bara
För att omdirigera stderr kan du göra så här:

Om du vill omdirigera både stdout och stderr till samma destination kan du göra så här

- &1 används som en referens till en filbeskrivare med id 1, dvs. en referens till stdout.
- 2>&1 innebär att innehållet i stderr omdirigeras till stdout.
Summary
- Det finns vanligtvis två destinationer för utdata: stdout och stderr.
- Vi kan styra utdata till olika platser, men vanligtvis till en fil.
- Filbeskrivning kan användas för att skilja mellan stdout (1) och stderr (2).
- kommando > output_location är egentligen en förkortning av kommando 1> output_location.
- Vi kan använda & för att hänvisa till andra filbeskrivare.