>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?
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
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:))
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ář.
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.
Funguje FoxTorrent někomu na linuxu? Mě se na stránkách s torrenty nezobrazí nic zvláštního a když kliknu na nějaký torrent tak se objeví okno s výzvou co dělat se souborem *.torrent. Položka Tools/FoxTorrents Downloads otevře stránku FoxTorrentu, kde se ale nedá nic vybrat ani aktivovat.
Třeba mi určitě. :o) Veškeré programy, které zařazuji do sklizně, se snažím alespoň částečně odzkoušet, pokud je to alespoň trošku možné a pokud tak nečiním, tak tuto skutečnost uvedu. Typicky se jedná např. o zajímavé programy na obsluhu hardware, který nevlastním. Proto také nepřebírám screenshoty ze stránek autorů programů, ale když mi už to tu běží, tak si udělám vlastní. Mandrivu One 2007.1, kterou je na screenshotu vidět, jsem skutečně bez problému pomocí tohoto rozšíření stáhnul.
Hm. Tato informace má sice jakousi vypovídací hodnotu, nicméně malou. Bylo to zkoušeno na Firefoxu nebo na Iceweaselu? Nebylo by url nějaké stránky s torrenty, na které by to mělo reagovat?