Omdiriger stdout og stderr til File

Redirect Stdout Stderr File



Når du omdirigerer et kommandoutput til en fil, vil du bemærke, at fejlmeddelelserne udskrives på terminalvinduet. Enhver kommando, der udføres i en hvilken som helst Linux -shell, såsom bash, bruger tre regelmæssige I/O -streams. En numerisk filbeskrivelse bruges til at repræsentere hver strøm.

  • Standardindgangsstrømmen (stdin): 0
  • Standard output stream (stdout): 1
  • Standardfejlstrømmen (stderr): 2

I dette indlæg vil vi forstå de oplysninger, der er under omdirigering af stdout og stderr til fil.







Standard output (stdout):

Hvert operativsystem baseret på Linux har en overbevisning om et standardsted for den udførte kommando. Alle omtaler denne forestilling som stdout eller standardoutput for at få den til at lyde lettere. Din Bash- eller Zsh -skal leder konstant efter standardoutputplaceringen. Når skallen registrerer nyt output, viser det det på terminalskærmen, så du kan se det. Ellers sender det output til dets standardplacering.



Standardfejl (stderr):

Standardfejl eller stderr ligner standardindgang og -output, men den bruges til at gemme fejlmeddelelser. Standardfejlen kan omdirigeres til kommandolinjen eller en fil ved hjælp af en terminal. Hvis du vil registrere eller gemme meddelelser i en separat logfil eller skjule fejlmeddelelserne, hjælper omdirigering af stderr dig. Lad os nu gå mod den praktiske side af stdout og stderr omdirigering.



Omdirigere stdout og stderr til en fil:

Som omdirigering er en metode til at fange et programoutput og sende det som input til en anden kommando eller fil. I/O -streamene kan omdirigeres ved at bruge n> -operatoren i brug, hvor n er filbeskrivelsesnummeret. Til omdirigering af stdout bruger vi 1> og for stderr tilføjes 2> som en operator.





Vi har oprettet en fil med navnet sample.txt for at gemme det omdirigerede output i vores nuværende bibliotek.



(Kommando> fil) betragtes som den klassiske omdirigeringsoperator, der kun omdirigerer standardoutput med standardfejlen vist i terminalen. Vi vil også demonstrere forskellige muligheder for at omdirigere stderr.

Omdirigere stderr og stdout til separate filer:

Nedenfor er kommandosyntaksen til omdirigering af stdout og stderr til separate filer.

kommando >ud2>fejl

Den nedenfor angivne kommando omdirigerer output til out-filen og fejlmeddelelser til fejlfilen.

$katsample.txt>ud2>fejl

Omdirigere stderr til stdout:

Det er en almindelig praksis at omdirigere stderr med standardoutput fra et program for at gemme alt i en enkelt fil. Her er kommandosyntaksen til omdirigering af stderr til stdout:

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

$katsamplefile.txt

> out -omdirigeringer omdirigerer stdout til samplefile.txt, og 2> & 1 omdirigerer stderr til den aktuelle placering af stdout.

Hvis stderr først omdirigeres til stdout, skal du bruge kommandoen nedenfor til at omdirigere stdout til en fil.

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

$katsamplefile.txt

&> bruges også til den samme funktionalitet, som2> & 1 udfører.

kommando &> fil$ls &>samplefile.txt

$katsamplefile.txt

Omdirigere stdout og stderr til en enkelt fil:

Alle skallerne understøtter ikke denne form omdirigering, men bash og Zsh understøtter det. Stdout og stderr kan omdirigeres ved at bruge følgende syntaks.

kommando &>ud$katsample.txt&>ud

I det kommende afsnit af artiklen vil vi tjekke det separate eksempel på stdout og stderr omdirigering.

Omdirigere stdout til en fil:

Standardoutput repræsenteres af 1'et på listen over filbeskrivelsesnumre. For omdirigeringskommando uden filbeskrivelsesnummer satte terminalen dens værdi til 1. Syntaksen til omdirigering af stdout til en fil er givet som følger:

kommando > fil

Vi bruger sample.filen til lagring af standardoutput for kommandoen ls -al

$ls -til >sample.txt

$katsample.txt

kommando 1> fil$ls 1>sample.txt

$katsample.txt

Omdirigere stderr til en fil:

Brug 2> -operatoren til at omdirigere stderr til en fil.

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

Vi kan kombinere eksekveringen for stderr og stdout i en enkelt omdirigeringskommando.

kommando 2>error.txt1>output.txt

I nedenstående eksempel vil fejlmeddelelserne blive gemt i error.txt, hvor output.txt vil have sin standard output for ls-kommando.

$ls 2>error.txt1>output.txt

$katoutput.txt

Konklusion:

At have konceptet omdirigering og filbeskrivelser til I/O -streams er meget værdifuldt, mens du arbejder i en Linux -terminal. I dette indlæg har vi talt om de almindelige I/O -strømme, herunder stdout og stderr. Det første afsnit i dette indlæg giver dig detaljerede oplysninger om omdirigering, I/O -streams og den numeriske filbeskrivelse. Dernæst har du set det praktiske eksempel på forskellige former for omdirigering af stdout og stderr.