(toiminnot)

hwechtla-tl: Filtteriputki

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Unix-filosofiassa monet ohjelmat toimivat filttereinä, eli ne lukevat merkkivirtaa ja tuottavat siitä toisen merkkivirran - jotkut vain muuttelevat vähän syötettään, jotkut paljon, jotkut tulostavat jotain aivan muuta. Esimerkiksi cat -n lisää jokaisen linjan alkuun numeron, sort järjestää linjat aakkosjärjestykseen ja wc vain laskee linjat, sanat ja merkit ja tulostaa nämä numerot.

Unixien komentotulkeissa on hieno ominaisuus, "pipe" (putki). Sitä merkitään merkillä "|", jota tämän mukaisesti kutsutaan usein putkimerkiksi. Putki tarkoittaa, että kaksi ohjelmaa voi yhdistää siten, että toisen tuloste menee suoraan toisen syötteeksi. Esimerkiksi

 ssh foo cut -d: -f1 /etc/passwd | a2ps -Pjonkka 
Listaa koneen foo käyttäjätunnukset ja lähettää ne suoraan tulostimelle jonkka. Putkia voi olla mielivaltaisen pitkiä:

 lsof -i | grep ESTABL | cut -b 10-16 | sort -u | wc 
(tulostaa, kuinka monta nettiyhteyksiä auki pitävää prosessia on käynnissä)

Joissain tilanteissa putkissa vastuu syötteen eri kohdista on pumpattu eri filttereille. Tällöin syötteessä on merkintöjä, joiden perusteella filtterit päättävät, tuleeko niiden koskea kyseiseen kohtaan merkkivirrasta vai päästää se vain sellaisenaan läpi. Kanoninen esimerkki on troff:

 cat jotain.1 | pic | tbl | eqn | troff -man 
mutta myös heuristinen HTML-konvertoijani on suunniteltu tällä ideologialla.


kommentoi (viimeksi muutettu 27.06.2005 15:41)