Portál AbcLinuxu, 9. listopadu 2025 06:56
Možná už jste někdo slyšeli o Windows PowerShell (dříve známý jako Monad či MSH), což má být první pořádný shell od Microsoftu (bude obsažen ve Windows Vista). Je postaven nad .NET frameworkem a bude plně objektový. Toto je věc, která mi na *nixových shellech vždy nesmírně chyběla. Parsování textového vstupu a výstupu je v porovnání s objektovým přístupem nesmírně nepraktické. Taktéž stovky různých samostatných příkazů (každý s jinými parametry) je idea mnohem méně praktická než volání metod konkrétních objektů (alespoň tedy dle mého názoru, spousta lidí mě asi označí za kacíře
). Existuje tedy nějaká schopná konkurence Windows PowerShellu pro Linux? Odpovědí by mohl být IPython...
IPython asi bude většina programátorů v Pythonu znát. Jedná se o nesmírně praktický interaktivní interpreter pro Python (který je samozřejmě sám celý napsaný v Pythonu), jenž obsahuje celou řadu užitečných funkcí, bez kterých si později člověk dovede jen těžko představit život
IPython si člověk musí vyzkoušet naživo, jinak tu krásu a eleganci asi nepochopí. Předtím než jsem začal používat Python a propadl IPythonu mě myšlenka objektového shellu nenapadla. Ale později, jak jsem čím dál častěji dělal pod IPythonem, mi práce v klasickém shellu (konkrétně v Bashi) přišla nesmírně kostrbatá, zkostnatělá a otravná. Napadlo mě, že by bylo skvělé, pokud bych IPython (a všechny úžasné funkce které nabízí) mohl používat jako shell...
IPython sám o sobě umožňuje v defaultním profilu spouštět i shellové příkazy (stačí před ně umístit vykřičník), ale to vskutku moc praktické není. Chvíli jsem se tedy pídil na netu a přišel na to, že v IPythonu možnost používat ho jako plnohodnotný shell již existuje! Stačí načíst profil sh (tedy startovat IPython příkazem: ipython -p sh) a můžete v IPythonu pracovat jako v běžném shellu a spouštět standardní programy! A vše samozřejmě kombinovat s úžasnou Pythoní syntaxí, tedy máte možnost např. spouštět wget v klasické pythoní for smyčce či cokoliv jiného vás napadne.
Tohle je samo o sobě velmi praktické (možnost přímého použití Pythonu jakožto shellového skriptovacího jazyku a využití výborných vlastností IPythonu jakožto interaktivního interpreteru) a troufám si tvrdit, že Windows PowerShell kvalit IPythonu ani náhodou nedosahuje. Nicméně jedna zásadní věc stále chybí - a to jednoduchý objektový přístup ke klasickým shellovým příkazům a obecně k systému. Avšak s poslední verzí IPythonu 0.7.2 se i toto změnilo - přibyl fascinující modul IPipe (doporučuji kliknout, jsou tam i screenshoty
), který do IPythonu vnáší objektové roury a zapouzdření některých základních systémových věcí (adresáře, soubory, procesy, uživatelé a skupiny) do objektů. Jsou díky tomu možné třeba konstrukce jako:
ils | ifilter("_.isfile() and size > 100000") | idump
A také se zde objevil perfektní objektový browser ibrowse, kde můžete procházet libovolnou strukturu objektů (adresářový strom, uživatele nebo prostě cokoliv co profiltrujete přes rouru) a vidět u nich všechny atributy v přehledném curses rozhraní:
ils("/home/mikos/python") | ibrowse
(pozn.: dávat v tomto případě ibrowse za ils je zbytečné - na systémech kde je podporováno curses rozhraní je ibrowse použito jako defaultní způsob výstupu)
Podporu pro tyto IPipe objektové roury si můžete velice jednoduše přidat i do vašich vlastních tříd, objeví se tedy jistě brzy spousta dalších rozšíření. Jediné co mi v současnosti chybí je objektová náhrada za běžné shellové příkazy (tedy coreutils). Až se toto stane skutečností (což myslím nebude dlouho trvat), stane se z IPythonu skutečně ultimátní objektový shell pro Linux s jednou obrovskou výhodou oproti Windows PowerShellu - člověk znalý Pythonu bude jako doma a nebude se muset učit žádnou novou syntaxi. Navíc IPython jakožto interaktivní interpreter je naprosto nepřekonatelně komfortním prostředím 
Tiskni
Sdílej:
Booože... pokud je uživatel tak blbej, že spustí cokoliv mu někdo pošle, tak ho přeci absence shellu nijak neochrání, stejně tak může spustit binárku
Navíc Vista snad už má mít lépe dělená práva (defaultně člověk nebude pracovat pod rootem... eh, tedy v jejich terminologii Administrátorem
) a na screenshotech sem viděl dokonce něco, co připomínalo sudo/kdesu.
No jo, holt je to jejich blbost
Po pravdě já osobně Microsoftu vůbec nezávidím! Všichni ví, jak se věci mají, a on teď stojí před problémem, jak odstranit bezpečnostní díru a zároveň zachovat zpětnou kompatibilitu s programy, které tuto "feature" potřebují (např. MS Word).
Co byste chtěl od architektury, kde se režim přístupu procesoru do paměti nastavuje na řadiči klávesnice...
.........
Respektive on je Windows PowerShell ke stažení už teď (tedy i pro XPčka), nicméně je to jen Release Candidate verze a co sem četl jinde tak prý opravdu v základní verzi Visty nebude (až později předpokládam v nějaké serverové verzi).
I když vzhledem k tomu jak Microsoft vydání Visty neustále odkládá, tak kdo ví
Každopádně mě to zas tolik nezajímá, Windows nepoužívám už 3 roky. Takže pokud to tam nebude, jedině dobře, čím horší bude Vista tím lépe pro Linux
Blíží se začátek semestru a navíc teď dělám na brigádě (stránky v PHP)...
To je fajn, mě totiž svého času docela dostal tenhle fígl z Ruby:
http://redhanded.hobix.com/inspect/hoppingThroughPipesAndClosures.html
Jestli to jde v Pythonu taky, tak je to super.
Trošku to pak smrdí monádami, ale to je jedině dobře.
Takže stačí v tvé třídě (kterou chceš s tou rourou používat) předefinovat metodu __rand__ a už máš funkční implementaci rour (podobně právě IPipe v IPythonu funguje)
Tak to mi nějak nedošlo, pořád žiju trošku ve smalltalkovsky-rubínovém sjednoceném namespacu operátorů a metod (tedy přesněji metod normálně pojmenovaných a metod s divnými názvy typu "+", "|" a podobně.
Škoda jen, že tam není taková volnost při definování operátorů, hádám, že třeba na >>= můžu zapomenout.
(Mimochodem, stejně jsem začal studovst Python, hlavně teda kvůli SciPy. Ten projekt je fakt pěknej.
A ještě k tomu Python-Fu v GIMPu, Blender scripting…no jo, uplatním ho i tak.)
) a vybavil se mi jen textový and, ale ten je (jestli to chápu správně) jen pro booleany, že? (Asi se na pár týdnů radši začtu do učebnice.
)
and, or, not, atp.).
Pythonu zdar!
To nic nemění na tom, že s vámi nesouhlasím
Obecně mnoho věcí v Unixu se mi zdá, že by mohlo být řešeno v současnosti (když už máme vcelku výkonné počítače) lépe, třeba Smalltalk budiž příkladem
tohle uz tu jednou bylo, pod nazvem "windows scripting host". byla to katastrofa, vyhnout se tomu nedalo protoze to instaloval office a krome tvurcu viru to nepouzival snad nikdo.Tak já jsem tvůrce virů, a to jsem ani jeden vir nenapsal. To jsem myslel, že je to těžší
tohle uz tu jednou bylo, pod nazvem "windows scripting host". byla to katastrofa, vyhnout se tomu nedalo protoze to instaloval office a krome tvurcu viru to nepouzival snad nikdo. cely ten napad mi prijde jako dalsi pripad kdy je nekdo do sveho oblibeneho jazyka zamilovan tak slepe ze se ho snazi pouzivat i tam kde se vubec nehodi. php-gtk budiz vsem vystrahou.Naprostý souhlas. IMHO jde o příklad popírání zásady KISS. Dle mého názoru. Scriptování v shellu by mělo sloužit k tvorbě jednoduchých automatizačních scriptů a tam objekty nepatří. Pro tvorbu složitých věcí pak naopak jsou vhodné objekty, ale nepatří do shell scriptů.
A co víc - jsou to právě roury pracující s objekty (neposílá se jen text jak je to zvykem u běžných shellů), něco jako ta IPipe o které v zápisku mluvím. Stačilo by se podívat na ty stránky na Wikipedii než něco řeknete
ils |ifilter | idump
jednym spravnym prostredim opovrhujem (snad nielen ja).
tak nam ostal len pripad samostatne binarky (popr i mix binarky + built-in). Tie medzi sebou musia komunikovat. Bud si prehadzuju objekty ako kusy pamate vytrhnute z jednoho procesu vrazene do ineho (hmm, tu nieco smrdi), alebo transparentna reprezentacia, t.j. text.
v konecnom dosledku jedine co dostaneme, je nieco, co nam nas nablyskany supernovy stroj degraduje na uroven 486. Ak ma niekto zaujem kopirovat windoze, nemusi to byt prave tato vlastnost.

Ved i na druhej strane barikady je podobna zvrhlost ... php

Podle mě je by byl naopak objektový shell mnohem transparentnější než stovky různých malých porgrámků, který má každý jiné parametry a jsou tak nekonzistentní. UNIX je výborná myšlenka, ale rozhodně to není nějaká "konečná myšlenka" (nad kterou by nemohlo být lepší), vývoj se nezastavil a nikdy nezastaví
A btw. já nikde nepsal že by ten můj vysněný objektový shell měl být defaultní! Naprosto chápu, že defaultním by měl na *nixových (minimálně dokud jim tak budeme říkat
) systémech zůstat klasický shell. Ale chci aby tu zároveň nějaký kvalitní objektový shell byl, aby lidé měli možnost volby.
.
Chápu že by to asi nebylo pro každého (rozhodně ne pro lidi, kteří jsou zvyklí na strukturované imperativní programování
), ale Smalltalk je geniálně čistý a úžasně mocný objektový programovací jazyk (i když i na něm by se dalo pár věcí vylepšit, příkladem budiž Self). Alana Kaye považuju za jednoho z největších géniú v oblasti IT všech dob. Bohužel svou dobu tak trochu předběhl, ale tak to už u géniů často bývá
Ja si napr myslim, ze ten hrib po vybuchu atomovej bomby je krasny, ale urcite by som ho nechcel mat doma v zahrade
), dostanem nasledovne:
Už dááávno je tu verze 0.7.x. A třeba ta IPipe přibyla až v poslední verzi 0.7.2.
.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.