Ero sivun ”Standardivirrat” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Kumottu muokkaus #23485, jonka teki ARTTUSN WIHOWIIMEINEN MARSSI TÄYTIN TOIVEENNE PÄÄSETTE NYT EROON MUSTA!!!!!!!! ([[User talk:ARTTUSN WIH
ARTTUSN WIHOWIIMEINEN MARSSI TÄYTIN TOIVEENNE PÄÄSETTE NYT EROON MUSTA!!!!!!!! (keskustelu | muokkaukset) (Ak: Sivun sisältö korvattiin sisällöllä ”HYVÄSTI NUSSIJAT”) |
(Kumottu muokkaus #23485, jonka teki ARTTUSN WIHOWIIMEINEN MARSSI TÄYTIN TOIVEENNE PÄÄSETTE NYT EROON MUSTA!!!!!!!! ([[User talk:ARTTUSN WIH) |
||
Rivi 1: | Rivi 1: | ||
Standardivirroilla tarkoitetaan Unix- ja Linux-ohjelmien standardeja syöttö- ja tulostuskanavia. Niitä on kolme, standardisisääntulo (STDIN), standardiulostulo (STDOUT) ja standardivirhe (STDERR). Kun [[komentorivi]]llä annetaan esimerkiksi komento | |||
[[cat]] | |||
tarkoittaa tämä sitä, että catin standardivirrat on liitetty oletuksiin, eli STDIN näppäimistöön ja STDOUT ja STDERR näyttöön. Käytännössä tämä tarkoittaa sitä, että cat odottaa merkkejä näppäimistöltä syöttääkseen ne välittömästi näytölle ([[virtuaalikonsoli]]n [[laitetiedosto]]on). Jos catin toiminnassa tapahtuu virhe, tulostetaan siitä kertova ilmoitus näytölle. | |||
Jos taas annetaan komento | |||
cat tiedosto1 | |||
lukee cat tiedostoa tiedosto1 ja tulostaa sen STDOUTiin eli näytölle. | |||
cat <tiedosto1 | |||
Johtaa samaan lopputulokseen kuin ylläoleva komento, mutta tässä tiedosto1 ohjataan erillisellä komennolla catin STDINiin, josta cat sitten syöttää sen STDOUTiin. | |||
Jos tulostus halutaan ohjata toiselle ohjelmalle, voidaan käyttää esimerkiksi syntaksia | |||
cat < tiedosto1|[[less]] | |||
jossa catin tuloste putkitetaan lessille lisäkäsittelyä varten. Tässä catin STDIN on liitetty tiedostoon tiedosto1 ja STDOUT uudelleenohjattu lessille. Jos catin tuloste halutaan ohjata tiedostoon, voidaan siihen käyttää suurempi kuin -merkkiä esimerkiksi seuraavasti: | |||
cat tiedosto1 > /tmp/data1 | |||
Tässä cat lukee tiedostoa tiedosto1 ja ohjaa sen STDOUTin kautta tiedostoon /tmp/data1. | |||
STDERRiä ei vielä sen sijaan ole liitetty mihinkään erityiseen paikkaan, vaan virheilmoitukset tulostuvat edelleenkin ruudulle. STDERRin käsittelyyn voidaan käyttää kolmea erilaista syntaksia: | |||
cat tiedosto1 2> lista.txt | |||
Ohjaa catin tulosteesta vain STDERRin tiedostoon lista.txt. Vastaavasti | |||
cat tiedosto1 1> lista.txt | |||
ohjaisi normaaliin tapaan vain STDOUTin tiedostoon ja STDERR tulostuisi näytölle. | |||
Sekä STDOUTin että STDERRin uudelleenohjaukseen samaan paikkaan voi käyttää syntaksia | |||
cat tiedosto1 >& lista.txt | |||
==Erikoistapauksia== | |||
Eräät ohjelmat, jotka oletuksena tulostavat tiedostoon, voidaan saada tulostamaan STDOUTiin antamalla tiedostonnimeksi "-" tai "- -", esimerkiksi | |||
cat /home/juliste.ps | [[Ghotstscript|gs]] -q -dNOPAUSE -sDEVICE=ljet4 -r600 -sOutputFile=- - | |||
Tässä gs eli Ghotstscript muuntaa catilta saamansa [[PostScript]]-tiedoston ljet4-tulostimelle sopivalle kuvauskielelle ja ohjaa tuloksen STDOUTiin eli tässä tapauksessa näytölle. | |||
== Tee == | |||
Komentoa [[tee]] voidaan käyttää ohjaamaan sen STDINiin syötetty data sekä tiedostoon että uudelleen STDOUTiin. Esimerkiksi komento | |||
cat tiedosto1|tee lista.txt | |||
tulostaisi tiedosto1:n sekä näytölle että tiedostoon lista.txt. | |||
Komento | |||
cat tiedosto1|tee lista.txt>>lista2.txt | |||
ohjaisi tiedosto1:n sekä tiedostoon lista.txt (ylikirjoittaen sen vanhan sisällön) että myös tiedoston lista2.txt loppuun (>-merkki annettu tuplana). Näytölle ei tulostu mitään, koska teen STDOUT on ohjattu tiedostoon lista2.txt. | |||
Jos halutaan, että tiedoston lista.txt sisältöä ei ylikirjoiteta, vaan uusi teksti lisätään sen loppuun, voidaan käyttää valitsinta -a: | |||
cat tiedosto1|tee -a lista.txt | |||
==Katso myös== | |||
*[[Komentorivin perusteet]] | |||
*[[Nimetty putki]] | |||
[[Luokka:Järjestelmä]] | |||
[[Luokka:Komentorivi]] |