AMIGA REVIEW obsah časopisu online!
  Domov     Software     Hry     Obaly     Download  

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

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 )