Ero sivun ”Putki” versioiden välillä
Siirry navigaatioon
Siirry hakuun
kh; uniq+sort; terminaali -> pääteikkuna
p (lk.) |
LP (keskustelu | muokkaukset) (kh; uniq+sort; terminaali -> pääteikkuna) |
||
Rivi 1: | Rivi 1: | ||
'''Putkittaminen''' tarkoittaa | '''Putkittaminen''' tarkoittaa toisen ohjelman [[standardituloste]]en ohjaamista toisen ohjelman standardisyötteelle. Se on erittäin hyödyllinen [[komentotulkki]]<nowiki>operaatio</nowiki>, jonka hallitseminen yhdessä [[grep]] ja [[less]] -komentojen kanssa on avain Linux- ja Unix-järjestelmien komentotulkin tehokkaaseen hyödyntämiseen. Komentotulkissa putki luodaan operaattorilla ''ohjelma1'' | ''ohjelma2''. Merkistä | käytetään tässä yhteydessä tämän vuoksi yleensä nimeä ''putki''. | ||
== Esimerkki == | == Esimerkki == | ||
Rivi 10: | Rivi 10: | ||
Putkia voi olla myös useita peräkkäin, ja niitä voi yhdistellä komentotulkin [[uudelleenohjaus]]<nowiki>operaattoreihin</nowiki> mielivaltaisesti. Seuraava komento poistaa tiedostosta ''kayttajat.txt.gz'' identtiset rivit komennolla [[uniq]], ja lopuksi pakkaa tiedoston uudelleen, sekä ohjaa pakatun tulosteen tiedostoon ''kayttajat-uniq.txt.gz'' | Putkia voi olla myös useita peräkkäin, ja niitä voi yhdistellä komentotulkin [[uudelleenohjaus]]<nowiki>operaattoreihin</nowiki> mielivaltaisesti. Seuraava komento poistaa tiedostosta ''kayttajat.txt.gz'' identtiset rivit komennolla [[uniq]], ja lopuksi pakkaa tiedoston uudelleen, sekä ohjaa pakatun tulosteen tiedostoon ''kayttajat-uniq.txt.gz'' | ||
gzip -c kayttajat.txt.gz | uniq | gzip -c - > kayttajat-uniq.txt.gz | gzip -c kayttajat.txt.gz | sort | uniq | gzip -c - > kayttajat-uniq.txt.gz | ||
== Standardivirhe == | == Standardivirhe == | ||
Putkitusoperaattori | ohjaa vain ohjelman standarditulosteen toiselle ohjelmalle. Minkä tahansa putkessa esiintyvän ohjelman virheilmoitukset tulostuvat siksi suoraan [[ | Putkitusoperaattori | ohjaa vain ohjelman standarditulosteen toiselle ohjelmalle. Minkä tahansa putkessa esiintyvän ohjelman virheilmoitukset tulostuvat siksi suoraan [[terminaaliemulaattori|pääteikkunaan]]. Koska jokaisella ohjelmalla on vain kaksi ulostuloa (standardituloste ja -virhe) mutta vain yksi sisääntulo (standardisyöte), pitää standardivirhe ohjata erikseen standardi'''tulosteelle''', jotta se voitaisiin putkittaa toiselle ohjelmalle. Tämä tapahtuu komentamalla | ||
''ohjelma1'' 2>&1 | ''ohjelma2'' | ''ohjelma1'' 2>&1 | ''ohjelma2'' | ||
Jos jonkin putkessa olevan ohjelman standardivirhettä ei haluta putkittaa toiselle ohjelmalle, mutta sitä ei myöskään haluta näkyville | Jos jonkin putkessa olevan ohjelman standardivirhettä ei haluta putkittaa toiselle ohjelmalle, mutta sitä ei myöskään haluta näkyville, se voidaan ohjata erikoistiedostoon [[null|/dev/null]] esimerkiksi seuraavasti: | ||
''ohjelma1'' | ''ohjelma2'' 2> /dev/null | ''ohjelma3'' | ''ohjelma1'' | ''ohjelma2'' 2> /dev/null | ''ohjelma3'' | ||
Tämä ohjaa ''ohjelma2'':n mahdolliset virheilmoitukset null:ille. ''ohjelma1'':n ja ''ohjelma3'':n virheilmoitukset tulostuvat normaalisti terminaaliin. | Tämä ohjaa ''ohjelma2'':n mahdolliset virheilmoitukset null:ille. ''ohjelma1'':n ja ''ohjelma3'':n virheilmoitukset tulostuvat normaalisti terminaaliin. |