AmigaDOS
Az AmigaDOS az AmigaOS lemez- és I/O kezelő alrendszerének a neve. Bár külön névvel illetjük, szerves részét képezi a rendszernek. Fizikailag az AmigaDOS a Kickstartban helyezkedik el, a dos.library nevű függvénykönyvtárban. Az AmigaDOS külső fejlesztés volt, a Commodore utólag vásárolta meg és integrálta a rendszerbe, miután az eredeti lemezes alrendszer fejlesztése jelentős késéseket szenvedett. Az AmigaDOS-t eredetileg BCPL nyelven írták, míg a rendszer többi része C és M68K assembly nyelven készült. Bár a jelenlegi változatot már újraimplementálták C nyelven, a BCPL hatásának nyomai ma is megtalálhatók az AmigaOS API-ban. A MorphOS és az AROS egy, az AmigaDOS-sal API kompatibilis lemezkezelő alrendszert tartalmaz.
Általános ismertető
Az AmigaDOS érdekes keveréke a CP/M és a Unix rendszereknek. Bár a rendszer a CP/M-hez hasonlóan meghajtókat kezel, ezeknek nem betűjelük, hanem több karakterből alló nevük van, amelyeket tetszés szerint változtathatunk. Például az első floppymeghajtó hagyományos elnevezése DF0:, míg az első CD-meghajtóé általában CD0:. A rendszer nem case-sensitive. Viszont igen erősen a Unixra hasonlít pl. a fájlattribútumok felépítése, vagy az, hogy a kiterjesztések csak jelképes szerepűek, nincs jelentőségük pl. annak megállapításában hogy egy állomány futtatható-e. Az AmigaDOS kezel soft- vagy másnéven symlinkeket és hardlinkeket is. Eszközöket a Unixhoz hasonlóan futási időben csatolhatunk le és fel, tetszőleges fájlrendszer használatával. Az RDB-nek köszönhetően a merevlemezeinken is rugalmasan variálhatjuk a fájlrendszereket. A Commodore eleinte OFS, később FFS filerendszerrel szállította az AmigaOS-t. Ezek a filerendszerek maximum 32 karakteres fájlneveket engedtek meg, bár az elméleti korlát 107 karakter. Az AmigaOS-en ma használt filerendszerek mint pl. az FFS2, a PFS3 és az SFS már képesek kezelni a 32 karakternél hosszabb neveket is. Az rendszer legnagyobb korlátja, hogy maximálisan 2GB-os fájlok kezelését engedi meg. Az ennél nagyobb fájlok kezeléséhez szükséges új API még nem készült el, bár valamennyi Amiga-eredetű rendszer készítői dolgoznak rajta.
A shell
A shellt legegyszerűbben úgy érhetjük el, ha a Workbench menü Execute command... almenüjében kiadjuk a newshell parancsot. Ekkor megjelenik egy shell ablak, amely használatra kész. A prompt alapértelmezésben az éppen használatban lévő meghajtó volume nevét, és az éppen használt könyvtár elérési útját jeleníti meg. Nagyjából igy fest:
Ram Disk:>
- Tipp: MorphOS alatt használhatjuk a Right-Command - N billentyűkombinációt is a shell indításához.
- Tipp: A newshell helyett a newcli parancsot is használhatjuk (CLI).
Alapvető műveletek
Meghajtót úgy válthatunk, ha kiadjuk a meghajtó nevét, mint parancsot. Használhatjuk a volume és a device nevét is mint parancsot. A különbség, hogy pl. floppylemez esetén a device neve mindíg állandó (DF0) míg a volume név az éppen a meghajtóban lévő lemez nevét jelenti. Tehát, ha berakjuk a floppyba mondjuk az Install nevű lemezt, kétféleképpen is átléphetünk rá. A prompt viszont mindig a volume nevet fogja megjeleníteni. Például:
Ram Disk:> Install: Install:> Ram: Ram Disk:> DF0: Install:> System: System:>
Zseniális. A könyvtárakba is hasonló módszerrel léphetünk be. Vagyis, bár létezik cd parancs, könyvtárváltáshoz, azt nem minden esetben szükséges kiadni. A parent directory jele a /, mig az adott meghajtó gyökérkönyvtárát : jelöli. Amennyiben van olyan parancsnév, amilyen könyvtárba be szeretnénk lépni, tegyünk a könyvtárnév végére egy / jelet, így a kiadott parancs biztosan a könyvtárra fog vonatkozni. Vagy ilyen esetben használhatjuk a cd parancsot. A könyvtárváltást összevonhatjuk a meghajtóváltással. Néhány példa:
System:> Devs System:Devs> Monitors System:Devs/Monitors> / System:Devs> :Storage/DOSDrivers System:Storage/DOSDrivers> : System:> Work:Develop/Demo/Breakpoint2006 Work:Develop/Demo/BreakPoint2006> // Work:Develop> System: System:>
- Tipp: A shell alapból tartalmaz history funkciót, azaz megjegyzi korábban kiadott parancsainkat. Ezek között a fel-le gombok lenyomásával "válogathatunk".
Hozzunk létre könyvtárat. Ezt a makedir paranccsal tehetjük meg. Az állományok és a könyvtárak, sőt, a meghajtók nevében is szerepelhet szóköz. Ekkor tegyük az adott nevet idézőjelbe, így a rendszer egy paraméterként fogja kezelni. Viszont könyvtárak esetében ekkor mindenképpen használni kell a cd parancsot. Például:
System:> makedir "Napos Csibe" System:> "Napos Csibe" object not found System:> cd "Napos Csibe" System:Napos Csibe> / System:>
Könyvtárat és állományt egyaránt a delete paranccsal törölhetünk.
System:> delete "Napos Csibe" Napos Csibe Deleted System:>
Fájlok kilistázására két parancs létezik, a dir valamint a list egyelőre elég annyit tudni róluk, hogy a dir parancs egy rövid, csak neveket felsoroló listát, míg a list parancs egy részletesebb listát ad.
System:> Ram: Ram Disk:> dir T (dir) Clipboards (dir) ENV (dir) disk.info Ram Disk:> list T Dir ----rwed Tuesday 22:25:12 Clipboards Dir ----rwed Tuesday 22:25:07 ENV Dir ----rwed Tuesday 22:25:23 disk.info 1648 ----rw-d 17-May-02 12:14:32 1 file - 3 directories - 262 blocks used Ram Disk:>
A shellben a joker karakter a ?. Ha elétesszük egy #-t az azt jelenti, hogy az adott karakter helyén ismeretlen számú karakter van. A joker karaktert többször is alkalmazhatjuk. Például:
Ram Disk:> dir disk#? disk.info Ram Disk:> dir c?ipbo#? Ram Disk:Clipboards (dir) Ram Disk:>
És most néhány fejlettebb trükk. Adott mintát tartalmazó fájlok listázásának tiltása, a ~ (tilde) karakter használatával. A példa nem listázza az .info kiterjesztésű állományokat, egyébként mindent.
Ram Disk:> dir ~(#?.info) Ram Disk:T (dir) Ram Disk:Clipboards (dir) Ram Disk:ENV (dir) Ram Disk:>
Minták kombinálása. Kilistázza a .pas és a .c végű fájlokat. Nem csak kettő, hanem több minta is kombinálható.
Ram Disk:> dir Work:Develop/HelloWorld/#?.(pas|c) example.c first.c first.pas hello.c hello.pas Ram Disk:>
A dir és a list parancs további lehetőségeket is rejt, amelyről bővebben itt olvashatsz.
Az assignok
Az assign rendszer talán az AmigaDOS legjellegzetesebb, legegyedibb funkciója. Hasonló persze sok más rendszerben van - vagyis hogy virtuális hivatkozást készíthetünk egy fizikai kötet vagy meghajtó egy könyvtárára, külön "meghajtónevet" adva neki, de egyetlen más rendszerben sem annyira megkerülhetetlen ez, mint az AmigaDOS-ban. A rendszer ugyanis alapértelmezetten is létrehoz jónéhány assignt, például a SYS: nevű assign a mindenkori bootparticióra mutat. A C: assign minden esetben a SYS:C/ könyvtárra mutat, ahol a rendszer alapvető parancsai találhatók. A LIBS: assign, pedig a SYS:Libs/-re mutat alapértelmezetten - az AmigaOS itt fogja keresni a különböző külső függvénykönyvtárakat, library-kat. Ezen kívül van néhány további alapértelmezett assign is, például az L:, S:, ENVARC: vagy a DEVS:, ezekről később lesz szó.
Többszörös assignok
Az eddigiek persze bármely rendszerben megvannak - akár symlink, akár meghajtó-hozzárendelés formájában - az AmigaDOS-on az igazi csavart a történetben a többszörös assignok jelentik. Vagyis, egyetlen assign-névhez több könyvtárat is hozzárendelhetünk! Ha egy assign-hoz több könyvtárt rendeltünk hozzá, akkor arra a következő szabályok érvényesek:
- minden fájl listázási, írási és törlési művelet a legelőször assignolt könyvtárban fog megtörténni
- minden fájl megnyitási és olvasási művelet érinti a további könyvtárakat is
Hogy ez miért jó? Nos, tételezzük fel, hogy letöltöttünk például egy külső függvénykönyvtárat, amelyet ahhoz, hogy az azt használó programok is megtaláljanak, a LIBS:-be kellene bemásolnunk. Könnyen belátható, hogy aktívan használt rendszeren a LIBS: elég hamar megtellik különféle - ki tudja honnan származó - #?.library állományokkal. Ezt elkerülhetjük, ha létrehozunk egy további könyvtárat (például: SYS:MyLibs/), és ezt a könyvtárat hozzáadjuk a LIBS: assignhoz. Ezekután a rendszer az ebbe a könyvtárba másolt #?.library állományokat éppen úgy meg fogja találni, mintha az alapértelmezett SYS:Libs/ alatt lennének. Ez a módszer segít elkerülni a rendszer- és a saját beszerzésű függvénykönyvtárak keveredését, és emellett jó példa a többszörös assignokra is. Könnyen belátható, hogy a módszer sok más esetben is hasznos lehet (például egyes könyvtárak ideiglenes hozzáadása assignokhoz - elkerülendő a másolgatást), stb.
Műveletek assignokkal
Az assignok használata igen egyszerű, az assign parancs segítségével. A példában a KACSA: nevű assignt hozzuk létre, amely a Ram Disk:-re mutat:
Ram Disk:> SYS: System:> assign KACSA: "Ram Disk:" System:> dir KACSA: Ram Disk:T (dir) Ram Disk:Clipboards (dir) Ram Disk:ENV (dir) System:>
TODO
Ötletek haladóknak
TODO
TODO: további parancskészlet, assignok, attribútumok, scriptek, stb.
FIXME