AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Amiga na PC     Amiga Forever  

Alternativní shelly

Michal Kára

K užívání Amigy lze přistupovat dvěma způsoby. Někdo používá Workbench a kliká na ikonky, jiný spíše než myš využívá klávesnici a CLI (Shell, konzoli). Právě pro ně je určen tento článek.

Několik pojmů na začátek
Nejprve bychom si měli ujasnit význam několika slov a výrazů použitých v tomto článku:
Historie (History) - Shell si vámi napsané řádky pamatuje takže si v nich poté můžete listovat. Je to výhodné zvláště pokud se překlepnete ve jménu souboru. Stačí pouze si příslušný příkaz nalistovat v historii a jméno opravit. Takovýto opravený řádek se po svém odeslání samozřejmě zařadí až na konec historie.
Doplňování jmen (Filename completion) - Obvykle bývá umístěno na tabelátoru. Jestliže napíšete část jména souboru či adresáře a pak stisknete onen tabelátor, program zbytek doplní. K čemu to? V README ke KingCONu píše autor přibližně toto: Jestliže chcete vyzkoušet doplňování jmen, napište type s:sta a hned za posledním {a} stiskněte tabelátor. Teď už víte, k čemu slouží. Nebo snad dokážete bezchybně napsat "startup-sequence" za méně než jednu sekundu?
Schránka (Clipboard) - Tato vlastnost je standardní již od verze 2.0 pro CLI která mají simple refresh (více viz článek o NewCLI v tomto čísle). Jestliže označíte myší v okně CLI text a poté stisknete kombinaci PraváAmiga-C, přesune se text do schránky. Ten lze opět zkopírovat do okna pomocí kombinace PraváAmiga-V. Také jej lze využít i v jiném programu, například v CEDu, ovšem pouze pokud byl ve startup-sequenci spuštěn příkaz ConClip. Tento přenos funguje i obráceně. Pod systémem 1.3 byl používán NEWCON. V něm schránka fungovala také, avšak její obsah nebylo možné využívat v jiných programech.
Větší paměť (Scrollback) - V systému 2.0 byla do CLI přidána mimo jiné i ta vlastnost, že si pamatuje vytištěné znaky, a to i ty, které jsou již mimo obrazovku. Jestliže změníte velikost jeho okna, jsou všechny znaky na obrazovce překresleny. Při zvětšení okna tak můžete znovu uvidět i řádky, které z ní již odskrolovaly. Ovšem v poslední době se jde ještě dále. Některé programy nabízí možnost mít na okně šoupátko, kterým se lze podívat i o více než jednu stránku nahoru.
Rychlý posuv (Jump scroll) - Výhodný zvláště pro majitele pomalejších Amig. Jestliže se má odsunout více řádek v krátkém čase, je zbytečné posouvat obrazovku o jednu, ještě jednu a ještě jednu, ale tento posuv lze provést najednou, což je o něco rychlejší. Výsledkem je zrychlený výstup textu na obrazovku.
Pípa (Pipe) - Tato vlastnost bývá občas pojmenovávána také roura. Pokud se na řádku napíše více příkazů oddělených určitým znakem, většinou svislítkem ( | ), budou jejich standardní vstupy a výstupy navzájem propojeny. Napíšete-li "list | more", spustí se program MORE a objeví se v něm výstup předcházejícího příkazu LIST. Je to jako kdybyste napsali nejprve "list >temp" a poté "more <temp". Výhodou je, že se přechodný soubor (v našem příkladě "temp") nevytvoří, popřípadě automaticky smaže a vy se nemusíte zabývat tím, aby nekolidoval s nějakým jiným. U standardního shellu funguje pouze s příkazem PIPE, na UNIXU běžné.

Typy shellů
To, čemu zde říkám shell, mohou být dva dosti rozdílné druhy programů. Buď jde jako v případě standardního CONu či KingCONu o handler konzole. To je zařízení, které obstarává výstup na obrazovku a vstup z klávesnice. Takový handler má po svém spuštění za úkol otevřít okno. Poté do něj tiskne všechny znaky, které do ní program posílá.
Znaky z klávesnice může přijímat ve dvou módech. Standardně vždy přijme celý řádek a až pak ho pošle programu, funguje v tzv. LINE módu. V takovém případě zajišťuje všechny úpravy jako mazání znaků, historii, vkládání obsahu stránky atd. sám handler konzole. Ovšem aplikaci si může vyžádat posílání každého znaku. Tomuto módu se říká RAW (přímý). Poté si však musí předchozí věci zajistit sama, většinou se však tento mód pro vstup celých řádků stejně nepoužívá. Výhodou takovéhoto handleru je, že si může sám spravovat věci jako scrollback nebo ikonifikaci, což je s shelly jako takovými velice obtížné. Na druhou stranu se nestarají o vlastní provádění příkazů, takže nemohou mít například vlastní vestavěné příkazy. Proto je také příslušná položka v tabulce proškrtnuta. Druhá možnost je napsat obyčejný program. Pak se mu říká shell. Shelly zajišťují vlastní zjištění toho "co to vlastně uživatel napsal", t.j. oddělení příkazu, argumentů a jeho provedení, nezabývají se však samotným tiskem písmen do okna. Většinou si ale konzoli přepnou do RAW módu (viz výše) a poté vstup z ní zpracovávají samy. Je to jednodušší, avšak nemohou implementovat scrollback. Na druhé straně je jejich naprogramování jednodušší než psaní handleru. Proto bývá výhodné oba programy zkombinovat, používat jednak nestandardní handler konzole a jednak do něj spuštěný shell. Možná vám vrtá hlavou otázka, co se stane se speciálními klávesami pokud například spustíte ZShell pod KingCONem. Jelikož si shell přepne handler do RAW módu, bude pouze předávat znaky z klávesnice dál a nebude je nijak interpretovat, to zajišťuje až shell. Proto také bude aktivní ZShellové doplňování jmen a ne KingCONové.

Historie shellu
Nejstarší konzole ze systému 1.3 byla velmi nepohodlná a nekomfortní. Proto se používala náhrada zvaná NEWCON, která toho uměla o něco více. S nástupem systému 2.0 byly jeho vlastnosti implementovány do standardního CLI. Od té doby v něm nebyly provedeny žádné významné změny. Objevilo se však několik různých alternativních shellů a handlerů konzole, z nichž za chvíli uvedu ty nejvýznamnější.

CShell
CShell byl vytvořen podle svého známého jmenovce používaného pod operačním systémem UNIX. Má svůj vlastní jazyk a speciální příkazy na psaní skriptů. Je však poměrně velký a naučit se ovládat alespoň podstatnou část jeho vymožeností zabere poměrně hodně času. Další problém nastává s tím, že "obyčejné" skripty se musí spouštět explicitně příkazem EXECUTE. Velice výhodnou vlastností je opravdu funkční pípa. CShell je opravdu více než obyčejný shell. Je sice poměrně velký a občas pomalý, ale pokud chcete na Amize požívat vymožeností UNIXU, vyplatí se.

KingCON
KingCON je handler, který nahrazuje starý CON. Pokud je jako okno na WorkBenchi, může mít po pravé straně šoupák na scrollback. Dále má okno menu, ze kterých jsou přístupny některé jeho funkce. Další informace naleznete v tabulce. KingCON Nemá žádné vestavěné příkazy, ale protože je handler, může přes něj komunikovat i jiný shell. Do okna nelze ovšem nic psát z jiných programů. Co se mi nelíbilo je fakt, že sekvence parametrů CLOSE a NOCLOSE nefunguje tak, jako u standardního CONu - okno nepůjde zavřít CTRL-.

ZShell
Dalo by se říci, že ZShell v ničem nevyniká, nemá žádné speciality, není nijak určen. Jeho síla je však právě v té obyčejnosti. Je napsán v čistém assembleru takže je malý (32 KB oproti 120 KB CShellu) a poměrně rychlý. Tuto rychlost ještě zvyšují vestavěné verze příkazů. Není handler, takže nemá scrollback - ani by to nebylo účelné. Proto je ho vhodné používat například s KingCONem. Objevil jsem na něm ale jednu menší závadu: Pokud je spuštěn na obrazovce se dvěma barvami, nepozná to, a používá stále čtyři, jak má nastaveno. V důsledku toho jsou některé texty "neviditelné" a barvy se musí nastavit tak, aby byly použity pouze dvě. ZShell dále podporuje pípu a to hned dvěma způsoby. Buď vytvářením souborů v adresáři "T:" nebo uschováváním dat přímo v paměti pomocí standardního zařízení PIPE:. Nemá žádný speciální jazyk jako CShell, neboť autor míní, že na psaní složitějších dávek je dostatečným nástrojem ARexx. Já s ním mohu pouze souhlasit. Jeho příkazy přejímají vlastnosti z UNIXU - volby například u "copy" se zadávají ne jako u Amigy ale pomocí pomlček (minusů). Chcete-li zrušit podadresář "dh0:Trashcan/blbost" se vším, co v něm je, nepíšete "delete dh0:trashcan/blbost all", ale "delete -r dh0:trashcan/blbost". ZShell však umí používat i standardní příkazy místo svých vestavěných - stačí před ně napsat tečku. Nechcete-li vůbec používat vestavěnou verzi nějakého příkazu, lze elegantně využít příkazu "alias". Napište "alias delete .delete" a ZShell započne používat standardní příkaz "delete" namísto vestavěného.

Který shell si vybrat?
Myslím, že konkrétní výběr záleží na uživateli. Obyčejný uživatel asi použije ZShell či KingCON. Myslím si, že není od věci využít k tomu zvláštní obrazovku, jak je popsáno v tomto čísle v článku o NewCLI, vzadu, ve čtenářském servisu. Chcete-li takto používat ZShell, přidejte to souboru "S:Shell-startup" příkaz ZSH, jež ho spustí. KingCON se na jinou obrazovku umísti podobně jako standardní CLI, více viz jeho návod. Pracujete-li často s UNIXem či chcete z shellu učinit opravdu mocný nástroj, bude vám nejlépe vyhovovat CShell. Avšak pamatujte, že pomocí příkazu "Alias" lze i v obyčejném shellu kopírovat příkazem "cp". Další možností stojící za úvahu je kombinace KingCONu a některého výše uvedeného shellu.

Porovnávací tabulka

  Historie Schránka Doplňování jmen Handler Větší paměť (Scrollback) Vestavěných příkazů Pípa
CON 1.3 - - - + - 0 -
NEWCON + + - + - x -
CON 2.0 (3.0) + + - + - 33 -
KingCON + + + + + x -
CShell + + + - - 98 +
ZShell + + + - - 66 +

Pod pojmem CON je zahrnut i příslušný interpret příkazů. Proto mohou být u CONu 2.0 vestavěné příkazy.

Vytlačiť článok


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )