Omdirigera stdout och stderr till File

Redirect Stdout Stderr File



När du omdirigerar någon kommandoutmatning till en fil kommer du att märka att felmeddelandena skrivs ut på terminalfönstret. Alla kommandon som körs i alla Linux -skal, till exempel bash, använder tre vanliga I/O -strömmar. En numerisk filbeskrivning används för att representera varje ström.

  • Standard ingångsström (stdin): 0
  • Standardutgångsströmmen (stdout): 1
  • Standardfelströmmen (stderr): 2

I det här inlägget kommer vi att förstå informationen som finns under omdirigering av stdout och stderr till fil.







Standardutgång (stdout):

Varje operativsystem baserat på Linux har en övertygelse om en standardplats för det exekverade kommandot. Alla hänvisar till denna uppfattning som stdout eller standardutgång för att det ska låta enklare. Ditt Bash- eller Zsh -skal letar ständigt efter standardutmatningsplatsen. När skalet upptäcker ny utmatning visas det på terminalskärmen så att du kan se det. Annars kommer den att skicka utmatningen till dess standardplats.



Standardfel (stderr):

Standardfel eller stderr liknar standardinmatning och -utgång, men det används för att lagra felmeddelanden. Standardfelet kan omdirigeras till kommandoraden eller en fil med en terminal. Om du vill spela in eller lagra meddelanden i en separat loggfil eller dölja felmeddelandena, hjälper omdirigering av stderr dig. Låt oss nu gå mot den praktiska sidan av stdout och stderr -omdirigering.



Omdirigera stdout och stderr till en fil:

Som omdirigering är en metod för att fånga en programutmatning och skicka den som en ingång till ett annat kommando eller en fil. I/O -strömmarna kan omdirigeras genom att använda n> -operatören, där n är filbeskrivningsnumret. För omdirigering av stdout använder vi 1> och för stderr läggs 2> till som operatör.





Vi har skapat en fil med namnet sample.txt för att lagra den omdirigerade utdata i vår nuvarande katalog.



(Kommandot> filen) anses vara den klassiska omdirigeringsoperatören som bara omdirigerar standardutmatningen med standardfelet som visas i terminalen. Vi kommer också att visa olika alternativ för att omdirigera stderr.

Omdirigera stderr och stdout till separata filer:

Nedan finns kommandosyntaxen för omdirigering av stdout och stderr till separata filer.

kommando >ut2>fel

Nedanstående kommando omdirigerar utdata till utfilen och felmeddelanden till felfilen.

$kattsample.txt>ut2>fel

Omdirigera stderr till stdout:

Det är en vanlig metod att omdirigera stderr med standardutmatningen för ett program för att lagra allt i en enda fil. Här är kommandosyntaxen för omdirigering av stderr till stdout:

kommando >ut2> &1$ls >samplefile.txt2> &1

$kattsamplefile.txt

> ut omdirigeringar omdirigerar stdout till samplefile.txt, och 2> & 1 omdirigerar stderr till den aktuella platsen för stdout.

Om stderr omdirigeras till stdout först, använd kommandot nedan för att omdirigera stdout till en fil.

kommando 2> &1 > fil$ls -till 2> &1 >samplefile.txt

$kattsamplefile.txt

&> används också för samma funktionalitet som2> & 1 utför.

kommando &> fil$ls &>samplefile.txt

$kattsamplefile.txt

Omdirigera stdout och stderr till en enda fil:

Alla skal stöder inte denna formomdirigering, men bash och Zsh stöder den. Stdout och stderr kan omdirigeras genom att använda följande syntax.

kommando &>ut$kattsample.txt&>ut

I det kommande avsnittet i artikeln kommer vi att kolla in det separata exemplet för stdout och stderr -omdirigering.

Omdirigera stdout till en fil:

Standardutmatningen representeras av 1: an i listan över filbeskrivningsnummer. För omdirigeringskommando utan något filbeskrivningsnummer anger terminalen dess värde till 1. Syntaxen för omdirigering av stdout till en fil ges enligt följande:

kommando > fil

Vi använder sample.filen för att lagra standardutmatningen för kommandot ls -al

$ls -till >sample.txt

$kattsample.txt

kommando 1> fil$ls 1>sample.txt

$kattsample.txt

Omdirigera stderr till en fil:

Använd operatorn 2> för att omdirigera stderr till en fil.

kommando 2> fil $ls -till 2>sample.txt

Vi kan kombinera körningen för stderr och stdout i ett enda omdirigeringskommando.

kommando 2>error.txt1>output.txt

I exemplet nedan kommer felmeddelandena att lagras i error.txt, där output.txt kommer att ha sin standard output av ls-kommando.

$ls 2>error.txt1>output.txt

$kattoutput.txt

Slutsats:

Att ha konceptet omdirigering och filbeskrivningar för I/O -strömmar är mycket värdefullt när du arbetar i en Linux -terminal. I det här inlägget har vi pratat om de vanliga I/O -strömmarna, inklusive stdout och stderr. Det första avsnittet i det här inlägget ger dig detaljerad information om omdirigeringen, I/O -strömmar och den numeriska filbeskrivningen. Därefter har du sett det praktiska exemplet för olika former av stdout och stderr omdirigering.