Alternativní shellyMichal 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
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|