Ero sivun ”Standardivirrat” versioiden välillä
Siirry navigaatioon
Siirry hakuun
pEi muokkausyhteenvetoa |
→Stderr: Virheellinen järjestys komennossa cat tiedosto1 2>&1 > kaikki.txt Merkkaukset: Mobiilimuokkaus mobiilisivusto-muokkaus |
||
| (Yhtä välissä olevaa versiota toisen käyttäjän tekemänä ei näytetä) | |||
| Rivi 2: | Rivi 2: | ||
'''Standardivirroilla''' (engl. '''standard streams''') tarkoitetaan Unix- ja Linux-ohjelmien syöttö- ja tulostusvirtoja, joilla ohjelma kommunikoi ajoympäristönsä (useimmiten [[terminaaliemulaattori|pääteikkunan]]) kanssa. Jokaisella [[prosessi]]lla on sen käynnistyksessä avattuna kolme standardivirtaa: ''standardisyöte'' ('''stdin'''), ''standardituloste'' ('''stdout''') ja ''standardivirhe'' ('''stderr'''). Kolmen standardivirran [[tiedostokuvain|tiedostokuvaimet]] (''file descriptor'') ovat numeroitu nollasta kahteen siten, että standardisyötteellä on numerokoodi '''0''' ja standardivirheellä numerokoodi '''2'''. | '''Standardivirroilla''' (engl. '''standard streams''') tarkoitetaan Unix- ja Linux-ohjelmien syöttö- ja tulostusvirtoja, joilla ohjelma kommunikoi ajoympäristönsä (useimmiten [[terminaaliemulaattori|pääteikkunan]]) kanssa. Jokaisella [[prosessi]]lla on sen käynnistyksessä avattuna kolme standardivirtaa: ''standardisyöte'' ('''stdin'''), ''standardituloste'' ('''stdout''') ja ''standardivirhe'' ('''stderr'''). Kolmen standardivirran [[tiedostokuvain|tiedostokuvaimet]] (''file descriptor'') ovat numeroitu nollasta kahteen siten, että standardisyötteellä on numerokoodi '''0''' ja standardivirheellä numerokoodi '''2'''. | ||
Kun ohjelma käynnistetään valikosta tai kuvakkeen avulla, sillä ei yleensä ole pääteikkunaa, jonne lähettää standardivirtojaan, eikä näppäimistöä saa yhdistettyä standardisyötteeseen. Osa ohjelmista yhdistää standardivirran johonkin tiedostoon (usein [[piilotiedosto]]on ~/.xsession-errors) tai lokituksesta huolehtivalle ohjelmalle, mutta usein kaikki standardivirrat ohjataan [[laitetiedostot|laitetiedostoon]] [[/dev/null]]. Kun ohjelman virheilmoitukset haluaa talteen, sen voi käynnistää komentoriviltä, jolloin standardivirtoja voi käsitellä normaaliin tapaan. | Kun ohjelma käynnistetään valikosta tai kuvakkeen avulla, sillä ei yleensä ole pääteikkunaa, jonne lähettää standardivirtojaan, eikä näppäimistöä saa yhdistettyä standardisyötteeseen. Osa ohjelmista yhdistää standardivirran johonkin tiedostoon (usein [[piilotiedosto]]on ~/.xsession-errors) tai lokituksesta huolehtivalle ohjelmalle, mutta usein kaikki standardivirrat ohjataan [[laitetiedostot|laitetiedostoon]] [[:/dev/null]]. Kun ohjelman virheilmoitukset haluaa talteen, sen voi käynnistää komentoriviltä, jolloin standardivirtoja voi käsitellä normaaliin tapaan. | ||
== Esimerkki == | == Esimerkki == | ||
| Rivi 35: | Rivi 35: | ||
cat tiedosto1 >& kaikki.txt | cat tiedosto1 >& kaikki.txt | ||
tai | tai | ||
cat tiedosto1 2>&1 > kaikki.txt | cat tiedosto1 > kaikki.txt 2>&1 | ||
Käytettäessä jälkimmäistä muotoa on huomattava että järjestyksellä on merkitystä. Oletetaan että kirjoitatkin komennon muodossa | |||
<kbd>cat tiedosto1 2>&1 > kaikki.txt</kbd>, ja tiedosto1:stä ei ole olemassa. Tällöin uudelleenohjaus 2>&1 ohjaa stderrin näytölle, koska stdout menee sinne oletuksena (uudelleenohjauksen tekohetkellä). Tämän jälkeen luodaan tyhjä tiedosto kaikki.txt, koska | |||
cat-komennon stdout on tyhjä. Oikea muoto on ylläoleva, siinä catin stdout on jo ohjattu tiedostoon kaikki.txt ja sinne stderrkin menee. | |||
Nimestään huolimatta stderr ei ole pelkkä virhe- vaan myös infotuloste. Esimerkiksi dd-komennolla voi kopioida dataa ja muokata sitä muutamalla yksinkertaisella tavalla | Nimestään huolimatta stderr ei ole pelkkä virhe- vaan myös infotuloste. Esimerkiksi dd-komennolla voi kopioida dataa ja muokata sitä muutamalla yksinkertaisella tavalla | ||