AmigaDOS IVJan Hlavatý
V této části budeme pokračovat ve výčtu příkazů AmigaDOSu z minula. Předem se pokusím napravit chybičku, která se vloudila do minulého dílu, kde
jsem popisoval dědičnost procesů shellu. Mylně jsem uvedl, že seznam adresářů
programů PATH se nedědí - není tomu tak. PATH se dědí také. Sorry. FAULT
/N/M
Příkaz FAULT vypíše text chyby, který se vztahuje k zadaným chybovým kódům. FIXFONTS
Tento příkaz provede aktualizaci seznamu dostupných velikostí pro všechny
instalované fonty. Vytvoří pro každý font odpovídající soubor s příponou
„.font“, do kterého zapíše všechny dostupné velikostí fontu nalezené v jeho
datovém adresáři. GET
NAME/A
Vypíše obsah lokální proměnné procesu. Argumentem je jméno této proměnné. GETENV
NAME/A
Vypíše obsah globální dosové proměnné, podobně jako příkaz GET vypíše obsah
proměnné lokální. ICONX
Toto není tak docela příkaz AmigaDOSu ale spíš Workbenche, nicméně ho zde
popíši, protože je v úzkém spojení s dávkovými soubory, kterými se budeme
zabývat. Slouží totiž k pohodlnému spouštění dávkových souborů z Workbenche
pomocí ikony typu Projekt. Tuto ikonu přiřadíte dávkovému souboru a její
„Default tool“ nastavíte na „IconX“. Po dvojitém nakliknutí této ikony bude
dávkový soubor spuštěn podobně jako příkazem EXECUTE. V tooltypes ikony můžete
nastavit několik parametrů: Pomocí WINDOW=<popis okna> můžete specifikovat jaké
okno se použije pro standardní vstup/výstup. DELAY=<hodnota v 1/50s> určíte jak
dlouho po skončení provádění dávky má ještě okno zůstat otevřené (pokud jste
nespecifikovali klíčové slovo WAIT v popisu okna CON:). Pomocí STACK=<velikost
zásobníku> můžete nastavit počáteční velikost zásobníku pro proces Shellu který
bude použit k vykonání dávky. Pomocí rozšířeného výběru můžete přidat dávce
argumenty stejným způsobem jako ostatním Workbenchovým programům. IF
NOT/S, WARN/S, ERROR/S, FAIL/S, EQ/S, GT/S, GE/S, VAL/S, EXISTS/S
Tento příkaz je použitelný pouze v dávkových souborech a umožňuje podmíněné
vykonání úseku dávky. K dispozici je několik různých podmínek které určují zda
se daný úsek vykoná nebo ne. Tento úsek je ohraničen příkazem IF s podmínkou na
začátku a příkazem ENDIF na konci. Je zde také možnost vložit bloky dva jeden se
vykoná pokud je podmínka splněna, druhý pokud splněna není. Tento alternativní
blok se označí příkazem ELSE. Celý úsek dávky pak vypadá takto: IF <podmínka>
<blok příkazů pro splněnou podmínku> ELSE <blok příkazů pro nesplněnou podmínku>
ENDIF. Podmíněné bloky je možno vnořovat.
Podmínky použitelné pro větvení dávky jsou následující:
NOT - toto klíčové slovo v kombinaci s jakoukoli další podmínkou znamená její
negaci (opačný význam)
WARN - tato podmínka je splněna, má-li návratový kód předchozího příkazu (RC)
hodnotu alespoň 5 (varování).
ERROR - tato podmínka je splněna, má-li návratový kód předchozího příkazu (RC)
hodnotu alespoň 10 (chyba).
FAIL - tato podmínka je splněna, má li návratový kód předchozího příkazu (RC)
hodnotu alespoň 20 (selhání). Tuto podmínku využijete pouze v případě, že
automatické selhání dávky je nastaveno na vyšší hodnotu příkazem FAILAT (jinak
bude dávka při selhání ukončena).
EXISTS <jméno souboru> - podmínka je splněna když je objekt určený jménem
souboru k nalezení. Pokud chcete testovat existenci assignu bez toho aby se
objevil requester žádající o vložení disku s tímto jménem, použijte místo toho
příkaz ASSIGN <jméno assignu> EXISTS a testujte jeho návratový kód pomocí WARN.
<řetězec1> EQ <řetězec2> - je splněna, pokud jsou si znakové řetězce rovny.
Nebere v úvahu malá/velká písmena.
<řetězec1> GE <řetězec2> - je splněna, pokud hodnota řetězce 1 je větší nebo
rovna řetězci 2 (textově), nebo pokud specifikujete klíčové slovo VAL, berou se
řetězce jako numerické hodnoty.
<řetězec1> GT <řetězec2> -je splněna, pokud hodnota řetězce 1 je větší než
hodnota řetězce 2 (textově), nebo pokud specifikujete klíčové slovo VAL, berou
se řetězce jako numerické hodnoty.
Podmínky „menší“ a „menší nebo rovno“ vyrobíte snadno pomocí NOT GE a NOT GT.
Samozřejmě že v dávkovém souboru můžete používat dosové proměnné na místě
řetězců. INFO
DEVICE
Tento příkaz vypíše informace o médiích dostupných DOSu. Bez argumentu DEVICE
vypíše informace o všech médiích, nebo pokud jako argument zadáte jméno jednoho
zařízení/média, vypíše informace jen o něm. Vypisuje jméno zařízení ve kterém je
médium umístěno, celkovou velikost média, počet použitých a volných bloků,
stupeň zaplnění v procentech, počet chyb zjištěných na médiu, stav média a jméno
média. INSTALL
DRIVE/A, NOBOOT/S, CHECK/S, FFS/ S
Tento příkaz umí zapsat na disketu bootblock. Tím je možno učinit disketu
bootovatelnou pod AmigaDOSem. Bootblock je také možno z diskety smazat pomocí
klíčového slova NOBOOT. Lze také provést kontrolu bootblocku pomocí CHECK -
návratový kód je nastaven na 5 (warn) v případě že disketa obsahuje spustitelný
bootblock, který se však liší od standardního bootblocku systému. Tim lze udělat
jednoduchou kontrolu proti bootblockovým virům. FFS nemá žádnou funkci a je zde
už jen z důvodu kompatibility se staršími verzemi systému. JOIN
FILE/M/A, AS=TO/K/A
Tímto příkazem lze spojit několik souborů dohromady. Argumenty jsou vstupní
soubory, které se spojí dohromady v pořadí v jakém jsou uvedeny, a za klíčovým
slovem TO následuje jméno výsledného souboru, do kterého se vstupní soubory
spojí. LAB
Tento příkaz označuje návěstí v dávkovém souboru (místo na které se dá
skočit příkazem SKIP). Není to skutečný příkaz, slouží pouze k označení místa
pro skok a je vyhledáván příkazem SKIP. Za LAB se uvádí jméno návěstí. Může být
libovolně dlouhé, ale pokud obsahuje mezery musí být uzavřeno do uvozovek. LIST
DIR/M, P=PAT/K, KEYS/S, DATES/S, NODATES/S, TO/K, SUB/K, SINCE/K, UPTO/K,
QUICK/S, BLOCK/S, NOHEAD/S, FILES/S, DIRS/S, LFORMAT/K, ALL/S
Tohle je opět jeden ze zajímavějších příkazů. Stručně řečeno, slouží k
vypisování obsahu adresářů, podobně jako DIR. Narozdíl od DIR, který slouží k
orientaci uživatele ve struktuře adresářů, umožňuje LIST pořídit informace o
jakýchkoli vlastnostech jakýchkoli souborů a ty pak vypsat v požadovaném
formátu. Kromě obyčejných patternů umožňuje LIST vypisovat například pouze
soubory (klíčové slovo FILES) nebo pouze adresáře (klíčové slovo DIRS), omezit
rozsah vypisovaných souborů podle jejich data (SINCE <datum> pro soubory novější
než <datum>, UPTO <datum> pro soubory starší než <datum>, nebo obojí pro
rozsah), případně požadovat soubory jejichž jméno obsahu-je určitý řetězec (SUB
<řetězec>, což odpovídá patternu #?<řetězec>#?>). Formátovací řetězec pro
specifikaci výstupního formátu se zadává pomocí klíčového slova
LFORMAT=„řetězec“. Speciální symboly označují místa pro vkládání údajů. Možnosti
jsou:
%a - atributy souboru
%b - velikost souboru v blocích
%c - komentář souboru
%d - datum poslední změny
%e - koncovka jména souboru (vše za poslední tečkou ve jméně souboru)
%k - klíč souboru (jednoznačný identifikátor souboru v rámci média obvykle číslo
prvního bloku souboru, ale není podmínkou)
%l - délka souboru v byte
%m - jméno souboru bez koncovky (a bez tečky - tedy pozor na jména končící
tečkou)
%n - jméno souboru
%p - cesta k souboru (adresář ve kterém je soubor/adresář umístěn)
%t - čas poslední změny
%s - tohle je složitější. Pokud se %s vyskytuje ve formátovacím řetězci jen
jednou, bude to jméno souboru. Pokud dvakrát, bude to cesta pro první u jméno
souboru pro druhý výskyt. Pokud třikrát, bude to cesta, jméno souboru a ještě
jednou jméno souboru. Pokud čtyřikrát a více, bude to cesta pro první a třetí
výskyt, zbytek budou jména souboru.
QUICK, BLOCK, DATES, KEYS a NODATES ovlivňují implicitní formát výstupu, pokud
není LFORMAT specifikován. Normálně se vypisují jméno souboru, délka souboru,
atributy souboru, datum souboru v „lidském“ tvaru (tj. včetně „dnes“, „včera“
atd.), čas souboru a (pokud existuje) na dalším sádku komentář souboru, před
kterým je pro identif7kaci vložen znak „:“ a mezera. QUICK způsobí, že se
vypisují pouze jména souborů. BLOCK způsobí vypisování délky souboru v blocích
místo v bajtech (blok je obvykle dlouhý 512 bajtů a je to nejmenší jednotka v
jaké se rozděluje místo na médiu). KEYS způsobí že se navíc vypíšou klíče
souborů, NODATES vypne vypisování datumu. DATES způsobí, že se nepoužívají
speciální názvy jako „včera“ v datumech. Pokud je zadán QUICK, DATES způsobí že
se kromě jmen souborů vypíší i jejich datumy.
Volba ALL způsobí rekurzivní prohledávání i vnořených adresářů. Volba NOHEAD
zakáže vypisování řádku hlavičky na začátku každého vypisovaného adresáře a
celkových informací na konci. LOCK
DRIVE/A, ON/S, OFF/S, PASSKEY
Tento příkaz slouží k softwarové ochraně médií proti zápisu. Užitečný je zejména
u harddisku, kde hardwarová ochrana proti zápisu neexistuje. Argument DRIVE je
jméno média nebo nařízení které chcete chránit. Klíčové slova ON znamená že
chcete ochranu zapnout, OFF že vypnout. Kromě prostého zapnutí/vypnutí můžete
ještě při ON specifikovat heslo, které pak bude nutné ke zrušení ochrany.
Ochrana se NEZAPISUJE na médium ani nikam jinam, trvá tedy jen do příštího
rebootu/vypnutí počítače. Neslouží tedy k ochraně před uživatelem, ale spíš přel
programy. které by se mohly pokusit o nežádoucí změny na médiu. MAKEDIR
NAME/M
Tímto příkazem vytvoříte nový adresář na médiu. Narozdíl od Workbenche nevytváří
pro adresáře ikony. Můžete vytvořit i víc adresářů najednou, pokud uvedete víc
argumentů. Pokud vytváříte několik vnořených adresářů, musíte je specifikovat v
takovém pořadí, aby adresář ve kterém chcete vytvořit vnořený adresář vždy už
existoval. MAKELINK
FROM/A. TO/A, HARD/A, FORCE/S
Tímto příkazem lze vytvořit speciální odkazy v rámci média - LINKS. Linky Jsou
objekty podobně jako soubory a adresáře a mohou představovat jak soubor, tak
adresář. Rozdíl je v tom, že fyzické umístění souboru nebo adresáře na který se
link odkazuje je ve struktuře adresářů média někde jinde a nebo pod jiným
jménem. Tím je možné docílit toho, že různá jména se odkazují na tentýž objekt.
Když link smažete, vymaže se pouze link samotný, nikoliv objekt na který
odkazuje. Argument FROM je jméno linku, argument TO je objekt na který link bude
ukazovat. Pokud chcete vytvořit link na adresář, musíte specifikovat ještě
klíčová slovo FORCE. MOUNT
DEVICE/M, FROM/K
Tento příkaz slouží k zamontování nových dosových zařízení do systému. Soubor s
popisem zařízení se jménem stejným jako název zařízení bez dvojtečky může být
uložen v DEVS:DosDrivers, SYS:Storage/DosDrivers nebo být ve stylu starých verzí
OS (1.3) součástí souboru DEVS:MountList. Můžete také uvést pattern pro
zamontování více zařízení najednou (jak je tomu například ve standardní
startup-sequenci MOUNT DEVS:DOSDrivers/~(#?.info)). NEWCLI, NEWSHELL
WINDOW, FROM
Tímto příkazem se spouští nový proces Shellu. Nový proces zdědí prostředí z
procesu který ho vytvořil, jak jsme o tom hovořili na začátku minulého dílu
Argument WINDOW obsahuje popis okna pro vstup/výstup pro tento nový shell a
obvykle to bývá popis okna zařízení CON:. Použít lze i jiný handler, který
umožňuje interaktivní provoz (např. AUX). Argument FROM udává jméno dávkového
souboru, který se upustí ihned po vytvoření nového procesu Shellu, podobně jako
se startup-sequence spouští po vytvoření prvního procesu Shellu při rebootu.
Pokud tato dávka neobsahuje příkaz ENDSHELL/ENDCLI, pokračuje pak tento proces
Shellu po skončení zpracování dávky v interaktivním režimu. PATH
PATH/M, ADD/S, SHOW/S, RESET/S, REMOVE/S, QUIET/S
Tímto příkazem můžete ovlivnit, kde všude se budou hledat příkazy AmigaDOSu když
napíšete jen jejich jméno a ne cestu kde jsou umístěny. Minimálním obsahem PATH
je implicitní adresář na začátku a C: na konci. Mezi tyto dvě položky můžete
přidat Další adresáře, ve kterých se má příkaz hledat. PATH bez argumentů nebo s
argumentem SHOW vypíše aktuální seznam PATH pro tento proces Shellu. Pokut
uvedete za příkaz PATH název adresáře a (nepovinní) ADD, přidá se tento adresář
do seznamu prohledávaných adresářů. Pokud uvedete jméno adresáře a REMOVE, bude
tento adresář ze seznamu odstraněn (pokud tam je). Klíčové slovo RESET způsobí
vynulování seznamu, takže v ním zůstane pouze implicitní adresář a C:. Pokud je
v seznamu adresář který se nachází na médiu které není zrovna v mechanice a vy
si vypíšete seznam PATH, objeví se requester žádající o vložení této diskety.
Tomu lze zabránit použitím QUIET. PROMPT
PROMPT
Nataví textový řetězec, kterým vás proces Shellu vyzývá k vložení příkazu. Tento
řetězec může obsahovat značky pro vložení tří údajů o procesu Shellu:
%n - číslo tohoto procesu shellu
%s - aktuální implicitní adresář
%r - návratový kód posledního příkazu
Pokud zadáte příkaz PROMPT bez parametrů, nastaví se řetězec na implicitní:
„%n.%s>“, tj. udává číslo shellu a adresář. Ve formátovacím řetězci můžete s
výhodou použít ANSI escape sekvence, jako třeba:
prompt „*E[2m%n.%s>*E[0m“
což způsobí, že se výzva bude vypisovat jinou barvou než ostatní text. Dokonce
je možné do výzvy vložit text vygenerovaný jiným příkazem pomocí zpětných
apostrofů . Tady pozor na vyhodnocování:
prompt „date >“
se vyhodnotí pouze jednou při zadání příkazu date, takže ve výzvě bude vždy
totéž datum a čas. Pokud však použijete „*“, jako escape pro „“, tj. napíšete
„*“ místo „“, vloží se do výzvy text „date “ místo vyhodnocení výstupu
příkazu date. To nastane až teprve když se prompt vypisuje, takže se zobrazí
aktuální datum a čas:
prompt „* date*>“.
Pomocí * můžete tedy odsunout efekt některých speciálních znaků až na další
zpracování (v textu sice, jsou, ale nezpracují se jako speciální). Pokud chcete
zamezit i zpracování samotné *, napište místo ní dvě: **. Pomocí * lze zapsat
např. uvozovku: *“, obrácený apostrof *, znak konec řádku *N noho znak Escape
*E. PROTECT
FILE/A, FLAGS, ADD/S, SUB/S, ALL/S, QUIET/S
Tímto příkazem lze nastavovat atributy souboru. Možné atributy souboru jsou:
s - script: Tento soubor je dávkový soubor Shellu a pokud byl spuštěn jako
příkaz, bude vykonán pomocí EXECUTE.
p - pure: Tento program byl naprogramován speciálním způsobem tak, že je možné
sdílení téhož programu v paměti více procesy. To znamená, že pro každé další
současné spuštění tohoto programu lze použít kód programu který už je v paměti
bez toho aby došlo ke konfliktu. Základním požadavkem pro tento druh programu
je, že se kód programu uložený v paměti tak aby byl nahrán NIKDY NEZMĚNÍ. To
znamená, že kótové segmenty programu neobsahují žádná data - data se ukládají
buď na zásobníku, nebo v alokovaném bloku paměti jehož adresa je uložena v
některém adresovém registru. Jedině takovýto program, je možné nahrát natrvalo
do paměti pomocí příkazu RESIDENT. Většina systémových příkazů AmigaDOSu je
napsána touto technologií. Bohužel, k mému překvapení, na systémových disketách
Workbenche 3.1, jsou tyto atributy VYMAZÁNY! Chybička se vloudí... Na starých
disketách Workbench 3.0 od Commodore byly tyto atributy nastaveny korektně...
Nezbývá než juknout na starý Workbench 3.0 a atributy si nastavit podle něj...
a - archived: Soubor nebyl změněn od poslední archivace. Tento bit je vymazán
při jakékoliv změně v souboru. Toho je možno s výhodou využít pro sledování změn
- při každé kontrole bit nastavit a příště pak snadno poznáte který soubor se
směnil podle vymazaného bitu archived.
r - readable: Soubor je možno číst. Pokud tento bit vymažete, nelze soubor
otevřít pro čtení.
w - writeable: Do souboru je možno zapisovat. Pokud tento bit vymažete, nebude
možno do souboru zapisovat.
e - executable: Soubor lze spustit. Pokut tento bit vymažete, nepůjde soubor
spustit jako program i když je to programový soubor. Tím byste mohli například
zabránit nežádoucímu spuštění programu o kterém víte, že obsahuje virus a přesto
si ho chcete nechat.
d - deletable: Soubor lze vymazat. Pokud tento bit smažete, nepůjde soubor
vymazat. Pozor, některé programy používají při přepisování souborů tuto
technologii: Vytvoří nový soubor s dočasným názvem. Do něj uloží obsah nového
souboru, pak původní soubor smažou, nový soubor přejmenují na jméno smazaného
souboru. Tato technologie je bezpečnější pro případ náhlé katastrofy než přímé
přepisování původního souboru. Pokud tedy zakážete smazání souboru, může se vám
stát že ho nebudete moci ani modifikovat. QUIT
RN/C
Tento příkaz.je použitelný pouze v dávkových souborech. Způsobí okamžité
přerušení vykonávání dávkového souboru a nastavení jeho návratového kótu na
hodnotu uvedenou v argumentu RC. RELABEL
DRIVE/A,NAME/A
Tímto příkazem lze přejmenovat médium. DRIVE je současné jméno přejmenovávaného
média nebo drive ve kterém je médium umístěno, včetně dvojtečky na konci. NAME
je nové jméno média, tentokrát BEZ dvojtečky. na konci. REMRAD
DEVICE, FORCE/S
Způsobí likvidaci resetu vzdorného ramdisku RAD:. Paměť zabíraná tímto ramdiskem
je okamžitě uvolněna a ramdisk nebude nadále přístupný. DEVICE je jméno zařízení
tohoto resetuvzdorného ramdisku (obhospodařovaného ramdrive.device), pokud je
jiné než. RAD:. FORCE vynutí likvidaci ramdisku i když se používá.
To je pro dnešek vše, při troše štěstí příště tento popis dokončíme a možná už i
začneme experimentovat s dávkovými soubory. 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
|