A fájlrendszert kezelő parancsok

Az 5.ábra illusztrálja a UNIX fájlrendszerének felépítését. Látszik, hogy az egész struktúra leginkább egy fejjel lefele fordított fára emlékeztet. A fa gyökerének szerepét betöltő katalógust root directory-nak, azaz gyökérkatalógusnak nevezik, s ebből ágaznak el a további katalógusok, azokon belül további alkatalógusok és így tovább. A fa leveleinek pedig a katalógusokban található fájlok felelnek meg, ezekből nem ágaznak tovább katalógusok. Minden UNIX fájlrendszer a fentieknek megfelelően épül fel, eltérések csak a katalógusnevekben és a katalógusok tartalmában jelentkeznek.

A fájlrendszer kitüntetett pontjai

A UNIX fájlrendszerében három kitüntetett pont létezik az egyes felhasználók számára: a fájlrendszer kezdőpontja, ahonnan az egész állományrendszer felépül (gyökérkatalógus, root directory); az egyes felhasználókhoz tartozó kiindulási pont, ahonnan kezdve ő helyezheti el saját állományait (kiindulási katalógus, vagy alapkatalógus, home directory); végül az a pont, ahol a felhasználó éppen tartózkodik az állományrendszerben (aktuális katalógus vagy másnéven munkakatalógus, current directory).

Hol vagyunk? A pwd parancs

A fájlrendszerrel való ismerkedést a pwd (print working directory) nevű paranccsal kezdjük. E parancsot meghívva az aktuális katalógus neve íródik ki a képernyőre.

 

$ pwd

/users/demo

$

A fenti kiírásban a UNIX állományrendszerének hierarchikus felépítése tükröződik, s a következőképpen kell értelmezni: a gyökérkatalógus alatt elhelyezkedő users katalógus demo nevű alkatalógusában tartózkodunk. A pwd eredményében látható / jel kettős szerepet tölt be: egyfelől jelöli az állományrendszer kezdőpontját, azaz a gyökérkatalógust, másfelől az egyes katalógusszintek elválasztójeleként is funkcionál. (A DOS-hoz szokott olvasót figyelmeztetjük, hogy noha az állományrendszer koncepciója és a jelölésmód erős hasonlóságot mutat, itt nem a DOS alatt megszokott \ (backslash) karaktert kell használni a katalógusszintek elválasztására.)

Mit láthatunk? Az ls parancs

Ha már tudjuk, hogy hol tartózkodunk az állományrendszerben, valószínűleg azt is szeretnénk megtudni, milyen fájlok találhatóak az egyes katalógusokban. A katalógusok tartalmát az ls (list) paranccsal listázhatjuk ki. Ha semmi mást nem mondunk, az aktuális katalógusban lévő fájlok nevét listázza ki, ábécésorrendben:

$ ls

FULL-INDEX text

$

Ha az ls parancsnak argumentumai is vannak, akkor két eset lehetséges: ha az argumentum egy közönséges fájl neve volt, akkor az adott fájlra vonatkozó információkat írja ki az ls parancs, ha viszont az argumentum egy katalógusfájl neve volt, akkor az ebben a katalógusban szereplő összes fájl adatait. Mivel az ls parancsnak is megadhatunk több parancs argumentumot, ezek lehetnek vegyesen fájl és katalógusnevek, az ls mindegyiket a neki megfelelő módon fogja kezelni.

Ha a -l opciót is kiadjuk, részletesebb információt is kapunk a fájlokról:

$ ls -l

total 354

-rw-rw-rw- 1 demo guest 166262 Aug 23 20:29 FULL-INDEX

-rw-rw-rw- 1 demo guest 19 Aug 23 20:23 text

$

Nemsokára részletesebben is visszatérünk a fentebb látható kiírás értelmezésére, most csak dióhéjban: a legelső sor (total ...) azt adja meg, hogy a kilistázott katalógusban lévő fájlok összesen hány blokknyi helyet foglalnak el a lemezen (egy blokk általában 512 karakter, azaz fél kilobájt).

A többi sorban az első oszlop a hozzáférési jogokat mutatja, azaz azt, hogy kinek milyen joga van az adott fájllal kapcsolatban (írhatja, olvashatja, végrehajthatja-e); a következő oszlopban álló szám az úgynevezett láncszám (link count): ez mutatja meg, hogy egy adott fájlra hány különböző néven (link) lehet hivatkozni; aztán az állomány tulajdonosának és csoportjának neve következik, majd a fájl mérete bájtokban, aztán az utolsó módosítás ideje, s legvégül a fájl neve.

Az ls számos opciója közül most csak a leggyakrabban használtakat emeljük ki. Ha a fájlokat nem ábécésorrendben, hanem időrendben (a legutolsó módosítás ideje szerint) szeretnénk kilistázni, akkor a -t opciót kell megadni; ha fordított sorrendű rendezést kívánunk, akkor a -r opciót. A -R opció hatására az ls parancs rekurzív módon a megadott katalógusnév alatti teljes fájlstruktúrát kilistázza, nem csak a megnevezett katalógusban szereplő fájlokat. Az opciók persze kombinálhatóak is, így például ls -lrt fordított idősorrendben hosszú listázást ad, a legrégebbi fájlokat sorolva fel elsőként, a legfrissebbeket utoljára.

Hová jutunk? A cd parancs

Az állományrendszerben való mozgásra a cd (change directory) parancs szolgál. Paraméterként a megcélzott katalógus nevét kell megadni, ami történhet mind abszolút (teljes) elérési út (absolute pathname), mind relatív elérési út (relative pathname) megadásával.

Abszolút megadás esetén a keresett katalógus teljes elérési útvonalát meg kell adnunk, a gyökérkatalógustól kezdve, s minden alkatalógust fel kell sorolni, amelyeken keresztül a célhoz jutunk. Ebben az esetben a cd parancs paramétere a / karakterrel kell hogy kezdődjön, a cd parancs erről ismeri fel, hogy abszolút elérési útról van szó.

Relatív címzés esetén azt mondjuk csak meg, hogy pillanatnyi tartózkodási helyünkhöz, tehát az aktuális katalógushoz képest hol helyezkedik el a megcélzott katalógus, ilyenkor a cd parancs paramétere nem kezdődhet a / karakterrel. Nézzünk egy példát mindezekre! Tegyük fel, hogy /usr/users/janos katalógusban vagyunk, amely alatt található egy src nevű alkatalógus. Hogy ide eljussunk, kiadhatjuk a cd /usr/users/janos/src parancsot, de ezzel egyenértékű lenne a cd src parancs is.

Minden olyan esetben, amikor egy katalógust vagy fájlt meg kell nevezni, e kétfajta kijelölési mód egyformán használható.

Ha a cd parancsot argumentum nélkül hívjuk meg, akkor a kiindulási katalógusunkba helyez el minket. Ez igen hasznos lehet akkor, ha az állományrendszer egy távoli, sok szinttel odébb lévő pontjáról szeretnénk "hazajutni".

A fájlrendszeren belüli mozgáshoz még két további jelölés is használható: a . (pont) karakterrel az aktuális katalógusra hivatkozhatunk, míg a .. karakterekkel a szülő katalógusra. Ezek a jelölések tetszőlegesen kombinálhatóak is. A fentiekre nézzünk egy példát:

$ pwd

/users/demo

$ cd ..

$ pwd

/users

$ cd ..

$ pwd

/

$ cd ..

$ pwd

/

$ cd users

$ cd demo

$ pwd

/users/demo

$ cd /

$ cd /users/demo

$ pwd

/users/demo

$ cd /etc

$ pwd

/etc

$ cd

$ pwd

/users/demo

$

Minek nevezzelek? Névkonvenciók

A UNIX állományok és katalógusok nevére vonatkozólag viszonylag laza és kötetlen szabályok vonatkoznak, legalábbis ha a DOS alatt megszokott szigorú 8+3 karakteres névadási megkötésre gondolunk. A UNIX-ban a legfontosabb megkötés az, hogy a fájlnév hossza maximum 14 karakter lehet, de a legtöbb korszerű UNIX fájlrendszernél ez az érték opcionálisan 255 karakterre is állítható. E hosszon belül a fájlnév tetszőleges tagolású lehet; akárcsak a DOS alatt, itt is a . (pont) karakter szolgál szeparátorkarakterként, de ellentétben a DOS-sal, egy fájlnév tetszőleges számú, ponttal leválasztott utótagot tartalmazhat, s legális fájlnév az is, ami egyáltalán nem tartalmaz előtagot, tehát rögtön a pont karakterrel kezdődik. Az alábbiak tehát mind érvényes UNIX állománynevek:

 

alma, alma.korte, alma.korte.gyumolcs, .alma, .alma.23

A fájlnevekben elvileg az ASCII kódkészlet alsó 128 karakterkészlete szabadon használható, mindazonáltal célszerű kerülni azokat a karaktereket, amelyek a shell számára speciális jelentést hordoznak, mert ezek beírása sok gondot okozhat. Tipikusan ezek közé a karakterek közé tartozik: *?@#$!& és a név elején álló '-' jel.. Célszerű tehát az angol ábécé alfanumerikus karaktereire, valamint az aláhúzás és mínusz karakterre korlátozni választásunkat.

Nem szabad azonban megfeledkeznünk arról, hogy a UNIX parancsértelmezők esetérzékenyek (case sensitive), azaz különbséget tesznek a nagy- és kisbetűk között. UNIX alatt tehát igenis nem azonos a valami, Valami és a VALAMI fájl!

 

Rejtett fájlok

Azokat a fájlokat, amelyeknek a neve a pont karakterrel kezdődik, a UNIX kicsit másképpen kezeli, mint a többit. E fájlok az úgynevezett rejtett fájlok (hidden file), s a katalógusok listázásánál ezek neve nem jelenik meg, csak explicit kérésre. Ennek az az oka, hogy a rejtett fájlok általában adminisztrációs és konfigurációs információkat tartalmaznak, melyek egy-egy felhasználó kiindulási katalógusában kell hogy elhelyezkedjenek, ugyanakkor nem célszerű, ha ezek a felhasználó saját anyagaival keverednek. (Ilyen fájlok például a .login, .cshrc, .profile, .logout, amelyek a felhasználó bejelentkezési környezetét állítják be, vagy a .mailrc, .exrc, stb, amelyek egy-egy program indulási konfigurálását végzik.) Az ls parancs például alapértelmezés szerint nem jeleníti meg a pont karakterrel kezdődő nevű rejtett fájlokat. Ha ezekre is kíváncsiak vagyunk, az erre vonatkozó információt a -a opcióval "csalhatjuk elő":

$ ls -al

total 370

drwxr-xr-x 2 demo users 1024 Aug 23 20:29 .

drwxr-xr-x 43 root sys 1024 Aug 17 09:40 ..

-rw-r--r-- 1 demo users 818 Aug 13 1992 .cshrc

-rw-r--r-- 1 demo users 347 Aug 13 1992 .exrc

-rw-r--r-- 1 demo users 377 Aug 13 1992 .login

-rw-r--r-- 1 demo users 382 Aug 13 1992 .profile

-rw------- 1 demo guest 1370 Aug 23 20:29 .sh_history

-rw-rw-rw- 1 demo guest 166262 Aug 23 20:29 FULL-INDEX

-rw-rw-rw- 1 demo guest 19 Aug 23 20:23 text

$

Katalógusok létrehozása: a mkdir parancs

Új katalógusokat a mkdir (make directory) paranccsal hozhatunk létre. Egyszerre több katalógusnevet is megadhatunk, a rendszer mindegyiket létrehozza. Ha a létrehozandó katalógus egy olyan katalógus alatt helyezkedne el, amely maga sem létezik, akkor a katalógus létrehozása sikertelen lesz. Ebben az esetben a -p opcióval érdemes kiadni a mkdir parancsot; ennek hatására a az összes szükséges szülő katalógust létrehozza a rendszer.

$ mkdir newdir/new1dir

mkdir: cannot access newdir: No such file or directory

$ mkdir -p newdir/new1dir

$ ls -laR newdir

total 6

drwxrwxrwx 3 demo guest 1024 Aug 23 20:41 .

drwxr-xr-x 3 demo users 1024 Aug 23 20:41 ..

drwxrwxrwx 2 demo guest 24 Aug 23 20:41 new1dir

newdir/new1dir:

total 4

drwxrwxrwx 2 demo guest 24 Aug 23 20:41 .

drwxrwxrwx 3 demo guest 1024 Aug 23 20:41 ..

$

Katalógusok törlése: az rmdir parancs

Már létező katalógust az rmdir (remove directory) paranccsal törölhetünk. (Most is megadhatunk több paramétert.) Fontos megjegyezni, hogy e paranccsal csak üres katalógust törölhetünk, ha a katalógusban fájlok vannak, a UNIX nem hagyja a katalógus törlését, előbb törölni kell a fájlokat. (Másik megoldás az rm -r parancs használata, lásd később.)

 

Tartalomjegyzék