AmigaDOS III.Jan Hlavatý
V tomto díle našeho seriálku o AmigaDOSu se začneme probírat seznamem příkazů
AmigaDOSu. Po jménu příkazu je uveden seznam argumentů. Popisu některých příkazů
možná nebudete moc rozumět, ale nebojte - budeme se jim věnovat později, až
budete mít po ruce kompletní přehled příkazů, protože tak se vám bude lépe
experimentovat. Nejprve několik poznámek ke kontextu ve kterém příkazy CLI
používáme. Okolí každého procesu Shell tvoří kromě vstupně-výstupního okna (nebo
souboru) také lokální proměnné (viditelné a použitelné pouze v tomto procesu
Shellu), globální proměnné (viditelné v každém procesu Shellu, ukládají se do
ENV:), seznam aliasů (viz příkaz ALIAS) a seznam adresářů k prohledávání (viz
příkaz PATH). Proměnné se ukládají jako řetězce znaků, podobně jako v ARexxu.
Toto okolí (kromě globálních proměnných a PATH, které jsou globální) je
individuální pro každý proces Shellu a přenáší (dědí) se do každého nového
procesu Shellu který byl spuštěn z daného Shellu příkazem NEWSHELL. Úplně prvním
procesem Shellu je ten, který vykonává dávkový soubor „Startup-sequence“ při
bootování systému. Lokální proměnné nastavené v startup-sequenci budou tedy
děděny do všech ostatních Shellů z něj spuštěných. Lokální a globální proměnné
lze vkládat do textu příkazů pomocí znaku $, za kterým následuje jméno proměnné
buď samotné nebo ve složených závorkách. Nahrazení probíhá na textové úrovni,
mezi načtením a vykonáním příkazu. Lokální proměnné mají vždy přednost před
globálními, jejich jména se řídí stejnými pravidly jako jména souborů.
Každý příkaz po svém spuštění vrací procesu Shellu číselný návratový kód,
indikující míru úspěšnosti provedení příkazu, případně je použit k jiným účelům.
Standardní návratové kódy jsou:
0 - vše proběhlo úspěšně
5 - (WARN) varování - nepříliš závažné
10 - (ERROR) chyba
20 - (FAIL) naprosté selhání
Návratový kód je uložen v lokální proměnné RC. Dodatečný kód blíže specifikující
příčinu chyby je uložen v druhé lokální proměnné Result2. Tyto proměnné jsou
platné pouze těsně po ukončení příkazu, tj. následující příkaz je přepíše.
Většina příkazů vyžadujících jméno souboru podporuje patterny. ADDBUFFERS
DRIVE/A, BUFFERS/N
Zvětší počet vyrovnávacích pamětí (bufferů) přidělených danému diskovému
zařízení (DRIVE) o počet uvedený v argumentu BUFFERS. Je-li uvedena záporná
hodnota, počet bufferů se zmenší. Normální hodnota je 5 bufferů pro disketu
(DF0:) a 30 bufferů pro harddisk. ADDDATATYPES
FILES/M, QUIET/S, REFRESH/S
Tento příkaz je součástí podpory datatypů (datatypes.library). Pomocí tohoto
příkazu se přidávají nové datatypy nebo obnovuje seznam datatypů, který si vede
datatypes.library. FILES je seznam nových datatypů (jedná se o definiční IFF
soubory které jsou normálně uloženy v DEVS:Datatypes, nikoli programové knihovny
v SYS:Classes/Datatypes). REFRESH switch nařídí znovu prohledat adresář
DEVS:Datatypes a obnovit databázi datatypů podle jeho aktuálního stavu (to se
hodí pokud jste zrovna přidali nový datatyp - datatypy jsou totiž normálně
načítány jen jednou při prvním použití datatypes.library). ALIAS
NAME, STRING/F
Tento příkaz umožňuje vytváření zkratek pro příkazy. Nadefinujete klíčové slovo
a k němu přiřadíte řetězec znaků. Kdykoliv pak uvedete jako příkaz toto klíčové
slovo, je to jako byste napsali celý řetězec který je tomuto klíčovému slovu
přiřazen. Bez argumentů provede výpis všech aliasů definovaných pro tento proces
Shellu.
Příklad: alias cls echo „*Ec“ NOLINE
vytvoří alias se jménem CLS, který vypíše řídící kód pro smazání obrazovky.
Kdykoliv napíšete CLS, okno Shellu se vám vyčistí. ASK
PROMPT/A
Jeden z příkazů podporujících scripty. Umožňuje zeptat se uživatele na
jednoduchou odpověď ANO/NE. Argument PROMPT obsahuje text dotazu. Uživatel na
dotaz odpovídá buď Y (ano) nebo N (ne). V závislosti na odpovědi je nastaven
návratový kód RC na 5 v případě kladné odpovědi (Y), nebo 0 v případě odpovědi
záporné. Návratový kód může být posléze zpracován např. příkazem IF na větvení
skriptu. Této problematice se budeme věnovat později. ASSIGN
NAME, TARGET/M, LIST/S, EXISTS/S, DISMOUNT/S, DEFER/S, PATH/S, ADD/S,
REMOVE/S, VOLS/S, DIRS/S, DEVICES/S
Tento důležitý příkaz se stará o správu tzv. „assignů“ -jejich přidávání,
rušení, testování existence a vypisování. Navíc umožňuje testovat existenci
médií (volumes) a zařízení (devices) a vypisovat je. Assigny jsme se už zabývali
v předminulém díle, pokud stále netušíte o co jde, přečtěte si znovu... Takže:
Samotný příkaz ASSIGN bez argumentů nebo s argumentem LIST vypíše kompletní
seznam všech volumes, assignů a devices v systému. Pokud chcete vypsat jen
některou z těchto tří skupin objektů, přidejte klíčové slovo VOLS, DIRS nebo
DEVICES pro výpis volumes, assignů nebo devices. Jako argument NAME je vždy
uváděno jméno zařízení, volume nebo device, včetně dvojtečky nu konci. Pokud
jako NAME uvedete jméno už existujícího assignu a neuvedete žádné jméno adresáře
(TARGET), bude tento assign zrušen. Zrušeny budou všechny složky tohoto assignu
- pro odstraňování použijte REMOVE: Uvedete kromě jména assignu i jméno adresáře
který byl uveden při vytváření této složky a klíčové slovo REMOVE. Vícesložkový
assign vytvoříte uvedením více argumentů TARGET. Pro vytváření dalších složek
existujícího assignu specifikujte klíčové slovo ADD, stejné jméno assignu jako u
ostatních složek, a specifický adresář který chcete přidat. Klíčová slova DEFER
a PATH modifikují typ assignu na zpožděný (skutečně vytvářený až při prvním
přístupu na něj) a nestálý (vyhodnocovaný pokaždé znovu při každém přístupu na
něj) - viz naše povídání o assignech. Bohužel není možné kombinovat vícenásobné
assigny s těmito speciálními druhy assignů. Další funkcí příkazu ASSIGN je
testování existence daného volume, objektu nebo device. Kromě jména testovaného
objektu uvedete klíčové slovo EXISTS. Pokud existuje, je vypsán. Pokud
neexistuje, je návratový kód nastaven na WARN (5) a může být použit k větvení
scriptu. Poslední, zřídka používanou funkcí je DISMOUNT. Ta odstraní zařízení
nebo volume ze seznamu DOSu - nikoliv však z paměti. Pomocí této funkce můžete
například odstranit disketovou mechaniku (DF0:) a jako DF0: podstrčit assign
vedoucí na harddisk... AVAIL
CHIP/S, FAST/S, TOTAL/S, FLUSH/S
Tento příkaz vypisuje informace o volné paměti: chip, fant nebo obou dohromady.
Pokud neuvedete žádné argumenty, vypíše tabulku kde pro každou tuto položku
vypisuje celkovou velikost volné paměti, velikost použité paměti, maximální
(celkovou) velikost paměti přítomnou v systému a velikost největšího souvislého
bloku paměti daného typu. Pokud uvedete jeden z argumentů CHIP, FAST nebo TOTAL,
vypíše příkaz jednoduše číslo reprezentující velikost volné paměti daného typu
(chip, fant nebo obou dohromady). Toto číslo se při chytrém použití může využít
např. k rozvětvení startup-sequence na dvě větve - jednu při zapnuté a druhou
při vypnuté turbokartě. Poslední argument, FLUSH, má souvislost s novou správou
paměti jednou použité (načtené) knihovny zůstávají v paměti i dále, když už
nejsou potřebné, pro případ že by byly potřeba vzápětí znovu. Z paměti jsou
uvolněny teprve když nastane akutní nedostatek paměti. Příkazem AVAIL FLUSH
můžete tyto nepotřebné knihovny z paměti odstranit. BREAK
PROCESS/A/N, ALL/S, C/S, D/S, E/S, F/S
Každý proces AmigaDOSu je schopen přijmout čtyři speciální signály. Tyto signály
(v multitaskingovém prostředí) umožňují například čekat na nějakou událost bez
spotřeby výkonu procesoru. Tyto signály bývají využívány k různým věcem -
nejčastější je využití signálu C pro přerušení běhu programu. Pokud byl program
spuštěn z okna Shellu, je možné mu tyto signály vyslat stiskem CTRL+C, CTRL+D,
CTRL+E a CTRL+F (odtud názvy signálů). Pokud však program svoje okno Shellu nemá
nebo je toto zavřené, jedinou možností jak takovému programu poslat signál je
právě použití příkazu BREAK. K tomu potřebujete znát číslo procesu AmigaDOSu
kterému chcete signál poslat. Dva různé procesy nemají nikdy stejné číslo. Toto
číslo je vidět například standardně v promytu okna Shellu, taktéž se vypisuje
při vytvoření nového okna pomocí příkazu NEWSHELL. Vypsat procesy Shellu s
jejich čísly si můžete příkazem STATUS, který bude popsán později. Příkaz BREAK
jen s číslem procesu vyšle implicitně signál C. Jiný signál lze vyslat přidáním
D, E nebo F. ALL vyšle všechny signály najednou. CD
DIR
Tento příkaz umožňuje změnit nebo vypsat implicitní adresář (current directory)
daného procesu Shellu. Bez argumentů vypisuje, se jménem adresáře mění. Tímto
příkazem jsme se už podrobně zabývali v předcházejících částech. CHANGETASKPRI
PRI=PRIORITY/A/N, PROCESS/K/N
Tento příkaz umožňuje změnit prioritu procesu Shellu, a tím i ovlivnit
přidělování výkonu procesoru jednotlivým procesům. Obecně platí, že nejvíc
výkonu procesoru má proces s nejvyšší prioritou, v okamžicích kdy na něco čeká
(např. na zápis na disk) přichází ke slovu procesy s menší prioritou. Procesy se
stejnou prioritou si přidělený výkon procesoru rozdělují rovným dílem. Normálně
mají všechny procesy prioritu 0. Ideální priorita pro daný program závisí na
druhu jeho činnosti: Pokud stále na něco čeká, ale odezva na ukončení čekání
musí být rychlá (například textový editor, který stále jen čeká až ta zoufale
pomalá lidská bytost konečně zmáčkne další klávesu), měl by mít prioritu vyšší
(např. 1). Pokud naopak program provádí masivní výpočty během kterých neprovádí
nic jiného a na nic nečeká (např. při pakování velkého množství dat archivačním
programem), měl by mít prioritu menší (-1), jinak by blokoval ostatní programy,
které potřebují rychlou odezvu. Argumentem CHANGETASKPRI je vždy hodnota
priority. Ta by neměla být nikdy větší než nějaké 4, jinak budete blokovat
některé části systému (například filesystém harddisku), které mají obvykle
prioritu kolem 10. Pokud uvedete jen prioritu, změní se priorita procesu Shellu
ve kterém jste tento příkaz zadali. Pokud k prioritě uvedete ještě klíčové slovo
PROCESS a za ním číslo procesu Shellu, můžete změnit prioritu kteréhokoliv
jiného procesu. Pokud se vám například program zacyklí a blokuje vám ostatní
procesy, nastavíte jeho prioritu na -128 a můžete začít zachraňovat. COPY
FROM/M, TO/A, ALL/S, QUIET/S, BUF=BUFFER/K/N, CLONE/S, DATES/S, NOPRO/S,
COM/S, NOREQ/S
Tento základní příkaz, umožňuje kopírování souborů nebo adresářů. FROM je seznam
kopírovaných objektů, TO je cílový adresář (nebo soubor v případě kopírování
jednoho souboru a neexistence cílového adresáře s tímto jménem). Spolu se
samotným obsahem souboru lze kopírovat i jeho ostatní atributy, jako je datum
vytvoření, ochranné příznaky a komentář. Klíčové slovo CLONE aktivuje kopírování
všech těchto vedlejších atributů souboru. Toto kopírování je možné ovlivňovat
také jednotlivě - DATES zapíná kopírování datumu, COM zapíná kopírování
komentáře, NOPRO vypíná kopírování ochranných atributů souboru. Argument BUFFER
udává počet bufferů použitých při kopírování (1 buffer = 512 byte paměti).
Hodnota 0 znamená takový počet bufferů, aby se do nich vešel celý soubor.
Zvětšování počtu bufferů nemá smysl při kopírování do RAM:. Volba ALL znamená,
že pokud jsou v seznamu kopírovaných souborů i adresáře, bude se kromě nich
samotných kopírovat i veškerý jejich obsah (rekurzivně, tj. i obsah adresářů v
něm obsažených atd. - vše při zachování původní struktury adresářů). Volbou
NOREQ lze potlačit případný requester který by mohl zastavit provádění skriptu
(což není žádoucí, např. když je skript zpracováván bez přítomnosti uživatele).
Protože cílový adresář/soubor musí být vždy uveden, musíte pokud chcete něco
kopírovat do implicitního adresáře tento zadat jako „„. CPU
CACHE/S, BURST/S, NOCACHE/S, NOBURST/S, DATACACHE/S, DATABURST/S,
NODATACACHE/S, NODATABURST/S, INSTCACHE/S, INSTBURST/S, NOINSTCACHE/S,
NOINSTBURST/S, COPYBACK/S, NOCOPYBACK/S, EXTERNALCACHE/S, NOEXTERNALCACHE/S,
FASTROM/S, NOFASTROM/S, TRAP/S, NOTRAP/S, NOMMUTEST/S, CHECK/K
Tímto příkazem lze nastavovat a vypisovat specifické parametry jednotlivých
procesorů MC680x0 (např. zapínat a vypínat cache), testovat přítomnost určitého
typu procesoru nebo koprocesoru, případně přesunout ROM do 32-bitové paměti
pokud máte Amigu s 16-bitovou ROM a MMU. Volba CHECK je užitečná například v
instalačních skriptech. Jako její argument můžete zadat: 68040, 68030, 68020,
68010, 68882, 68881, MMU, FPU. Jestliže daný hardware není v systému přítomen,
nastaví CPU návratový kód na WARN (5). DATE
DAY, DATE, TIME, TO=VER/K
Tímto příkazem lze nastavit nebo vypsat aktuální systémové datum a čas. Datum se
zadává ve formátu DEN-MĚSÍC-ROK, čas ve 24-hodinovém formátu jako
HODINA:MINUTA:SEKUNDA. Formát data se obecně řídí nastavením locale. Pokud datum
nebo čas změníte a chcete aby zůstal aktuální i po vypnutí počítače, musíte mít
baterií zálohované hodiny, do kterých čas uložíte příkazem SETCLOCKSAVE. DELETE
FILE/M, ALL/S, QUIET/S, FORCE/S
Tímto příkazem se mažou soubory, adresáře i linky. Pokud jste zadali jméno
adresáře který něco obsahuje, příkaz ho odmítne smazat. Volba ALL nařídí smazat
adresáře i s jejich obsahem. Volba QUIET potlačí vypisování jmen mazaných
souborů Volba FORCE slouží k násilnému smazání i těch souborů, které mají
nastaven ochranný příznak D proti smazání. U tohoto příkazu buďte obzvláště
opatrní s patterny... DIR
DIR, OPT/K, ALL/S, DIRS/S, FILES/S, INTER/S
Tento příkaz vypisuje obsahy adresářů v kompaktním formátu, kde jsou vidět jen
jména souborů a adresářů, nikoliv ostatní údaje jako je délka. Umožňuje i
speciální interaktivní procházení strukturou adresářů, které se však příliš
nepoužívá -je lepší využít pro takové věci komfortní diskový manažer.
K dispozici jsou volby: ALL - do vypisování zařadí rekurzivně i vnitřky
adresářů, DIRS - vypisuje pouze adresáře, FILES - vypisuje pouze soubory. OPT je
zde pouze kvůli kompatibilitě s archaickými verzemi AmigaDOSu. Přepínač INTER
zapíná speciální procházecí mód, kde postupně u každého vypisovaného jména
můžete zadat speciální příkaz:
E - vlézt dovnitř vypisovaného adresáře
B - o jednu úroveň adresáře nahoru
DEL, DELETE - smazat vypisovanou položku
T - vypsat obsah (jako TYPE)
C, COMMAND - za tímto následuje v uvozovkách příkaz AmigaDOSu který chcete
vykonat
Q - opustit interaktivní režim
? - vypsat nápovědu
<samotný Enter> - posunout se na další položku DISKCHANGE
DRIVE/A
Tento příkaz donutí dané diskové zařízení k opětovnému prozkoumání vloženého
média, stejně jako po vložení diskety. Používá se především pro 5,25“ disketové
mechaniky, které nemají automatickou detekci výměny média. ECHO
/M, NOLINE/S, FIRST/K/N, LEN/K/N, TO/K
Tento příkaz vypíše text zadaný mu ,jako argument. Normálně za text připojí znak
konce řádku, což lze potlačit volbou NOLINE. Pomocí FIRST a LEN lze vypsat i jen
část tohoto řetězce: Pokud definujeme pouze FIRST, vypisuje se část řetězce
počínaje FIRST-tým znakem do konce. Pokud zároveň s FIRST použijeme i LEN,
vypíše se LEN znaků počínaje FIRST-tým. Pokud specifikujeme pouze LEN, vypíše se
posledních LEN znaků. Tento příkaz je zajímavý například pro vypisování hodnot
lokálních proměnných:
echo „Můj proces má číslo ${process}!“ ELSE
Tento příkaz označuje alternativní větev podmíněného bloku - viz příkaz IF. ENDCLI
Ukončí existenci daného procesu Shellu, stejně jako Endshell. ENDIF
Označuje konec podmíněného bloku příkazu IF. ENDSHELL
Ukončí proces Shellu, stejně jako ENDCLI. ENDSKIP
Ukončuje blok příkazu SKIP. Viz SKIP. EVAL
VALUE1/A, OP, VALUE2/M, TO/K, LFORMAT/K
Tento příkaz umožňuje vypočítat jednoduché výrazy v celočíselné matematice a
vypisovat výsledky v různých číselných soustavách. VALUE1, VALUE2 jsou čísla v
desítkové, šestnáctkové (začínají 0x nebo #X) nebo osmičkové (začínají 0 nebo #)
soustavě, případně jako hodnoty ASCII (apostrof před znakem). Výslednou hodnotu
lze vypsat pomocí formátovacího řetězce, ve kterém je možné použít tyto značky:
%x výsledná hodnota v šestnáctkové soustavě, %o - hodnota v osmičkové soustavě,
%n - hodnota v desítkové soustavě, %e - hodnota jako ASCII znak. Za %x a %o musí
bezprostředně následovat desítková číslice udávající počet míst na která má být
výsledek zobrazen. Také je možno použít *N nebo *E pro zakódování znaku nového
řádku a Esc. Matematické operace podporované tímto příkazem: + sčítání, -
odčítání, * násobení, / dělení, mod modulo, & AND, | OR, ~ NOT, lsh posun vlevo,
rsh posun vpravo, - negace lunární), xor XOR, eqv lunární) logická negace. EXECUTE
FILE/A
Tímto příkazem se spouští dávkové soubory. To jsou textové soubory, ve kterých
je zapsána sekvence příkazů AmigaDOSu - vždy jeden příkaz na řádku. Uvnitř
dávkového souboru lze používat některé speciální příkazy, lze zadávat skriptům
argumenty a pod. podrobněji se tomuto příkazu budeme věnovat později, až budeme
probírat skripty. FAILAT
RCLIM/N
Tento příkaz nastavuje nejnižší hodnotu návratového kódu, při které se výsledek
předchozího příkazu považuje za FAILURE (selhání) a vykonávání dalších příkazů
se zastaví.
To je zatím vše, v příští části budeme pokračovat ve výčtu příkazů AmigaDOSu. 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
|