Sunteți pe pagina 1din 21

2

2.1

SISTEMUL DE FIIERE UNIX I COMENZI

Generaliti

Sistemul de fiiere reprezint o construcie logic ce ofer posibilitatea stocrii i regsirii informaiei ce se afl pe un dispozitiv de stocare cu acces aleator. Un sistem de fiiere este parte integrant a sistemului de operare i este format din fiiere, directoare precum i informaii necesare pentru localizarea i accesul acestora. Sistemul de fiiere UNIX ordoneaz i grupeaz din punct de vedere logic fiierele ntr-o manier eficient, prin cuprinderea acestora n directoare ce sunt asemntoare dosarelor ce conin mai multe documente. UNIX posed un sistem de fiiere ierarhic, cu o structur arborescent multi-nivel ce pleac de la directorul rdcin (root), simbolizat prin caracterul / (slash), putnd de fapt s fie suportate mai multe sisteme de fiiere simultan pe acelai disc. Fiecare disc este divizat n poriuni (partiii) ce pot gzdui un sistem de fiiere, un domeniu de swap sau un domeniu de date speciale. Directorul "root" Reprezint nivelul cel mai de sus din sistemul de fiiere i este simbolizat de caracterul "/" (slash). Nu poate exista dect un singur director root ntr-un sistem de fiiere UNIX.

n UNIX fiierele sunt interpretate sub forma unor iruri de octei; astfel, cu toate c o aplicaie face o cerere pentru un fiier cu o structur special, nucleul stocheaz acel fiier pe disc ca o simpl secven de octei, organiznd fiierele n directoare. Funcia de baz a sistemului de fiiere este aceea de a oferi servicii de fiiere aplicaiilor respective fr ca acestea s fie preocupate de structura special de stocare hardware. Un fiier reprezint un ir de octei ce aparine unui director. Conceptual, un fiier UNIX este precum un document ndosariat (dosarul este directorul din care face parte). Fiierul poate stoca informaii diverse: text, grafic, video, sunet, imagine etc. Orice fiier din sistem are un nume;

UNIX

lungimea numelor de fiiere UNIX este n general limitat la 255 de caractere. Caracterele valide sunt: orice caracter alfabetic, numeric, liniua de subliniere underscore ( _ ) i punctul (.). Nu se folosesc spaii n numele fiierelor, precum i urmtoarele caractere speciale: ! " ` ' ; / \ $ * & < > ( ) | { } [ ] ~. Directorul este un caz particular de fiier ce arat ca un cuprins de carte. El conine dou coloane de informaie - numerele inode ale fiierelor i numele fiierelor. Fiecare director conine o referin ctre el nsui (identificat prin semnul .) i ctre directorul printe (identificat prin ..). Chiar i directorul rdcin root conine o referin ctre directorul printe, care n acest caz este o referin ctre el nsui. Directoarele pot conine subdirectoare i fiiere. La rndul lor, subdirectoarele pot conine alte subdirectoare i alte fiiere. Orice sistem de operare posed o anumit modalitate de structur a directoarelor pentru organizarea informaiei pe hard-disc; n UNIX un director se numete directory, iar n Windows i MacOS un director se numete folder, avnd ns aceeai semnificaie. Chiar dac detaliile sistemului de fiiere pot diferi n funcie de tipul sistemului, urmtoarele componente sunt comune pentru majoritatea sistemelor de fiiere:
Blocul de boot Super-blocul Tabela de inoduri Aici se afl procedurile de boot Conine mrimea i starea sistemului de fiiere Informaiile inode (numrul total alocat, total liber, numerele inodurilor libere) O copie a acestuia se afl n memorie i una pe hard-disc Tipul i permisiuni Numrul de hard link-uri UID pentru proprietar GID pentru proprietar Dimensiunea n bytes Indicatorii dat i timp (creare, ultima accesare i ultima modificare) Adresele de bloc de pe disc Blocuri de date Fiiere obinuite - coninut Fiiere director nume de fiiere i numerele inodurilor

Blocurile de stocare

O caracteristic aparte a sistemului de fiiere UNIX o constituie legturile. O legtur (link) reprezint o posibilitate a unui fiier sau de

Sistemul de fiiere UNIX i comenzi

acces la acesta prin mai multe nume. O legtur este, de fapt, o intrare ntr-un director ce face redirectarea spre un fiier stocat n alt director sau chiar spre un ntreg alt director. Directorul root are o serie de subdirectoare (ce difer n funcie de implementarea UNIX), printre care cele mai importante sunt, de regul: "bin", "dev", "etc", "opt", "lib","mnt", "tmp","home" i "usr". Aceste directoare au urmtorul coninut: /bin /dev /etc /lib /mnt Comenzi UNIX Director pentru dispozitive speciale Programe i fiiere de date suplimentare Directorul bibliotecii de programe C Directorul mount; rezervat pentru montarea sistemelor de fiiere /opt Conine aa numitele software storage objects (SSO's) /tmp Director temporar /usr Conine rutine utilizator /var Fiiere obiect nepartajate /home Directorul utilizatorilor sistemului

Unele dintre directoarele UNIX sunt mai interesante dect altele; existena i coninutul acestor directoare depinde de varianta de UNIX utilizat. Nu exist practic reguli foarte stricte cu privire la localizarea fiierelor. Spre exemplu, pentru a gsi anumite fiiere sistem binare, putem cuta ntr-unul din directoarele: /bin, /usr/bin, /sbin, /usr/sbin i chiar n /etc. Fiierele binare motenite se pot gsi n /usr/ucb sau /usr/bsd. Alte fiiere executabile se pot gsi n alte locuri din structura de directoare. i legturile simbolice trebuie considerate cu atenie; directorul /home poate fi definit ca avnd propriul sistem de fiiere (montat separat) sau poate fi definit ca subdirector al rdcinii. Pe serverele Solaris, spre exemplu, el este gsit ca subdirector al directorului /export; de regul, acest director conine directoarele home ale utilizatorilor existeni n sistem. Spaiul dedicat stocrilor temporare este localizat, de regul, n directorul /tmp. Acest director poate fi accesat pe majoritatea sistemelor ca /tmp, /usr/tmp sau /var/tmp. Dou dintre cele trei referine vor fi directoare reale iar cea de-a treia va fi o legtur simbolic (symlink) ctre una din primele dou. Varianta de UNIX utilizat va influena care dintre aceste referine este legtura simbolic. Se recomand totui ca aceste directoare s

UNIX

fie reconfigurate astfel nct o singur referin s fie un director real, iar celelalte dou s fie legturi simbolice ctre acest director. Mai mult, acest director se recomand a fi montat separat. Deoarece utilizatorii pot scrie fiiere de dimensiuni mari n spaiul temporar /tmp, montarea separat asigur protecia directoarelor / i /usr fa de umplerea cu fiiere temporare. O regul general valabil n acest sens este aceea c utilizatorii nu trebuie s aib drept de creare i tergere de fiiere n locaiile / i /usr. Directorul /tmp trebuie s aib permisiuni de acces 1777, nu 777. Dreptul de acces 777 permite ca orice utilizator s aib drepturi depline n directorul /tmp, n timp ce 1777 seteaz aa-numitul sticky bit ce nseamn c directorul poate fi modificat sau ters doar de ctre proprietar. Directorul /usr poate fi montat separat sau poate fi subdirector al lui /. Subdirectoarele sale pot fi: bin fiiere binare include fiiere pentru programare lib biblioteci de programe local pachete software locale, biblioteci, fiiere include, fiiere binare (de regul /usr/local se monteaz separat pentru a nu umple directorul /usr). sbin fiiere de sistem binare share informaie partajat, inclusiv pagini de manual. Directorul /var poate fi montat separat (ceea ce este recomandat) sau poate fi subdirector al lui / sau /usr. Subdirectoarele sale pot fi: adm stocare fiiere log (Solaris) crash diagnostic n situaii de oprire brusc log stocare fiiere log (Solaris i Linux Red Hat) mail zona de stocare pentru pota electronic spool zona de spool pentru printare, utilitarul cron i alte servicii yp zona de stocare pentru fiierul de configurare NIS. 2.2 Partiii

Partiiile reprezint modalitatea de organizare a spaiului de pe disc la nivel jos. Partiiile sunt independente de sistemul de operare; un sistem de operare solid recunoate diviziunile la nivel jos de pe disc i adreseaz fiecare partiie ca pe un echipament logic separat.

Sistemul de fiiere UNIX i comenzi

Toate informaiile cu privire la partiii sunt localizate n aa-numita tabel de partiii (partition table), stocat n eticheta de disc sau n header-ul de volum (volume header) al discului fizic. Aceasta este modalitatea prin care discurile pstreaz propriile informaii referitoare la modalitatea de aranjare a datelor i de aceea ele pot fi transferate de la un calculator la altul fr riscul pierderii informaiei. De asemenea, partiiile permit existena mai multor sisteme de operare pe acelai calculator, instalate n partiii diferite. Iniial, exista o coresponden strict ntre partiii i sistemele de fiiere, partiiile fiind considerate drept containere pentru sistemele de fiiere. Acum un sistem de fiiere se poate ntinde pe mai multe partiii prin utilizarea volumelor logice, astfel nct partiiile pot fi considerate elemente de baz pentru stocarea informaiei n loc de a fi interpretate drept simple containere. Deoarece partiiile sunt diviziuni la nivel hardware ale discurilor, ele pot oferi o protecie la nivel jos mpotriva supra-ncrcrii. Utilizndu-se anumite politici de partiionare, unele dintre partiii pot fi supra-ncrcate fr a afecta performanele generale ale sistemului; n orice caz, umplerea unei partiii nu are cum s afecteze spaiul altei partiii. 2.3 Spaiul de swap Toate varietile de UNIX necesit minimum dou partiii: partiia de root (/) i partiia pentru swap. n cazul (destul de puin ntlnit n practic) n care exist doar aceste dou partiii, partiia / va conine ntregul sistem de operare, aplicaiile, fiierele de configurare, conturile locale ale utilizatorilor, etc. Spaiul de swap sau, pe scurt, swap, permite accesul direct al sistemului de operare la spaiul brut de pe disc, fr implicarea sistemului de fiiere. Swap-ul a fost construit pentru a aciona ca o extensie a memoriei principale (RAM Random Access Memory) a calculatorului, permind, prin implementarea mecanismului memoriei virtuale, accesul la o cantitate de memorie ce nu este limitat de capacitatea memoriei RAM ci de spaiul liber de pe disc. Principalele mecanisme utilizate de ctre sistemul de operare pentru a accesa spaiul de swap sunt paginarea (paging) i interschimbarea (swapping). Spaiul liniar al memoriei unui calculator este limitat iar o parte din acesta este rezervat pentru stocarea unor programe ce rmn rezidente n memorie (sistemul de operare, tabelele de paginare, etc.) pentru a fi accesate rapid cnd este nevoie de ele. De asemenea, multe procese i obiecte program nu necesit prezena permanent n memorie ca n cazul programelor rezidente. Atunci cnd sistemul de operare gsete un astfel de proces, se caut modaliti de nlocuire a lui cu altul ce trebuie executat i deci ncrcat n memorie.

UNIX

Procedeul de interschimbare sau swapping este unul dintre mecanismele utilizate de ctre sistemul de operare pentru a administra alocarea memoriei. Atunci cnd un proces este interschimbat, el este copiat din memorie n spaiul de swap mpreun cu toate datele asociate i alte informaii de stare. n acest fel, poriunea din memorie alocat procesului devine liber i poate fi utilizat pentru a stoca alt proces (program). n momentul n care este nevoie din nou de procesul aflat n swap, acesta este transferat rapid din swap n memoria principal pentru a fi executat. n esen, procedeul de swapping const n transferul unui proces din memorie n spaiul de swap i viceversa. Atunci cnd procedeul de swapping este intens utilizat nseamn c sistemul are nevoie de resurse hardware suplimentare (de regul mai mult memorie RAM). Paginarea utilizeaz, de asemenea, spaiul de swap. Spre deosebire de procedeul de interschimbare, care stocheaz mpreun cu procesul i o serie ntreag de informaii legate de starea procesului, paginarea stocheaz doar poriuni ale codului executabil al unui proces. Paginarea reprezint o metod obinuit de administrare a memoriei de ctre sistemul de operare, metod n care acesta determin n prealabil dimensiunea segmentelor de memorie (denumite pagini) ce pot fi meninute n memoria principal. Referitor la spaiul de swap, unele variante de UNIX depind mult de acest spaiu. Solaris-ul firmei Sun folosete spaiul de swap pentru directorul /tmp n mod implicit. 2.4 Tipuri de fiiere Fiiere text Fiiere de date Fiiere surs (ce conin codul surs al unor programe) Fiiere executabile Programe shell Fiiere legtur Fiiere asociate unor dispozitive a) Fiiere text Cel mai simplu tip de fiiere l constituie fiierul text, ce conine doar caractere ca acelea pe care le putei citi n cadrul acestui capitol. Aceste caractere ASCII (American Standard Code for Information Interchange) sunt literale sau caractere numerice ce reprezint manifestarea muncii pe Principalele tipuri de fiiere existente pe un sistem UNIX sunt:

Sistemul de fiiere UNIX i comenzi

care o facem. Dac utilizm, spre exemplu, un editor UNIX pentru a crea un mesaj pentru pota electronic atunci crem un fiier text n cele mai multe dintre cazuri. Avem n continuare un exemplu de fiier ASCII de pe un sistem Linux:
:.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS :.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP : : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR : : :.tar.Z:/bin/tar -c -Z -f %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS : : :.tar.gz:/bin/tar -c -z -f %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP

b) Fiiere de date Fiierele de date sunt fiierele ce conin date utilizate de diverse aplicaii de pe sistem. Dac utilizm un program de tipul FrameMaker pentru scrierea unei cri, fiierele create cu acest program vor fi de tipul suportat de acesta (la fel ca i fiierele speciale de date de pe un sistem Windows). Fiierele de date conin pe lng informaia n sine (de tip text) i informaii speciale de formatare. Acelai lucru se petrece i n cazul unui fiier baz de date, ce conine att date ce pot fi citite ct i informaii specifice formatrii respective. c) Fiiere cod surs Fiierele cod surs sunt fiiere ce conin date scrise ntr-un limbaj de programare precum C, C++, Java, Pascal, Fortran etc. Aceste fiiere au, de regul, extensii conforme cu limbajul n care au fost scrise; spre exemplu, un program surs scris n C va avea extensia .c. d) Fiiere executabile Fiierele executabile reprezint programe obinute cu ajutorul unui compilator (sau interpretor) i editor de legturi ce pot fi rulate (executate). Dac ncercm s citim un fiier executabil ca pe un fiier text, vom obine o serie de caractere ciudate i chiar sunete; n urma unei astfel de citiri se pot pierde setrile ecranului. Majoritatea comenzilor UNIX sunt programe executabile (vezi directorul /bin).

UNIX

e) Programe de tip shell Un fiier de tip shell este att un fiier text ct i un fiier ce poate fi rulat. El conine linii text ce reprezint instruciuni legate de programarea shell; de regul, prima linie din program este o linie ce ncepe cu secvena de caractere #! i precizeaz tipul de shell utilizat. De exemplu, linia:
#!/bin/sh

specific faptul c se utilizeaz shell-ul Bourne care este shell-ul clasic pentru un sistem UNIX. n general, caracterul # reprezint modalitatea de inserare a comentariilor n program; astfel, tot ce urmeaz dup # i pn la sfritul liniei este considerat comentariu. f) Fiiere de tip legtur Un fiier legtur (link) este o referin ctre un fiier stocat n alt locaie n sistem. n loc s avem dou sau mai multe copii ale unui fiier pe disc, putem crea o legtur ctre un fiier deja existent pe sistem. Un mod deosebit de utilizare a legturilor pe un sistem UNIX a fost acela legat de apariia unei noi versiuni a sistemului de operare. Cum locaiile fiierelor se modific uneori la apariia unei noi versiuni a sistemului de operare, se folosesc legturi de la locaiile vechi ctre cele noi n loc de a nva noile locaii. n momentul utilizrii unei comenzi folosind vechea locaie, legtura face referire la comanda ce acum se afl n alt loc pe disc. g) Fiiere asociate unor dispozitive Fiierele asociate unor dispozitive, denumite n UNIX device special files(sau, pe scurt, fiiere device) conin informaii legate de componente hardware ale calculatorului i sunt fiiere speciale cu referire (de regul) la funcii de administrare a sistemului. Sistemul de operare UNIX trateaz dispozitivele hardware ca fiiere, avantajul acestei metode de administrare fiind acela c permite accesul la disc precum o simpl operaie de acces (Input/Output) la un fiier. Dispozitivele instalate pe computer pot fi accesate prin intermediul unor astfel de fiiere speciale. Discul, spre exemplu, poate fi accesat fie printr-un fiier de tip bloc, fie printr-unul de tip caracter.

Sistemul de fiiere UNIX i comenzi

Semnificaia subdirectoarelor din /dev la Solaris


Tabelul 2.1 Directorul /dev/cua /dev/dsk /dev/fd /dev/kmem /dev/log /dev/mem /dev/null /dev/pts /dev/rdsk /dev/rmt /dev/swap /dev/tty /dev/zero Descriere Director pentru dispozitive seriale Director pentru dispozitive de tip bloc (hard-discuri, CD-ROM-uri, etc.) Director pentru uniti floppy Director pentru memoria virtual kernel Director socket ctre login-ul sistem Dispozitiv pentru memoria fizic Dispozitivul null Pseudo-terminale Director pentru echipamente device de tip caracter Director pentru medii de stocare movibile band magnetic Spaiul de swap Director pentru linii terminal Surs null byte

Fiierele device de tip caracter sunt cel mai des folosite pentru proceduri de copiere de octei (ca n cazul comenzii dd). Majoritatea echipamentelor de band au asociate doar fiiere device de tip caracter. Fiierele device de tip bloc sunt utilizate pentru transferul de date n blocuri de octei, ceea ce este mai avantajos i mai rapid pentru majoritatea aplicaiilor. Pentru varianta de UNIX Solaris, hard-discurile au asociate att un fiier device de tip caracter ct i unul de tip bloc. Fiecare dintre acestea sunt folosite n cazuri diferite. Operaiile uzuale se fac prin intermediul fiierelor bloc, ns crearea sistemului de fiiere se face cu ajutorul fiierelor caracter. Toate fiierele device standard UNIX sunt pstrate n directorul /dev (unele implementri de Linux Red Hat pstreaz acest sistem). n varianta UNIX Solaris i n unele noi implementri de Red Hat ns, coninutul lui /dev tinde s fie o combinaie de fiiere device i de legturi simbolice ctre fiiere device situate n alte directoare. ntr-un astfel de sistem, directorul

UNIX

/dev acioneaz ca un redirector organizaional. n Red Hat directorul se numete /devfs iar sub Solaris se intituleaz /devices. Fiierele i directoarele din directorul /dev variaz foarte mult, chiar ntre versiuni ale aceleiai variante de sistem de operare. n tabelul 2.1 sunt prezentate o serie dintre subdirectoarele reprezentative pentru /dev ntlnite la Solaris. n continuare vom prezenta cteva comenzi de baz referitoare la manipularea fiierelor i directoarelor pe un sistem UNIX. 2.5 Comenzi referitoare la fiiere i directoare Pentru a putea naviga n cadrul sistemului de fiiere trebuie s cunoatem n principiu dou comenzi: prima comand (pwd) afieaz localizarea curent (directorul n care ne aflm la un moment dat) iar cea dea doua comand (cd) este utilizat pentru a schimba directorul curent. S vedem mai nti care este sintaxa general a unei comenzi UNIX. n momentul n care suntem conectai la sistem sau atunci cnd folosim o fereastr terminal, pe acran apare un prompter. n cazul shell-urilor Bourne i Korn, prompterul este semnul dolar ($) pentru un utilizator obinuit i semnul diez (#) pentru utilizatorul root. n cazul shell-ului C, semnul special pentru prompter pentru un utilizator obinuit este semnul procent (%). Odat cu apariia prompterului, putem introduce comenzi la linia de comand. Formatul general al unei comenzi UNIX este:
$ comanda [optiune(optiuni)] [argument(e)]

n formatul general de mai sus, identificm urmtoarele componente: semnul dolar $ reprezint prompterul shell, comanda reprezint programul executabil, optiune/optiuni identific posibilitatea modificrii programului executabil pentru a rula n condiii specifice iar argument/argumente reprezint fiier (fiiere) sau director (directoare), inclusiv cu calea ctre fiierul sau directorul specificat, sau un text. Separarea acestor componente se face prin semnul spaiu; pe o singur linie putem introduce pn la 256 de caractere (nu se recomand, desigur, folosirea unui numr att de mare de caractere pe o singur linie). Toate comenzile UNIX sunt scrise cu litere mici. Opiunile sunt formate din litere precedate de semnul liniu sau minus (-). Se pot combina mai multe opiuni folosind un singur semn minus. Opiunile pot fi att litere mici ct i litere mari, n funcie de comand. Nu toate comenzile necesit toate cele 3 componente. Se pot scrie mai multe comenzi pe aceeai linie, separate de caracterul punct i virgul (;). Principala comand de navigare n cadrul sistemului de fiiere UNIX este cd (change directory). O alt comand folosit pentru a afla directorul curent este pwd (print working directory).

Sistemul de fiiere UNIX i comenzi

Comanda pwd este des utilizat pentru a ne reaminti directorul n care ne alfm la un moment dat (directorul curent). Comanda pwd este folosit fr opiuni si fr argumente; trebuie doar s tastm pwd la linia de comand i s apsm tasta ENTER. Presupunnd c ne aflm n directorul /home/serban/test, vom obine urmtorul rspuns al comenzii pwd:
$ pwd /home/serban/test

Modificarea directorului curent i navigarea n cadrul structurii sistemului de fiiere i directoare se face utiliznd comanda cd (change directory). Aceast comand accept ca argument att ci relative ct i ci absolute. Sintaxa general a acestei comenzi este:
$ cd [nume_director]

Exemple:
$ cd /tmp

Schimb directorul curent n directorul /tmp, acest director devenind directorul curent, iar:
$ cd /usr/stud

Schimb directorul curent n directorul /usr/stud. Observaie: Exist dou modaliti de referire a unei ci n structura de fiiere UNIX: calea absolut i calea relativ. O cale absolut este aceea care pleac din rdcin, deci ncepe cu "/". Un exemplu de cale absolut este: /usr/bin. O cale relativ nu ncepe cu "/", ci reprezint o localizare relativ la directorul curent de lucru. Cile ce ncep cu ../, ./ sau altceva diferit de / sunt ci relative. Cile relative au avantajul c sunt mai scurte dect cile absolute; pentru a le utiliza ns, trebuie s cunoatem directorul n care ne aflm deoarece acesta este punctul de plecare al cii relative. Un exemplu de cale relativ ntlnim n exemplul urmtor:
$ cd ../../bin

UNIX

Uneori este mai uor s utilizm meta-caractere. n UNIX, caracterul star (*) este un caracter special (meta-caracter) i semnific orice combinaie de caractere. Spre exemplu, comanda "cd /u*/s*" ne poziioneaz n directorul /usr/stud dac acest director este singurul ce corespunde ablonului specificat. Mai multe noiuni despre meta-caractere vor fi prezentate n cadrul capitolului curent. Alte exemple:
$ cd

Comanda cd apelat fr nici un argument ne poziioneaz n directorul home.


$ cd ..

Aceast comand ne poziioneaz n directorul printe al directorului curent (cu un nivel mai sus n structura arborescent de directoare).
$ cd ~

Aceast comand ne poziioneaz n directorul home.


$ cd ~-

Dac se folosete shell-ul Korn, aceast comand ne poziioneaz n directorul anterior de lucru.
$ cd ~nume_utilizator

Aceast comand ne poziioneaz n directorul home al utilizatorului identificat prin nume_utilizator. Listarea coninutului unui director Comanda ls (list) este folosit pentru listarea fiierelor i directoarelor, cu informaii despre acestea. Comanda ls apelat simplu, fr opiuni, listeaz fiierele din directorul curent. Fiierele ale cror nume ncep cu "." sunt considerate fiiere ascunse i nu vor fi afiate n acest caz. Fiierele ascunse sunt, de regul, folosite pentru a personaliza mediul de lucru al unui utilizator. Aceste fiiere nu sunt implicit afiate deoarece nu sunt editate frecvent. Directorul curent (.) i directorul printe (..) sunt i ele ascunse i nu sunt afiate deoarece ncep cu semnul punct (.).

Sistemul de fiiere UNIX i comenzi

Comanda ls are o serie ntreag de opiuni, fiind una dintre cele mai folositoare i flexibile comenzi UNIX. Exemple:
$ ls -a

Aceast comand este folosit pentru a afia toate fiierele, inclusiv cele ascunse.
$ ls -l

Aceast comand ne ofer un "listing lung", adic informaii suplimentare legate de fiiere (nu numai numele acestora). Aceste informaii cuprind date referitoare la drepturile de acces la fiiere, proprietarul i grupul crora aparin, dimensiune, data i ora ultimei modificri.
drwxr-xr-x 2 root -r--r--r-1 root drwxr-xr-x 2 root -rwxr-xr-x 2 root -rwxr-xr-x 2 root -rwxr-xr-x 1 bin -rwxr-x--x 1 root -rwxr-x--x 1 root -rwxr-xr-x 2 root -rwxr-xr-x 2 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root drwxr-xr-x 2 root -rwxr-x--x 1 root sys sys sys sys sys bin sys sys sys sys sys sys sys sys 60676 Aug 22 1994 Lib 60676 Aug 22 1994 README 60676 Aug 22 1994 Source 60676 Aug 22 1994 gzexe 60676 Aug 22 1994 gzip 242436 Feb 20 16:07 httpd 599604 Sep 22 1995 kermit 171195 Jan 22 12:15 memhog 5599 Jan 22 12:15 nlsym 553836 Feb 20 16:40 perl 553836 Feb 20 16:40 perl5.003 13855 Feb 20 16:40 perlbug 8984 Feb 20 16:40 perldoc 60676 Aug 22 1994 src 108781 Jan 22 12:15 u486mon

-rwsr-xr-x 1 uucp uucp

Figura 2.2 Exemplu de listare generat de comanda ls -l

UNIX

Funcionalitile celor dou opiuni de mai sus pot fi combinate folosind comanda ls -al. n figura 2.2 avem un exemplu de listare a fiierelor dintr-un director. Alte exemple:
$ ls -al /tmp

Se poate specifica n mod explicit directorul pentru care s se fac listarea. Astfel, comanda anterioar va lista fiierele coninute n directorul tmp.
$ ls -alR /usr | more

Comanda anterioar va lista informaiile despre fiierele din directorul /usr, precum i din toate subdirectoarele acestuia. Opiunea care determin acest lucru este -R. Un exemplu de listing pentru comanda ls -alR este prezentat n figura 2.3. Comanda more precizeaz c afiarea se va face pagin cu pagin.

Figura 2.3 Exemplu de listing al comenzii ls -alR


$ ls -ld /usr

Sistemul de fiiere UNIX i comenzi

Comanda anterioar listeaz informaii despre nsi directorul /usr i nu despre coninutul acestuia. Aceste informaiii sunt utile atunci cnd vrem s verificm drepturile de acces la un director. n fiecare linie din listingul comenzii ls al (ca cel din figura 2.2), primul caracter reprezint tipul fiierului (d pentru director, - pentru fiier simplu, l pentru fiier legtur, etc.). Urmtoarele 9 caractere reprezint drepturile de acces la fiier pentru utilizatorul care este proprietarul fiierului, pentru grupul din care face parte proprietarul i pentru ceilali utilizatori (n aceast ordine).
$ ls -F

Figura 2.4 Listing al comenzii ls -F

Aceast comand afieaz informaii legate de tipul fiierelor. Dac fiierul afiat este director, numele acestuia este urmat de semnul slash (/). Dac fiierul este un fiier simplu ASCII, fr format special, nu apare nici un simbol special dup numele acestuia. n cazul unei aplicaii, comenzi sau fiier script ce poate fi executat, numele fiierului este urmat de caracterul asterisk (*). Dac numele fiierului este urmat de simbolul at (@) nseamn c acest fiier este o legtur simbolic. n figura 2.4 avem un exemplu de listing pentru comanda ls -F.

UNIX

Drepturile de acces la fiiere i directoare


d d r w x r w x r w x r w x r - x r w x r w r - - - - - r w x r - r - - - - - -

Cele 10 coloane care reprezint drepturile de acces la fiiere sunt: S analizm n continuare semnificaia acestor coloane:
Coloana 1 d d r r r r Coloana 2-4 w x w x w x x r r r Coloana 5-7 w x w Coloana 8-10 r w x r r -

Coloana 1: Ne arat faptul c un fiier este director(d), fiier obinuit (-), sau un tip special de fiier. Coloanele 2-4: Ne arat care sunt drepturile de acces la fiier pentru utilizatorul care este proprietarul fiierului. Drepturile de acces pot fi: de citire (r), scriere (w), i execuie (x). Coloanele 5-7: Ne arat care sunt drepturile de acces la fiier pentru grupul proprietar al fiierului. Drepturile de acces pot fi aceleai: citire (r), scriere (w) i execuie (x). Coloanele 8-10: Ne arat care sunt drepturile de acces la fiier pentru utilizatorii care nu sunt n grupul proprietar al fiierului (others). Drepturile de acces pot fi aceleai: citire (r), scriere (w) i execuie (x). Drepturile de acces la fiiere i directoare se pot modifica folosind comanda chmod (change mode). Mai multe despre aceast comand n capitolul 5.

Sistemul de fiiere UNIX i comenzi

Tipuri de fiiere UNIX


Tabelul 2.5
Tipul de fiier d b c l M P S b) Descriere Fiier simplu ("ordinary file") Director Fiier bloc ("block special") Fiier caracter ("character special") Fiier legtur ("link") Fiier de memorie partajat ("shared memory") Fiier pipe ("named pipe") Fiier semafor ("semaphore")

Tipurile de fiiere UNIX sunt prezentate n tabelul 2.5. Caracteristici: Fiierele simple (-) Nu este impus nici o structur asupra coninutului - acesta reprezint o niruire de octei; Aceste fiiere pot fi text (ASCII) sau binare. Fiiere director (d) Reprezint un fel de tabel de fiiere; Are o structur intern precis definit; Ofer posibilitatea organizrii sistemului de fiiere. Fiierele bloc (b) Identific un dispozitiv; Este un bloc de I/O; Pot identifica uniti floppy, hard-discuri, uniti de band. Fiiere caracter (c ) Identific un dispozitiv; Reprezint caractere de I/O; Pot identifica porturi seriale, paralele (terminale, imprimante).

UNIX

Fiiere de legtur simbolic (l) Sunt fiiere pointer ctre alt fiier existent; Sunt de regul folosite pentru a oferi un alias altui fiier. Fiiere de memorie partajat (m) Permit mai multor programe s acceseze un spaiu comun de memorie; Folosite de regul de programele de aplicaii. Fiiere pipe (p) Folosite pentru a transmite date ntre comenzi sau programe. Fiiere semafor (s) Folosite pentru sincronizarea proceselor active concurente; Folosite de programele de aplicaii.
Nr de legturi Proprietarul Dimensiunea n octei Grupul Data Numele fiierului

drwxr-xr-x -r--r--r-drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwsr-xr-x -rwxr-x--x -rwxr-x--x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x drwxr-xr-x -rwxr-x--x

2 1 2 2 2 1 1 1 1 2 2 1 1 2 1

root root root root root bin uucp root root root root root root root root

sys sys sys sys sys bin uucp sys sys sys sys sys sys sys sys

60676 Aug 22 1994 Lib 60676 Aug 22 1994 README 60676 Aug 22 1994 Source 60676 Aug 22 1994 gzexe 60676 Aug 22 1994 gzip 242436 Feb 20 16:07 httpd 599604 Sep 22 1995 kermit 171195 Jan 22 12:15 memhog 5599 Jan 22 12:15 nlsym 553836 Feb 20 16:40 perl 553836 Feb 20 16:40 perl5.003 13855 Feb 20 16:40 perlbug 8984 Feb 20 16:40 perldoc 60676 Aug 22 1994 src 108781 Jan 22 12:15 u386mon

Sistemul de fiiere UNIX i comenzi

Considernd listingul anterior, putem observa i alte informaii legate de fiierele i directoarele afiate: Numrul de legturi (link-uri) reprezint numrul de legturi simbolice ctre acest fiier; Proprietarul reprezint numele utilizatorului care deine acest fiier; Grupul reprezint numele grupului de utilizatori din care face parte proprietarul; Dimensiunea - este exprimat n octei; Data data i ora ultimilor modificri fcute asupra fiierului sau data de creare a fiierului; Numele fiierului. Observaie Pe un sistem Linux, comanda ls deriv din proiectul GNU fileutils, avnd o ntreag serie de opiuni i caracteristici speciale. Spre exemplu, numele de fiiere pot aprea listate n culori n funcie de tipul de fiier. Culorile folosite la afiare sunt definite n fiierul /etc/DIR_COLORS; acestea se pot personaliza folosind i fiierul .dir_colors din directorul curent home. Formatul acestui fiier este definit n fiierul /etc/DIR_COLORS. Pentru a afia numele fiierelor fr culori dar cu simboluri, se pot folosi opiunile --color i --classify. n mod asemntor cu opiunea -F, simbolurile --classify sunt urmtoarele: / pentru directoare, * pentru programe, @ pentru legturi simbolice, | pentru fiiere de tip pipe i = pentru fiiere de tip socket. Astfel, listingul comenzii:
$ ls --color=never --classify studenti/ lista.sh* text.sub

semnific faptul c studenti este director, iar fiierul lista.sh este executabil.

UNIX

2.6

Caractere speciale n UNIX

Caracterele speciale sau metacaracterele sunt caractere cu semnificaie special pentru shell-ul UNIX. n general, caracterele de pe tastatur care nu sunt alfanumerice sunt metacaractere. Metacaracterele sunt utilizate mpreun cu majoritatea comenzilor UNIX pentru a oferi o mai mare flexibilitate. Cteva dintre metacaracterele folosite n UNIX sunt similare cu cele utilzate n MS-DOS. Caracterul asterisk (*) i semnul de ntrebare (?) sunt metacaractere cunoscute i sub numele de wildcard-uri, fiind folosite pentru a lucra cu grupuri de fiiere ntr-un mod mai eficient. n tabelul 2.6 sunt prezentate cteva dintre cele mai folosite metacaractere mpreun cu o scurt descriere a funcionalitii acestora. Fiind vorba despre nite caractere speciale, trebuie s nu folosim metacaractere atunci cnd denumim un fiier sau un director. Caracterul punct ( . ) i caracterul underscore ( _ ) sunt unicele caractere non alfanumerice care nu sunt metacaractere. Din aceast cauz aceste dou caractere pot fi folosite n cadrul numelor de fiiere. Semnul minus ( - ), cu toate c este metacaracter, poate fi, de asemenea, utilizat n cadrul numelor de fiiere. Cele mai uzuale metacaractere
Tabelul 2.6
Metacaracterul * ? ; [] > Descriere Reprezint orice caracter sau secven de caractere Identific un singur caracter Permite scrierea mai multor comenzi pe aceeai linie Identific o mulime sau un domeniu de caractere pentru o singur poziie Redirecteaz ieirea unei comenzi ctre un fiier n loc de ecran (stdout fiierul standard de ieire). Redirecteaz intrarea unei comenzi dintr-un fiier n loc de tastatur (stdin - fiierul standard de intrare) Redirecteaz eroarea unei comenzi ctre un fiier n locul ecranului Adaug ieirea unei comenzi la un fiier existent (concatenare) * ? comanda;comanda [domeniu] comanda > fisier Formatul comenzii

<

comanda < fisier

2> >>

comanda 2> fisier comanda >> fisier

Sistemul de fiiere UNIX i comenzi Metacaracterul | (semnul pipe) $ % ~ ! Descriere Preia ieierea unei comenzi i o paseaz ca intrare comenzii urmtoare Indicatorul prompter-ului standard pentru shell-ul Bourne i Korn Indicatorul prompter-ului standard pentru shell-ul C Indic directorul home Re-execuia comenzii Formatul comenzii comanda | comanda Nu se aplic Nu se aplic ~ !n, unde n este numrul comenzii introduse

Cele mai utilizate metacaractere sunt asteriskul (*), semnul ntrebrii ( ? ) i parantezele ptrate ( [ ] ). Caracterul asterisk sau star (*) este un caracter de substituie pentru un caracter sau mai multe (sau nici unul !), cu excepia caracterului punct de nceput al unui fiier ascuns. Caracterul star poate fi deosebit de util n unele situaii, precum n cazul comenzilor ls (list), cp (copy), mv (move) sau rm (remove). Dac dorim s afim dintr-un director doar fiierele al cror nume ncepe cu litera s putem folosi comanda ls s*. Un exemplu de listing este n figura 2.7.

Figura 2.7 Listingul comenzii ls s*