Muokataan sivua Standardivirrat

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.

Nykyinen versio Oma tekstisi
Rivi 1: Rivi 1:
[[Tiedosto:Stdstreams-notitle.svg|thumb|right|200px|Standardisyöttövirrat tilanteessa, jossa prosessia ajetaan [[terminaaliemulaattori|pääteikkunassa]] tms.]]
[[Tiedosto:Stdstreams-notitle.svg|thumb|right|200px|Standardisyöttövirrat tilanteessa, jossa prosessia ajetaan [[terminaali]]ssa.]]
'''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 [[terminaali]]n) 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ä stanrdisyötteellä on numerokoodi '''0''' ja stanrdivirheellä 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.


== Esimerkki ==
== Esimerkki ==
Rivi 22: Rivi 20:
Tässä cat lukee tiedostoa tiedosto1, ja ohjaa sen stdoutin kautta tiedostoon /tmp/data1.
Tässä cat lukee tiedostoa tiedosto1, ja ohjaa sen stdoutin kautta tiedostoon /tmp/data1.
  cat tiedosto1 >> /tmp/data1
  cat tiedosto1 >> /tmp/data1
Tämä on täysin sama, mutta cat:in tuloste (tiedosto1) lisätään tiedoston /tmp/data1 loppuun. Yhden suurempi kuin -merkin tapauksessa /tmp/data1 päällekirjoitetaan, eli tiedoston mahdollinen aiempi sisältö katoaa pysyvästi.
Tämä on täysin sama, mutta cat:in tuloste (tiedosto1) lisätään tiedoston /tmp/data1 loppuun.


=== Stderr ===
=== Stderr ===
Rivi 36: Rivi 34:
tai
tai
  cat tiedosto1 2>&1 > kaikki.txt
  cat tiedosto1 2>&1 > kaikki.txt
Nimestään huolimatta stderr ei ole pelkkä virhe- vaan myös infotuloste. Esimerkiksi dd-komennolla voi kopioida dataa ja muokata sitä muutamalla yksinkertaisella tavalla
echo heippa | dd conv=ucase
tulostaa HEIPPA ja kertoo sitten stderr-virtaan paljonko dataa käsitteli. Tämä voidaan putkittaa esimerkiksi
echo heippa | dd conv=ucase | rev > tulos.txt
jolloin putkessa eteenpäin ja lopuksi tiedostoon siirtyy stdout, ja stderr (ja näin mahdolliset virheilmoitukset) tulostuvat heti ruudulle. Tarvittaessa kunkin komennon stderr-tuloste voidaan ottaa talteen em. 2> -merkinnällä.


Standardivirhe eroaa standardisyötteestä myös siten, että se on järjestelmän standardikirjaston tasolla oletuksena [[wikipedia:fi:Puskurimuisti|puskuroimaton]]. Näin ohjelman virheilmoitukset tulostuvat ruudulle aina heti.
Standardivirhe eroaa standardisyötteestä myös siten, että se on järjestelmän standardikirjaston tasolla oletuksena [[wikipedia:fi:Puskurimuisti|puskuroimaton]]. Näin ohjelman virheilmoitukset tulostuvat ruudulle aina heti.
Rivi 69: Rivi 57:
==Katso myös==
==Katso myös==
*[[Komentorivin perusteet]]
*[[Komentorivin perusteet]]
*[[Xargs]]
*[[Nimetty putki]]
*[[Nimetty putki]]


[[Luokka:Järjestelmä]]
[[Luokka:Järjestelmä]]
[[Luokka:Komentorivi]]
[[Luokka:Komentorivi]]
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)