Kuinka ohjata stderr stdoutiin Bashissa

How Redirect Stderr Stdout Bash



Linuxin komennot ottavat käyttäjältä jonkin syötteen, joka voi olla tiedosto tai mikä tahansa attribuutti, ja suorittaessaan ne antavat jonkin tuloksen, jota kutsutaan standardilähdöksi. Vakiolähtö voi olla onnistunut lähtö tai virheilmoitus; molemmat näkyvät päätelaitteen näytössä. Joissakin tapauksissa haluat kuitenkin tallentaa vakiolähdöt tiedostoon koodin testaamista tai virheenkorjausta varten. Linuxissa nämä lähdöt voidaan ohjata tiedostoon, ja sen sieppausprosessia kutsutaan uudelleenohjaukseksi.







Jokainen Linux -prosessi tuottaa kolme datavirtaa, stdin, stdout ja stderr:



  • stdin : Ottaa syötteen käyttäjältä näppäimistön kautta
  • stdout : Näyttää lähdön näytöllä
  • stderr : Näyttää virhetiedot näytöllä

Jokaisella tietovirralla on numeerinen tunnus:



Numeerinen tunnus Nimi
0 stdin
1 stdout
2 stderr

Selitämme uudelleenohjausta hieman yksityiskohtaisemmin:





Vakiotuloksen ja vakiovirheen uudelleenohjaus Bashissa:

Komennon vakiolähdön uudelleenohjaamiseen käytämme 1: tä, jonka uudelleenohjausoperaattori on suurempi kuin> -merkki:

$ls 1>stdout.txt

Yllä oleva komento luo tiedoston ja sijoittaa ls -komennon vakiotuloksen stdout.txt -tiedostoon.



Voit lukea stdout.txt -tiedoston seuraavasti:

$kissastdout.txt

Voimme myös ohjata standardivirheen tiedostoon käyttämällä komentoa:

$kissamyfile.txt2>stderr.txt

Voit tarkastella stderr.txt -tiedostoa seuraavasti:

$kissastderr.txt

Varmista, että käyttö 2 on suurempi kuin> -merkki. Koska hakemistossa ei ole tiedostoa myfile.txt, cat -komento antaa virheen, joka liitetään tiedostoon stderr.txt.

Nämä vakiolähdöt voidaan myös ohjata yhdellä komennolla, käytä:

$ls 1>stdout.txt2>stderr.txt

Ls -komennon tulos kirjoitetaan stdout.txt tiedosto, mutta stderr.txt jää tyhjäksi, koska virheitä ei olisi.

Tehdään nyt stderr.txt:

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

Käytä alla mainittua komentoa stderr.txt-tiedoston lukemiseen.

$kissastderr.txt

Ja tietysti stdout.txt on tyhjä.

Johtopäätös :

Linux -komento suoritettaessa antaa vakiotuloksen, joka voi olla onnistunut tai virheilmoitus. Yleensä näitä lähtöjä ei voi ohjata uudelleenohjausoperaattoreilla; meidän on käytettävä tiettyjä numeerisia tunnuksia> -merkin kanssa. Tässä oppaassa opimme käyttämään näitä numeronäppäimiä normaalituloksen ohjaamiseen tiedostoon, jossa on esimerkkejä.