AmigaDOS I.Jan Hlavatý
Milí přátelé, možná jste si už položili otázku, co se děje těsně po zapnutí
Amigy ještě než se objeví známý screen Workbenche. Harddisk chrochtá, disketová
mechanika pobíhá sem tam a nic není vidět. Manuál k Workbenchi vám v tomto
případě bohužel nepomůže - není to v jeho kompetenci. Co potřebujete je manuál k
DOSu a ten se u „low end“ Amig většinou vůbec nedodává. Pro uživatele, které
Amiga vůbec nezajímá a jenom potřebují občas něco spustit z Workbenche žádný
problém - dokud všechno funguje jak má. Pro tento druh lidí zůstanou názvy jako
„startup-sequence“, „user-startup“ nebo „assign“ navždy nesrozumitelným
blábolem, o kterém maximálně vědí, že „tam někde“ existuje. Pro ty zvědavé
uživatele, kteří neustanou dokud nepochopí Amigu do posledního bajtu aby mohli
cele vejít do jejího „kyberprostoru“, které nakonec nic nepřekvapí a kteří
nejsou závislí na milosrdenství „zasvěcených“, nebol oni sami jsou zasvěcenými -
pro tyto uživatele je určen tento seriálek. Pokusím se v něm zachránit co se dá
tedy uvést čtenáře do problematiky DOSu. Kromě úplných základů (které dozajista
už většinou znáte, ale jistota je jistota) zde uvedu kompletní seznam příkazů
AmigaDOSu 3.0/3.1 včetně jejich praktického použití a probereme zde i
problematiku scriptů („startup-sequence“ je speciálním případem scriptu).
Patříte-li do oné druhé skupiny uživatelů, čtěte dál! Pokud ne, možná později -
pokud vám zvědavost nedá... Tedy do toho! Úplné základy - pro jistotu
Jak jistě víte, data se obvykle ukládají do tzv. „souborů“ (files). Soubor
je skupina bajtů uložená na nějakém médiu, která má svoje unikátní jméno, délku
(počet bajtů v souboru) a některé další vlastnosti, jako jsou ochranné příznaky
souboru (file attributes) nebo komentář souboru. Nejprve se podíváme podrobněji
na tyto základní vlastnosti souborů.
Jméno souboru je maximálně 30 znaků dlouhý řetězec zobrazitelných znaků.
Ve jméně souboru by neměly být obsaženy některé znaky vyhrazené pro speciální
účely, tedy konkrétně „:“ (dvojtečka), „;„ (středník), „*“ (hvězdička), „/“
(normální lomítko), ?“ (otazník), „„ (obrácený apostrof, „#“ (křížek, hash) a
„%“ (procento).
O významu těchto speciálních znaků se budu šířit později, až se budu zabývat
oblastí kde se jejich použití vyskytuje. To, že tyto znaky jsou vyhrazené ještě
neznamená, že by do jména souboru dát nešly - některé z nich jdou, ale mohli
byste se pak dostat do situace kdy budete chtít zadat jméno dotyčného souboru,
ale toto jméno bude (díky speciálnímu znaku) interpretováno jako něco úplně
jiného... tedy speciální znaky ve jménech pokud možno nepoužívat! Dalším znakem
který sice ve jménu používat lze ale přiděláte si tím práci je mezera. Protože
mezera je u příkazů AmigaDOSu používána pro oddělování jednotlivých parametrů
příkazu, je-li jako parametr zadáváno jméno souboru které obsahuje mezeru, je
nutné ho uzavřít do uvozovek - jinak by bylo rozpoznáno jako více různých
parametrů. Jméno souboru je tzv. „case insensitive“ - tedy nečiní se rozdíl mezi
malými a velkými písmeny. Tady musím upozornit na určitý zádrhel s češtinou - u
starších filesystémů (OFS, FFS) nejsou znaky češtiny - malá a velká písmena s
diakritikou, tedy s kódy nad 128 - brána jako jedno písmeno! Malé „č“ tedy není
stejné písmeno jako velké „Č“! Proto doporučuji používat „international“ verze
filesystémů - FFS INTERNATIONAL a FFS DIRCACHE, pokud chcete ve jménech souborů
používat češtinu (což není zase tak špatný nápad).
Adresáře jsou jakési „šuplíčky“ na médiu, do kterých lze vkládat soubory nebo
další adresáře (Sorry, experti.. říct sem to musel). Jsou pojmenovávány stejně
jako soubory (30 znaků jméno. platí totéž co pro soubory ohledně vyhrazených
znaků) a mají i některé podobné atributy (komentář, ochranné příznaky - i když
ty fungují trošičku jinak). Adresáře umožňují udělat si v souborech pořádek -
mít třeba programy v jednom adresáři se jménem „programy“ a obrázky v druhém se
jménem „obrázky“. Adresáře lze vkládat jeden do druhého, takže si uvnitř
adresáře „obrázky“ můžete udělat další adresáře, třeba podle druhu obrázku
„auta“, „kytičky“, „holky“...
Jak jsem řekl, soubory a adresáře lze vytvářet na médiu. Takové médium, to může
být třeba disketa, harddisk nebo paměť počítače. Aby bylo možno tato média
rozlišovat, je potřebuje nějak pojmenovat. Navíc je třeba rozlišovat jednotlivá
výměnná média. která mohou být vložena do stejné mechaniky. Existují tedy v
podstatě dva druhy jmen médií, lišící se ve způsobu odkazu na médium. Prvním
druhem jmen jsou jména „dosových zařízení“ (neplést se zařízeními execu
nacházejícími se v „DEVS:“). Tato jména se odkazují na konkrétní mechaniku a
médium v ní právě vložené. Nečiní tedy rozdílu mezi výměnnými médii. Takovým
označením je třeba jméno disketové mechaniky – „DF0:“. Všimněte si dvojtečky na
konci jména - to je neklamný znak, že nejedná o jméno média a ne o název souboru
nebo adresáře. Jména dosových zařízení (dos devices) jsou obvykle takovéto
třípísmenné kryptogramy - „DF0:“, „DF1:“, „HD0:“, „DH0:“, „RAD:“, „RAM:“, „PC0:“
a podobně...
Druhým typem označení je jméno samotného média - tedy ne mechaniky (volume). To
je třeba jméno diskety „Workbench3.1:“. V tomto případě se rozlišují jednotlivá
média podle jejich pojmenování a nezáleží ve které mechanice se právě nacházejí
- to si dos zjistí (a pokud se nenachází v žádné mechanice, dos si o něj řekne
známým requesterem...). Jména médií bývají obvykle obsažnější a výstižnější než
jména zařízení, aby člověku bylo okamžitě jasné co se na daném médiu nachází. Je
to určitá analogie k popisu na nálepce diskety (odtud také označení „volume
label“). Když zformátujete novou disketu, přiřadí jí systém obvykle jméno
„Empty“ nebo „Prázdný“ v případě české lokalizace. Když na disketu něco
nahrajete, je vhodné ji vhodně přejmenovat dle obsahu -jinak se těžko v hromadě
stejných disket se jmény „Empty“ něco hledá...
Každé médium má minimálně jeden adresář - tzv. „root“. Ten odpovídá základnímu
umístění souborů na médiu bez jakýchkoliv adresářů, přímo na „základní úrovni“.
Na root directory média se odkazujeme přímo jménem média. Umístění souboru ve
struktuře adresářů na médiu se popisuje tzv. „cestou“ (path). To je v podstatě
popis, obsahující jméno média a jména všech adresáře kterými je nutno projít,
abychom se dostali k danému souboru a na konci pak jméno souboru. Na výše
uvedeném obrázku je nakreslen příklad struktury diskety „Obrázky:“. Na této
disketě se nachází pět obrázků ujeden textový soubor „CoJeTu.txt“. Obrázky jsou
zařazeny v adresářích podle jejich typů. V adresáři „Auta“jsou dva obrázky -
„Formule.iff“ a „Trabant.iff“ V adresáři „Holky“ se nachází obrázek „Buchta.iff“
a adresář „Super“ se dvěma dalšími obrázky – „Girl.gif“ a „Idol.iff“. Na tomto
příkladu struktury disku si ukážeme tvorbu cest.
Úplné jméno souboru (tedy včetně cesty) se tvoří tak, že se napíše jméno média s
dvojtečkou na konci, za to se připojí jména adresářů kterými procházíme na cestě
k souboru (od rootu) s „/“ na konci každého jména adresáře, a nakonec se připojí
jméno souboru. Budeme-li chtít například napsat úplný název souboru „Girl.gif“
napíšeme ji jako (sledujte cestu po grafu struktury naší diskety „Obrázky:“):
Obrázky:Holky/Super/Girl.gif
Jak vidíte, část před „:“je jméno média („Obrázky:“), „Holky“ je jméno adresáře
v rootu diskety „Obrázky:“. „Super“ je jméno adresáře uvnitř adresáře „Holky“, a
„Girl.gif“ je jméno souboru uvnitř adresáře „Super“. Teď už víte, proč se ve
jménech souborů a adresářů nesmí vyskytovat znak „/“?
Vypisovat pokaždé úplné jméno souboru by byla „hrozná otrava“. Existuje tedy
možnost psát jména souboru relativně vůči nějakému místu ve struktuře média.
Takovýto referenční bod od kterého se odvozuje umístění souborů a adresářů
zapsaných relativně (neúplná cesta) se jmenuje „implicitní adresář“ (current
directory). Toto místo lze různě přesouvat ve struktuře disku podle potřeby.
Neúplná (relativní) cesta k souboru se pozná podle toho, že na začátku
neobsahuje jméno souboru. Pro ilustraci řekněme, že náš implicitní adresář
nastavíme na „Obrázky:Holky“. Odtud se lze na „Girl.gif“ odkázat relativně
pomocí:
Super/Girl.gif
Protože „Buchta.iff“ se nachází přímo v implicitním adresáři, lze se na ni
odkázat přímo jménem souboru: Buchta.iff
Obecně platí, že jménem implicitního adresáře je prázdný řetězec. U většiny
příkazů AmigaDOSu tedy pokud neuvedete jméno adresáře bude jako adresář brán v
úvahu implicitní adresář. Pokud je uvedení adresáře vyžadováno, lze implicitní
adresář zadat jako prázdný řetězec - „“. Teď bych se měl zmínit o speciálním
významu znaků „/“ a „:“ v relativním jménu souboru. Znak „/“ samotný (tedy s
prázdným jménem adresáře před ním) označuje adresář nadřazený (parent directory)
adresáře nebo souboru - tedy adresář, ve kterém se daný adresář nebo soubor
nachází. Z našeho implicitního adresáře „Obrázky:holky“ se tedy můžeme relativně
odkazovat i „nahoru“ - třeba na textový soubor „CoJeTu.txt“ se odsud dostaneme:
/CoJeTu.txt
Pokud se jménem a cestou odkazujeme na adresář, je v podstatě jedno jestli na
konci uvedeme poslední „/“: „Super“ je totéž co „Super/“. Lomítko na konci se
používá obvykle jen v případě že za jménem adresáře následuje další jméno (ať už
souboru nebo adresáře). Pokud bychom napsali „Super//“, jedná se o adresář
nadřazený podadresáři „Super“ implicitního adresáře, skončíme tedy zpátky v
implicitním adresáři: jsou tu dvě jména adresářů „Super“ (což nás přenese
dovnitř adresáře „Super“) a prázdné jméno „“, což označuje nadřazený adresář
(což nás přenese zpět). Nic nám samozřejmě nebrání postupovat od nadřazeného
adresáře zase „dolů“ - třeba k souboru „Trabant.iff“:
/auta/trabant.iff
Jdou provozovat i naprosté šílenosti typu:
/auta/trabant.iff//
což je odkaz na adresář „Auta“ všimněte si že „trabant.iff“je jméno souboru!
Praktické využití něčeho takového je snad jediné - matení uživatele.
Druhým znakem se speciálním významem je „:“. Je to v podstatě prázdné jméno
média - prázdné jméno ukončené „:“. Tato konstrukce označuje „root“ adresář
média, na kterém se nachází náš implicitní adresář. Tímto způsobem se například
můžeme odkazovat na soubor „CoJeTu.txt“ v rootu diskety pokud máme implicitní
adresář kdekoli na této disketě:
:CoJeTu.txt
Všimněte si, že root už nemá žádný nadřazený adresář! Konstrukce typu
:/
tedy skončí chybou „objekt nenalezen“. Teď nám zbývá už jenom popsat co je to
„assign“. Assign (přiřazení?) je způsob, jak si udělat jakési „záložky“ ve
struktuře disků (myslím tím médií obecně). Můžete si vybrat nějaké místo ve
struktuře média, a toto místo si označit. Tuto značku nějak pojmenujete - a ta
se pak chová podobně jako jméno média - má na konci „:“. Na rozdíl od jména
média však nemusí nutně ukazovat na root a pozor - nemusí nutně ukazovat ani na
adresář! Je proveditelné přiřazení assignu na soubor (!!). Tento druh assignu
však není příliš využitelný a dokáže zastihnout leckterý program nepřipravený...
jediné co se mi povedlo s ním provést bylo přiřazení assignu na jméno
spustitelného souboru a následné spuštění tohoto souboru pomocí assignu a ne
jména. Prosím raději nepoužívat! Existuje několik druhů assignů (tedy tři):
První („normální“) assign přiřadí okamžitě po jeho vytvoření daný objekt jménu
assignu. Pokud třeba dáte assign na nějaký adresář na disketě, DOS si od vás
tuto disketu vyžádá a pak natrvalo vytvoří assign na tento konkrétní adresář.
Pokud se později odkážete na tento assign a disketa na které se onen adresář
nachází nebude zrovna v mechanice, DOS si ji opět od vás vyžádá.
Druhý („opožděný“) druh assignu je shodný s druhem prvním s tím rozdílem že si
danou disketu nevyžádá ihned ale až při prvním vašem odkazu na ni - do té doby
existuje jen jakýsi „zárodek“ assignu.
Třetí („nestálý?“) druh assignu funguje trochu jinak - assign se nepřiřadí
natrvalo, ale při každém odkazu na jméno tohoto assignu se zadaná cesta
vyhodnocuje znovu. Pokud například vytvoříte assign tohoto druhu se jménem „CC:“
který se odkazuje na „DF0:c“, při každém odkazu na „CC:“ se bude jednat o
adresář „C“ na jakékoli disketě která je v mechanice „DF0:“!
Druhou oblastí na kterou se dnes podíváme jsou patterny. Pattern („vzor?“) je
způsob, jak popsat jméno souboru na základě neúplné informace, nebo jak zadat
skupinu jmen souborů s určitými vlastnostmi. Mechanismus patternů je v AmigaDOSu
poměrně komplikovaný, ale o to silnější.
Funkce patternu je asi takováto: Program prohledá všechny položky v daném
adresáři a jméno každé z nich porovná s patternem. Pokud vyhovuje, je tato
položka použita. Pro vyjádření vzorů se používá několik vyhrazených znaků:
„?“ (otazník) - zastupuje právě jeden jakýkoliv znak
„(“<znaky>„)“ - skupina znaků která se bude brát jako jeden prvek
„#“<znak> - znamená že znak následující za „#“ (nebo kombinace znaků uzavřených
do kulatých závorek) se ve jménu může vyskytovat kolikrát chce - včetně žádného
výskytu.
<znak>„|“<znak> - seznam znaků oddělených svislou čárou znamená, že na daném
místě jména se může vyskytovat jeden ze zde uvedených znaků. Místo jednotí.
znaků zde mohou zase být skupiny znaků v kulatých závorkách.
„~“<znak> - (vlnovka) - na tomto místě se nesmí vyskytovat tento znak (nebo
skupina znaků).
„%“ (procento) - označuje žádný znak. Vhodné pro seznam znaků (viz „|“) jako
jedna z možností.
„[“<znak>„-“<znak>„]“ - označuje rozsah znaků (např.[A-Z]jsou všechna písmena)
Pokud se ve jméně souboru vyskytuje některý z těchto znaků (např. závorka), lze
přidáním „`“ (apostrofu) před kritický znak sdělit že tento znak se má brát tak
jak je, ne jako součást definice patternu. Následuje několik příkladů na
patterny:
#? - jakýkoli počet jakýchkoli znaků = cokoli. Jako „*“ na PC.
?hoj -jméno začíná jakýmkoli znakem a končí „hoj“. Vyhovuje např. „Ahoj“,
„ohoj“, „zhoj“, „_hoj“
#?.txt - jméno musí končit na „.txt“. Vyhovuje např. „test.txt“, „1 .txt“,
„.txt“
test#? - všechno co začíná „test“ vyhovuje např. „test“, „test.asm“
a#?z - všechno co začíná na „a“ a končí na „z“ - vyhovuje třeba „az“,
„abcdefghiz“
ba#af! - všechno co začíná „b“, má uprostřed nejméně jedno „a“ a končí „f!“ -
vyhovuje např. „baf!“, „baaf!“, „baaaaaaaaaaaaaaf!“
rata#(ta)! - všechno co začíná „ra“, uprostřed má minimálně jednou „ta“ a končí
„!“ - vyhovuje např. „rata!“, „ratatata!“, „ratatatatatatatatatatatatata!“
(šílený kulometčík)
#`?.(txt|koi) - jméno musí končit na „.txt“ nebo „.koi“
b(a|u|%)f - jméno které začíná „b“, končí „t“ a uprostřed muže mít „a“ nebo „u“
nebo nic - vyhovuje: „baf`, „buf“, „bf“
-(#?.info|#?.auts|#?.bak) - všechno co nekončí na „.info“, „.auts“ nebo „.bak“
([A-Z]|_)#([A-Z]|[0-9]|_) - jméno složené z písmen, číslic a podtržítka, které
nesmí začínat číslicí - syntaxe symbolů ve většině programovacích jazyků
Abyste si mohli získané poznatky náležitě vyzkoušet, popíšu už dnes některé
příkazy AmigaDOSu, i když jen zevrubně. Příkazy AmigaDOSu ze zadávají většinou v
okně Shellu, nebo můžete použít menu Workbench/Execute command... (nebo
Workbench/Vykonat příkaz...). K vytvoření okna shellu můžete použít ikonu
„Shell“ v adresáři „Syslem“ bootovacího disku, nebo zadat příkaz „NEWSHELL“ do
requesteru Workbenche který se zobrazí po volbě položky menu „Workbench/Execute
command...“. Takto vytvořené okno lze zavřít Close gadgetem okna, nebo příkazem
„ENDSHELL“ nebo „ENDCLI“. V tomto okně Shellu můžete zadávat příkazy AmigaDOSu a
ten je bude okamžitě vykonávat. Standardně má dotaz AmigaDOSu na příkaz (tzv.
„prompt“) tvar: <číslo procesu shellu>„.“<implicitní adresář>„>“ a za ním se
nachází kurzor. Nyní můžete psát jméno příkazu který chcete vykonat, případně
mezeru a parametry příkazu oddělené mezerami. Zkuste si tyto příkazy:
CD - bez parametrů vypíše současné umístění vašeho implicitního adresáře
CD <adresář> - pokud jako parametr zadáte cestu (jméno adresáře), přesunete svůj
implicitní adresář do tohoto adresáře.
DIR - bez parametrů vypíše přehled objektů (souborů a adresářů) nacházejících se
v implicitním adresáři DIR <adresář> - pokud napíšete jako parametr adresář,
vypíše se obsah tohoto adresáře
TYPE <jméno souboru> - vypíše obsah textového souboru do okna Shellu. Zkuste
třeba „TYPE startup-sequence“
MAKEDIR <jméno adresáře> vytvoří nový adresář. „MAKEDIR Ahoj“ se pokusí vytvořit
nový adresář ve vašem implicitním adresáři.
DELETE <jméno souboru> - smaže soubor nebo prázdný adresář (pozor! nesmažte si
něco! Pokusy dělejte pokud možno v RAM:)
ECHO <text> - vypíše text do okna Shellu. Pokud výstup příkazu přesměrujete (o
čemž si povíme příště) do souboru, můžete si vytvořit malý textový souborek.
Např. „ECHO >RAM:test.txt Nazdárek!“ vytvoří v RAM: textový soubor „test.txt“,
který si můžete vypsat příkazem „TYPE RAM:test.txt“
DATE - vypíše aktuální systémové datum a čas
RENAME <původní jméno> <nové jméno> - přejmenuje soubor nebo adresář. Lze jím
také přesouvat objekt v rámci jednoho zařízení (média), pokud napíšete u nového
jména cestu lišící se od původní.
LIST - podobně jako DIR obsah adresáře, ale zobrazí vypisuje mnohem více
informací o souboru a umožňuje některé zajímavé věci. Zkuste třeba tohle:
LIST <adresář> FILES LFORMAT „soubor %s má délku %l!“
To je pro dnešek vše - na závěr ještě jedna rada: pokuste se sehnat si prográmek
jménem „KingCon“ umožňuje pohodlnější práci s okny Shellu. Pilně experimentujte,
a příště se podíváme na příkazy AmigaDOSu blíže. 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
|