Kaip peradresuoti stderr į stdout „Bash“

How Redirect Stderr Stdout Bash



„Linux“ komandos paima tam tikrą vartotojo įvestį, kuri gali būti failas ar bet koks atributas, ir vykdant jos duoda tam tikrą išvestį, vadinamą standartine išvestimi. Standartinė išvestis gali būti sėkminga išvestis arba klaidos išvestis; abu bus rodomi jūsų terminalo ekrane. Tačiau kai kuriais atvejais standartinius išėjimus norite išsaugoti faile, kad būtų galima patikrinti ar derinti kodą. „Linux“ sistemoje šie išėjimai gali būti nukreipti į failą, o jo fiksavimo procesas vadinamas peradresavimu.





Kiekvienas „Linux“ procesas sukuria tris duomenų srautus, stdin, stdout ir stderr:



  • stdin : Priima vartotojo įvestį per klaviatūrą
  • stdout : Ekrane parodo išvestį
  • stderr : Ekrane rodo klaidų informaciją

Kiekvienas duomenų srautas turi skaitinį ID:



Skaitmeninis ID vardas
0 stdin
1 stdout
2 stderr

Šiek tiek išsamiau paaiškinkime peradresavimą:





Kaip peradresuoti standartinę išvestį ir standartinę klaidą „Bash“:

Norėdami nukreipti standartinę komandos išvestį, naudosime 1 su peradresavimo operatoriumi, kuris yra didesnis nei> ženklas:

$ls 1>stdout.txt

Aukščiau pateikta komanda sukurs failą ir standartinį komandos ls išvestį įdės į failą stdout.txt.



Norėdami perskaityti failą stdout.txt, naudokite:

$katėstdout.txt

Mes taip pat galime nukreipti standartinę klaidą į failą naudodami komandą:

$katėmyfile.txt2>stderr.txt

Norėdami peržiūrėti failą stderr.txt, naudokite:

$katėstderr.txt

Įsitikinkite, kad naudojimas 2 bus didesnis nei> ženklas. Kadangi kataloge nėra failo myfile.txt, komanda cat duos klaidą, kuri bus pridėta faile stderr.txt.

Šiuos standartinius išėjimus taip pat galima nukreipti viena komanda, naudokite:

$ls 1>stdout.txt2>stderr.txt

Komandos ls išvestis bus parašyta stdout.txt failą, bet stderr.txt liks tuščias, nes nebūtų klaidų.

Dabar padarykime failą stderr.txt:

$katėmyfile.txt1>stdout.txt2>stderr.txt

Naudokite toliau nurodytą komandą, kad perskaitytumėte stderr.txt.

$katėstderr.txt

Ir, žinoma, stdout.txt bus tuščias.

Išvada :

„Linux“ komanda vykdant suteikia standartinę išvestį, kuri gali būti sėkminga arba klaidos išvestis. Paprastai šių išėjimų negalima peradresuoti naudojant peradresavimo operatorius; su ženklu> turime naudoti konkrečius skaitinius ID. Šiame vadove mes sužinojome, kaip naudoti šiuos skaitmeninius klavišus, norint nukreipti standartinę išvestį į failą su pavyzdžiais.