Ero sivun ”Komentorivin perusteet” versioiden välillä
Siirry navigaatioon
Siirry hakuun
→Putkitus: pientä fixausta
Pb (keskustelu | muokkaukset) (→Putkitus: pientä fixausta) |
|||
Rivi 36: | Rivi 36: | ||
=== Putkitus === | === Putkitus === | ||
Putket (''engl. pipes'') ovat tapa jolla yhden ohjelmat tuloste voidaan ohjata toiselle ohjelmalle syötteeksi. Esimerkiksi komento uname -a näyttää [[Kernel|ytimen]] version: | Putket (''engl. pipes'') ovat tapa, jolla yhden ohjelmat tuloste voidaan ohjata toiselle ohjelmalle syötteeksi. | ||
Esimerkiksi komento uname -a näyttää [[Kernel|ytimen]] version: | |||
$uname -r | $uname -r | ||
2.6.15-ck3-r1 | 2.6.15-ck3-r1 | ||
Rivi 59: | Rivi 61: | ||
| |----w | | | |----w | | ||
| | | | | | | | | | ||
|-ohjausmerkki siis antaa ensin suoritetun komennon tulosteen jälkimmäisenä olevan ohjelman syötteeksi. Hyötyä tästä on esimerkiksi tapauksessa, jossa | |-ohjausmerkki siis antaa ensin suoritetun komennon tulosteen jälkimmäisenä olevan ohjelman syötteeksi. Hyötyä tästä on esimerkiksi tapauksessa, jossa jonkin komennon antama yli yhden ruudullisen pituinen tulostus halutaan antaa [[less|lessille]] syötteeksi. Esimerkiksi kaikki järjestelmän prosessit saa kätevästi selattavaksi putkittamalla komennon "ps aux" tulosteen lessille: | ||
ps aux | | ps aux | less | ||
Tai kun pitkästä tulosteesta haluaa etsiä jotain [[Grep|grepin]] avulla: | Tai kun pitkästä tulosteesta haluaa etsiä jotain [[Grep|grepin]] avulla: | ||
ls | grep | ls | grep merkkijono | ||
Joka tulostaisi vain niiden tiedostojen | Joka tulostaisi vain niiden tiedostojen nimen, joiden nimessä esiintyy sana merkkijono. | ||
Putkituksen käyttöä kannattaa opetella systemaattisesti, suurin osa | Putkituksen käyttöä kannattaa opetella systemaattisesti, sillä suurin osa komentoriviohjelmista toimii tehokkaasti osana jotain toista ohjelmaa, ja kytkentä niiden välillä tehdään helpoiten putkituksen avulla. Pitkiäkään putkituksia ei kannata pelätä. Putkituksen opettelua voi aloittaa tutkimalla komentoja [[grep]], [[awk]], [[cat]], [[zcat]], [[less]], [[more]], [[sort]], [[od]], [[du]], [[wc]] ja [[ls]]. | ||
du /etc |sort - | ====Esimerkkejä==== | ||
du /etc |sort -nr |head -5 | |||
23281 /etc | 23281 /etc | ||
6851 /etc/opt | 6851 /etc/opt | ||
Rivi 74: | Rivi 78: | ||
2569 /etc/X11 | 2569 /etc/X11 | ||
du | Tässä tutkitaan [[du]]-komennon avulla sitä, kuinka paljon mikäkin /etc:n hakemisto vie tilaa. Ongelmana tässä on kuitenkin se, että hakemistot ovat oletuksena haku- eikä kokojärjestyksessä. Tämä ratkaistaan komennolla sort -nr, joka lajittelee sille annetun syötteen, eli tässä tapauksessa du:n tulosteen, numeerisesti (valitsin -n) isoimmasta pienimpään (valitsin -r kääntää tulostusjärjestyksen, joka oletuksena olisi pienimmästä isoimpaan). Lopuksi käytetään komentoa ''head -5'' näyttämään sortin tulostuksesta vain viisi ensimmäistä riviä. | ||
Toiminnallisesti sama tulos tulee myös komennolla | |||
du /etc |sort -n |tail -5 | du /etc |sort -n |tail -5 | ||
2569 /etc/X11 | 2569 /etc/X11 | ||
Rivi 82: | Rivi 88: | ||
23281 /etc | 23281 /etc | ||
Nyt kuitenkin sillä erotuksella, että tässä tapauksessa [[tail]] ottaakin [[sort]]in tuloksesta viimeiset rivit, ja sortin tulostusjärjestystä ei käännetä valitsimella -r. | |||
du /etc |sort -n |tail -5 |grep X11 | du /etc |sort -n |tail -5 |grep X11 | ||
2569 /etc/X11 | 2569 /etc/X11 | ||
Kun lopuksi poistetaan komennosta vielä [[grep]]in avulla kaikki muut rivit paitsi ne, jotka sisältävät merkkijonon X11, saadaan ylläoleva tulostus. | |||
du /etc |sort -n |tail -5 |grep -v X11 | du /etc |sort -n |tail -5 |grep -v X11 | ||
Rivi 96: | Rivi 101: | ||
23281 /etc | 23281 /etc | ||
Tässä taas grepille on annettu valitsin -v, jolla määritellään grep näyttämään kaikki rivit paitsi ne, joihin sisältyy merkkijono X11. | |||
ls /etc |wc -l | ls /etc |wc -l | ||
270 | 270 | ||
puolestaan kertoo kuinka monta tiedostoa /etc | Tämä puolestaan kertoo, kuinka monta tiedostoa on hakemistossa /etc (wc -l laskee tiedoston rivit). | ||
=== Komentojen ketjutus === | === Komentojen ketjutus === |