Ohjaa stdout ja stderr tiedostoon

Redirect Stdout Stderr File



Kun ohjaat minkä tahansa komennon tuloksen tiedostoon, huomaat, että virheilmoitukset tulostetaan pääteikkunaan. Kaikki komennot, jotka suoritetaan missä tahansa Linux -kuorissa, kuten bash, käyttävät kolmea tavallista I/O -virtaa. Numeerista tiedoston kuvaajaa käytetään edustamaan jokaista virtaa.

  • Vakiotulovirta (stdin): 0
  • Vakiolähtövirta (stdout): 1
  • Vakiovirran virta (stderr): 2

Tässä viestissä ymmärrämme tiedot, jotka kuuluvat stdout- ja stderr -tiedostojen uudelleenohjaukseen.







Vakiolähtö (vakio):

Jokaisella Linux -käyttöjärjestelmällä on vakaumus suoritettavan komennon oletuspaikasta. Kaikki viittaavat tähän käsitykseen stdout- tai standardilähdönä, jotta se kuulostaisi helpommalta. Bash- tai Zsh -kuori etsii jatkuvasti oletuslähtöpaikkaa. Kun kuori havaitsee uuden lähdön, se näyttää sen pääteikkunassa, jotta voit nähdä sen. Muussa tapauksessa se lähettää tuloksen oletussijaintiin.



Vakiovirhe (stderr):

Vakiovirhe tai stderr on samanlainen kuin vakiotulo ja -lähtö, mutta sitä käytetään virheilmoitusten tallentamiseen. Vakiovirhe voidaan ohjata komentoriville tai tiedostoon päätelaitteen avulla. Jos haluat tallentaa tai tallentaa viestejä erilliseen lokitiedostoon tai piilottaa virheilmoitukset, uudelleenohjaus stderr auttaa sinua. Mennään nyt kohti stdoutin ja stderr -uudelleenohjauksen käytännön puolta.



Stdout- ja stderr -tiedostojen uudelleenohjaus tiedostoon:

Uudelleenohjaus on tapa kaapata ohjelman ulostulo ja lähettää se tulona toiseen komentoon tai tiedostoon. I/O -virtoja voidaan ohjata ottamalla käyttöön n> -operaattori, jossa n on tiedoston kuvaajan numero. Stdoutin uudelleenohjaukseen käytämme 1> ja stderr: lle 2> lisätään operaattorina.





Olemme luoneet tiedoston nimeltä sample.txt tallentaaksemme uudelleenohjatun lähdön nykyiseen hakemistoomme.



(Komento> tiedosto) katsotaan klassiseksi uudelleenohjausoperaattoriksi, joka ohjaa vain vakiolähdön terminaalissa näkyvällä vakivirheellä. Esittelemme erilaisia ​​vaihtoehtoja myös stderrin uudelleenohjaamiseen.

Stderr ja stdout uudelleenohjaus erillisiin tiedostoihin:

Alla on komentojen syntaksi stdout- ja stderr -tiedostojen uudelleenohjaamiseen erillisiin tiedostoihin.

komento >ulos2>virhe

Alla annettu komento ohjaa lähdön lähtötiedostoon ja virheilmoitukset virhetiedostoon.

$kissasample.txt>ulos2>virhe

Stderrin uudelleenohjaus stdoutiin:

On yleinen käytäntö, että stderr ohjataan ohjelman vakioulostulolla kaiken tallentamiseksi yhteen tiedostoon. Tässä on komento syntaksi stderr: n uudelleenohjaamiseksi stdout:

komento >ulos2> &1$ls >samplefile.txt2> &1

$kissasamplefile.txt

> out -uudelleenohjaukset ohjaavat stdout -tiedoston samplefile.txt -tiedostoon, ja 2> & 1 ohjaa stderr -tiedoston nykyiseen sijaintiin.

Jos stderr ohjataan ensin stdoutiin, ohjaa stdout tiedostoon alla annetun komennon avulla.

komento 2> &1 > tiedosto$ls - 2> &1 >samplefile.txt

$kissasamplefile.txt

&>: tä käytetään myös samoihin toimintoihin, joita 2> & 1 suorittaa.

komento &> tiedosto$ls &>samplefile.txt

$kissasamplefile.txt

Stdout ja stderr uudelleenohjaus yhteen tiedostoon:

Kaikki kuoret eivät tue tätä lomakkeen uudelleenohjausta, mutta bash ja Zsh tukevat sitä. Stdout ja stderr voidaan ohjata käyttämällä seuraavaa syntaksia.

komento &>ulos$kissasample.txt&>ulos

Artikkelin seuraavassa osassa tarkastelemme erillistä esimerkkiä stdout- ja stderr -uudelleenohjauksesta.

Stdout -tiedoston uudelleenohjaus tiedostoon:

Vakiolähtöä edustaa 1 tiedostojen kuvaajan numeroiden luettelossa. Uudelleenohjauskomennolle ilman tiedoston kuvaajanumeroa päätelaite asetti arvoksi 1. Syntaksi stdout -tiedoston uudelleenohjaamiseksi tiedostoon annetaan seuraavasti:

komento > tiedosto

Käytämme sample.file -tiedostoa ls -al -komennon vakiotuloksen tallentamiseen

$ls - >sample.txt

$kissasample.txt

komento 1> tiedosto$ls 1>sample.txt

$kissasample.txt

Stderrin uudelleenohjaus tiedostoon:

Käytä 2> -operaattoria uudelleenohjaamaan stderr tiedostoon.

komento 2> tiedosto $ls - 2>sample.txt

Voimme yhdistää suorituksen stderr ja stdout yhdelle uudelleenohjauskomennolle.

komento 2>error.txt1>output.txt

Alla olevassa esimerkissä virheilmoitukset tallennetaan tiedostoon error.txt, jossa output.txt saa standardin ls-komennon.

$ls 2>error.txt1>output.txt

$kissaoutput.txt

Johtopäätös:

I/O -virtojen uudelleenohjauksen käsite ja tiedostojen kuvaajat ovat erittäin arvokkaita työskennellessään Linux -päätelaitteessa. Tässä viestissä olemme puhuneet tavallisista I/O -virroista, mukaan lukien stdout ja stderr. Tämän viestin ensimmäisessä osassa on yksityiskohtaisia ​​tietoja uudelleenohjauksesta, I/O -virroista ja numeerisen tiedoston kuvauksesta. Seuraavaksi olet nähnyt käytännön esimerkin erilaisille stdout- ja stderr -uudelleenohjausmuodoille.