Omdiriger stdout og stderr til File

Redirect Stdout Stderr File



Når du omdirigerer en kommandoutgang til en fil, vil du legge merke til at feilmeldingene skrives ut på terminalvinduet. Enhver kommando som utføres i et hvilket som helst Linux -skall, for eksempel bash, bruker tre vanlige I/O -strømmer. En numerisk filbeskrivelse brukes til å representere hver strøm.

  • Standard inngangsstrøm (stdin): 0
  • Standard utgangsstrøm (stdout): 1
  • Standard feilstrøm (stderr): 2

I dette innlegget vil vi forstå informasjonen som kommer under omdirigere stdout og stderr til fil.







Standard utgang (stdout):

Hvert operativsystem basert på Linux har en overbevisning om et standard sted for den utførte kommandoen. Alle omtaler denne oppfatningen som stdout eller standardutgang for å få den til å høres enklere ut. Ditt Bash- eller Zsh -skall leter stadig etter standard utgangssted. Når skallet oppdager ny utgang, viser det det på terminalskjermen slik at du kan se det. Ellers sender den utgangen til standardplasseringen.



Standard feil (stderr):

Standardfeil eller stderr ligner på standard input og output, men den brukes til å lagre feilmeldinger. Standardfeilen kan omdirigeres til kommandolinjen eller en fil ved hjelp av en terminal. Hvis du vil registrere eller lagre meldinger i en egen loggfil eller skjule feilmeldingene, vil omdirigere stderr hjelpe deg. La oss nå gå mot den praktiske siden av stdout og stderr omdirigering.



Omdirigere stdout og stderr til en fil:

Som omdirigering er en metode for å fange en programutgang og sende den som inngang til en annen kommando eller fil. I/O -strømmer kan omdirigeres ved å sette n> -operatøren i bruk, hvor n er filbeskrivelsesnummeret. For omdirigering av stdout bruker vi 1> og for stderr legges 2> til som operatør.





Vi har opprettet en fil som heter sample.txt for å lagre den omdirigerte utgangen i vår nåværende katalog.



(Kommando> fil) regnes som den klassiske omdirigeringsoperatoren som bare omdirigerer standardutgangen med standardfeilen som vises i terminalen. Vi vil også demonstrere forskjellige alternativer for å omdirigere stderr.

Omdirigere stderr og stdout til separate filer:

Nedenfor er kommandosyntaksen for å omdirigere stdout og stderr til separate filer.

kommando >ute2>feil

Kommandoen nedenfor vil omdirigere utdataene til utfilen og feilmeldinger til feilfilen.

$kattsample.txt>ute2>feil

Omdirigere stderr til stdout:

Det er vanlig praksis å omdirigere stderr med standardutdataene til et program for å lagre alt i en enkelt fil. Her er kommandosyntaksen for å omdirigere stderr til stdout:

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

$kattsamplefile.txt

> ut omdirigeringer omdirigerer stdout til samplefile.txt, og 2> & 1 omdirigerer stderr til gjeldende plassering av stdout.

Hvis stderr blir omdirigert til stdout først, bruker du kommandoen nedenfor for å omdirigere stdout til en fil.

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

$kattsamplefile.txt

&> brukes også for den samme funksjonaliteten som2> & 1 utfører.

kommando &> fil$ls &>samplefile.txt

$kattsamplefile.txt

Omdirigere stdout og stderr til en enkelt fil:

Alle skjellene støtter ikke denne formen omdirigering, men bash og Zsh støtter den. Stdout og stderr kan omdirigeres ved å bruke følgende syntaks.

kommando &>ute$kattsample.txt&>ute

I den kommende delen av artikkelen vil vi sjekke ut det separate eksemplet for stdout og stderr omdirigering.

Omdirigere stdout til en fil:

Standardutgangen er representert med 1 i listen over filbeskrivelsesnumre. For omdirigeringskommando uten filbeskrivelsesnummer, satte terminalen verdien til 1. Syntaksen for å omdirigere stdout til en fil er gitt som følger:

kommando > fil

Vi bruker sample.filen til å lagre standardutdataene for kommandoen ls -al

$ls -til >sample.txt

$kattsample.txt

kommando 1> fil$ls 1>sample.txt

$kattsample.txt

Omdirigere stderr til en fil:

Bruk 2> -operatoren for å omdirigere stderr til en fil.

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

Vi kan kombinere kjøringen for stderr og stdout i en enkelt omdirigeringskommando.

kommando 2>error.txt1>output.txt

I eksemplet nedenfor vil feilmeldingene lagres i error.txt, hvor output.txt vil ha sin standard output for ls-kommando.

$ls 2>error.txt1>output.txt

$kattoutput.txt

Konklusjon:

Å ha begrepet omdirigering og filbeskrivelser for I/O -strømmer er veldig verdifullt mens du arbeider i en Linux -terminal. I dette innlegget har vi snakket om de vanlige I/O -strømmer, inkludert stdout og stderr. Den første delen av dette innlegget gir deg detaljert informasjon om omdirigering, I/O -strømmer og den numeriske filbeskrivelsen. Deretter har du sett det praktiske eksemplet på forskjellige former for omdirigering av stdout og stderr.