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