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.txtKommandot 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.