Portál AbcLinuxu, 13. května 2025 19:08
Zdravím všechny programátory pod Linuxem, mám takovouto otázku:
Můj spolužák mi tvrdí, že programy pro linux jsou kvalitní v tom, že existuje spousta utilit, které stačí vhodně propojit pomocí pipe a podobně a ušetří se tak práce vývojáře.
Mějme příklad, chci udělat aplikaci, který zadám url a slovo a tato aplikace prohledá textový obsah zadané stránky a přečte mi větu ve které se dané slovo nachází. Jde to skutečně tak ideálně, že:
Pomocí jádra internetového prohlížeče načtu a naparsuju obsah stránky, pomocí grap-u, či awk nebo kdovíčeho vyhledám větu a pomocí Opensource frameworku / knihovny Festival ji nechám přečíst (případně nějaký děj při nenalezení).
Nebo jsou toto jen propagační výplody přátel Linuxového stolu? Pokud by to byla pravda, mohl by to být skutečně pádný argument proč přejít programovat pod OS Linux.
Díky za odpovědi (prosím bez urážek).
Hm, kdybys to chtěl udělat jako shellový one-liner (tzn. propojení utilit pomocí pipe, jak říkáš), asi by ses hodně zapotil, ale myslím, že by to šlo; jen to parsování a hledání v HTML by byl oříšek, XSLT by to snad umělo (grep nebo awk bych nepoužil, protože HTML není obyčejný text).
Vtip je v tom, že stránky se nenačítají ani neparsují "jádrem internetového prohlížeče" (např. Firefoxu), třeba na stažení něčeho z webu slouží obvykle wget nebo curl. Podívej se na man stránku wgetu, ať máš lepší představu, co v GUI (ani ve Windows) prostě nenaklikáš.
Konkrétně u tvého příkladu bych si dokázal mnohem lépe představit několikařádkový skript třeba v Pythonu.
Vtipné je, že pod jinými operačním systémy lze programovat úplně stejně jako v Linuxu, protože ty nástroje jsou open-source a když se s trochou snahy zkompilují pro Windows, tak běží i ve Windows (a ony už zkompilované jsou, stačí najít a stáhnout). Ale asi bude lepší použít "původní" platformu Tím mám na mysli unix-like, jestli to bude Linux, BSD nebo něco jiného (Mac?) už nechám na tobě
Tedy, nijak jsi nezmínil ten operační systém, který chceš s Linuxem porovnávat, ale předpokládám, že to jsou právě Windows. (Kdo jiný by se mohl takhle ptát...)
Osobně si myslím, že pokud člověk není beznadějně srostlý s Visual Studiem, měl by alespoň zkusit nenechat se omezovat Windowsy. Řečeno samozřejmě s nadsázkou. Koneckonců, kdo se chce stát programátorem, jistě se někdy s Linuxem nebo podobným systémem setká a měl by aspoň tušit, o čem to celé je.
jen to parsování a hledání v HTML by byl oříšek, XSLT by to snad umělo (grep nebo awk bych nepoužil, protože HTML není obyčejný text)
Jenom doplním, existuje AWK pro parsování XML (xgawk), pomocí kterého by to šlo asi tak na 2 řádky.
A browsery lynx, elinks a nejspíš i další mají dump mód, při kterém na stdout vypíší formátovaný text bez html značek, takže parser už se jimi nemusí zabývat:
lynx -dump URL|parser|...
Ale v řadě případů (např. čtení z tabulek apod.) bude lepší parsovat HTML zdroják.
Já jsem si vědom, že většina uxinových utilit lze (někdy s jistými potížemi) portovat i na OS jiných typů (Win).
Ten rozdíl měl být spíše v tom, že pokud na Windows bude chtít program používat nějaké utility, budou zabalené v instalačním souboru a nainstalují se pro každý program zvlášť do jeho složky. Zatím v Linuxu v aplikaci zůstane jen jádro a zbylé části se instalují pomocí balíčkovacího systému, čímž se zabrání několikanásobné instalaci.
for X in `find . -type d | fgrep -v .svn` ; do echo `cat ${X}/*.java 2>&1 | wc -c`": $X" ; done | grep -wv 0 | sort -r -n -k 1,1 | head | nl
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.