|
|
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
| | HYVÄSTI NUSSIJAT |
| [[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]]
| |