Hur man omdirigerar stderr till stdout i Bash

How Redirect Stderr Stdout Bash



Kommandon i Linux tar lite input från användaren, vilket kan vara en fil eller något attribut, och vid körning ger de viss utmatning som kallas standardutmatning. Standardutmatningen kan vara en framgångsutgång eller en felutmatning; båda kommer att visas på din terminalskärm. Men i vissa fall vill du lagra standardutdata till en fil för testning eller felsökning av koden. I Linux kan dessa utdata omdirigeras till en fil, och processen att fånga den kallas omdirigering.







Varje process i Linux producerar tre dataströmmar, stdin, stdout och stderr:



  • stdin : Tar input från användaren via tangentbord
  • stdout : Visar utmatning på skärmen
  • stderr : Visar felinformation på skärmen

Varje dataström har ett numeriskt id:



Numeriskt id namn
0 stdin
1 stdout
2 stderr

Låt oss förklara omdirigering lite mer med detaljer:





Så här omdirigerar du standardutmatning och standardfel i Bash:

För att omdirigera standardutmatningen för kommandot använder vi 1 med en omdirigeringsoperator som är större än> -tecknet:

$ls 1>stdout.txt

Kommandot ovan skapar en fil och placerar standardutmatningen för ls -kommandot i filen stdout.txt.



För att läsa filen stdout.txt använder du:

$kattstdout.txt

Vi kan också omdirigera standardfel till en fil med kommandot:

$kattmyfile.txt2>stderr.txt

Om du vill visa filen stderr.txt använder du:

$kattstderr.txt

Se till att användning 2 är större än tecknet>. Eftersom det inte finns någon myfile.txt -fil i katalogen kommer cat -kommandot att ge ett fel som kommer att läggas till i filen stderr.txt.

Dessa standardutgångar kan också omdirigeras med ett enda kommando, använd:

$ls 1>stdout.txt2>stderr.txt

Utmatningen av ls -kommandot kommer att skrivas i stdout.txt filen, men stderr.txt kommer att förbli tomt eftersom det inte skulle finnas något fel.

Låt oss nu göra för stderr.txt:

$kattmyfile.txt1>stdout.txt2>stderr.txt

Använd kommandot nedan för att läsa stderr.txt.

$kattstderr.txt

Och naturligtvis kommer stdout.txt att vara tomt.

Slutsats :

Linux -kommando vid körning ger standardutmatning som kan vara en framgångsutgång eller en felutmatning. Generellt kan dessa utgångar inte omdirigeras med omdirigeringsoperatorer. vi måste använda specifika numeriska id: er med tecknet>. I den här guiden lärde vi oss hur man använder dessa siffertangenter för att omdirigera standardutmatning till en fil med exempel.