Vlákno názorů k článku Nová softwarová sklizeň (2. 5. 2007) od jar - >Roury jsou velmi užiteční pomocníci, a ... teprve...

  • Článek je starý, nové názory již nelze přidávat.
  • 2. 5. 2007 9:09

    jar (neregistrovaný)
    >Roury jsou velmi užiteční pomocníci, a ... teprve v *nixu vynikne jejich pravé kouzlo.

    Může někdo uvést nějaký praktický příklad (kromě příkaz|more nebo less) na co skutečně používá spojování rourami, že by to tak výrazně ulehčovalo život?
  • 2. 5. 2007 9:32

    Miloš (neregistrovaný)
    Počet souborů: ls|wc

    Počet procesů: ps ax|wc

    Počet procesů spuštěných danou binárkou: ps ax|grep name|wc

    Čím víc malých unixových prográmků znáte, tím častěji vás napadne nějaká roura.
  • 2. 5. 2007 11:02

    anonymní
    "Počet procesů spuštěných danou binárkou: ps ax|grep name|wc"

    Sice bych spis pouzil

    ps -C name h | wc -l

    ale jinak pipe je silene uzitecnej pomocnik, ale to clovek pochopi, az se znej stane neco vic nez jen klikac:) pouziti pipe pri more a less je to nejjednodussi, co muze clovek na linuxu v konzoli udelat. Treba kdyz mas CSV soubor, treba strednikama oddelenej, chces z nej vybrat pouze pole 1,3,5, z toho vybrat pouze radky, kde je v poli 3 slovo "error" a to pak seradit podle pole 5 a vysledky nechat poslat na email "programator@firma.cz", tak to sice muzes udelat, ze to naimportujes do Calcu, vymazes vsechny sloupce krome 1,3,5 (takze budes mit jenom 1,2,3), pomoci funkce Filtr vyfiltrujes ve 3.(nove ve 2.) sloupci slovo "error", nechas to seradit podle 5.(nove 3.) sloupce, pak to ulozis do nejakyho souboru nebo zkopirujes do mailu a posles email. No a kdyz tohle budes delat behem dne po nekolikaty, tak zacnes uvazovat, co potrebujes, aby se to cely udelalo samo. Pak, kdyz budes znat praci s rourama, tak vyplodis neco jako

    cat file | cut -d';' -f1,3,5 | awk -F';' '$2=="error" { print; }' | sort -t';' -k3 | sendmail programator@firma.cz

    awk -F';' '$3=="error" { print $1,$3,$5; }' file | sort -t';' -k3 | sendmail programator@firma.cz

    nebo jeste trosku jinak
    perl -a -F';' -ne 'chomp @F;print join(";",@F[0,2,4])."\n") if $F[1] eq "error";' file | sort -t';' -k3 | sendmail programator@firma.cz

    No a kdyz tohle spojis jeste s nejakym cronem nebo atem, tak mas proste volno:) (ten priklad berte s rezervou). Samozrejme daji se udelat jeste lepsi konstrukce, taky nejsem uplnej guru, ale kouzlo rour me uchvacuje:)

    BTW: napriklad xsltproc pri zpracovani zadaneho XSLT souboru umi brat zdrojovy XML soubor take z pipe, takze takhle muzes pospojovat nekolik xsltproc souboru do jedny pipe a zpracovat tak XML dokument nekolika XSLT (ano, bude to zrejme pametove narocnejsi, ale jde to:))
  • 2. 5. 2007 9:38

    Tomas (neregistrovaný)
    Plno programů čeká data na standardním vstupu a naopak sype svoje výsledky na standardní výstup. I hloupé grepování na velkém souboru nebo streamu může trvat docela dlouho. Jiný příklad: pokud jsi někdy dělal s SVN (možná i CVS), tak tam se roura použije docela často, pokud zálohuješ a replikuješ repositář.
  • 2. 5. 2007 10:12

    Matlas (neregistrovaný)
    treba kopirovani souboru ;-)

    cd /dataforbackup
    tar cf - . |ssh backuphost "tar xf - -C /backupstore/current_backup"
  • 2. 5. 2007 16:39

    Ash (neregistrovaný)
    Roura umožňuje snadnou výměnu dat mezi programy, často jednoúčelovými. Nedávno jsem potřeboval třeba vyparsovat výstup z programu, ze získaných hodnot udělat deltu (tedy rozdíl mezi po sobě jdoucími hodnotami) a následně vypisovat jen aktuální maxima a nebo minima. Jenže také jsem potřeboval případně tu deltu absolutní (tedy vůči úplně první hodnotě a ne předchozí) a v obou případech také možnost nevypisovat jen maxima ale všechny hodnoty.

    Logickým linuxově laděným řešením je udělat parser na výstup toho programu, pak počítadlo delta (jedno absolutní a jedno relativní) a pak vypisovadlo maximum/minim. Podle toho, jak se co spojí, to pak vyhazuje přesně to, co je potřeba.

    Pokud jste antirourař, můžete napsat jeden program s několika přepínači, nebo můžete napsat 4 programy, které budou dělat přesně tyhle 4 věci. To je prozměnu nemodulární přístup.

    Nevýhoda je jasná - pro jakoukoliv další činnost nemůžete hotové dílo v podstatě použít, můžete leda k tomu "molochu" dopsat ty další funkce, nebo copypaste použít část zdrojáků.

    Když máte program, který umí stáhnout webstránku a potřebujete z ní vyparsovat nějaké informace, tak si asi nezačnete psát znovu program, který kromě stahnutí stránky ji ještě umí ne zobrazit celou ale zobrazit jen přesně to, co vy chcete. Jednodušší je spojit rourou program A který stahuje s vaším programem B který jen parsuje. Mezi tím ji samozř. můžete mimochodem překódovat do jiného kódování. Jak jinak než mezi dvě roury dát překódovávadlo, že.
  • 2. 5. 2007 23:37

    bez přezdívky
    Ja si cez ruru vypalujem CD.
    mkisofs ~/palit | cdrecord dev=1,0 -