+ All Categories
Home > Documents > Unitatea de învăŃare M2.U2. Comenzi de lucru cu directoare ... filescrie comenzi de setare a...

Unitatea de învăŃare M2.U2. Comenzi de lucru cu directoare ... filescrie comenzi de setare a...

Date post: 17-Oct-2019
Category:
Upload: others
View: 22 times
Download: 0 times
Share this document with a friend
19
40 Unitatea de învăŃare M2.U2. Comenzi de lucru cu directoare si fisiere Cuprins M2.U2.1. Introducere........................................................................................................... 40 M2.U2.2. Obiectivele unităŃii de învăŃare ............................................................................. 40 M2.U2.3. Comenzi de lucru cu directoare ............................................................................ 41 M2.U2.4. Redirectarea intrărilor şi ieşirilor .......................................................................... 44 M2.U2.5. Copierea, mutarea şi redenumirea fişierelor.......................................................... 48 M2.U2.6. Legături simbolice ............................................................................................... 50 M2.U2.7. Drepturi de acces ................................................................................................. 51 M2.U2.8. Căutarea fişierelor într-o structură de directoare ................................................... 53 M2.U2.9. Test de evaluare a cunoştinŃelor .......................................................................... 57 M2.U2.10. Rezumat ............................................................................................................. 58 M2.U2.1. Introducere Sistemele de operare Unix şi Linux oferă o mulŃime de comenzi de lucru cu directoare şi fişiere. Cunoscătorii sistemelor Windows, vor observa că sub Linux aceste comenzi au o serie de opŃiuni şi parametri care le fac mult mai puternice decât cele scrise sub MS-DOS, recunoscute de sistemele Windows. De asemenea, comenzile de setare a drepturilor sunt mult mai uşor de utilizat decât cele din MS- DOS. În plus, sub Linux există o comandă de căutare de fişiere în anumite structuri de directoare, apecificate ca argumente, după anumite criterii, iar rezultatul căutării să fie prelucrat de alte comenzi indicate; această comandă este foarte utilă administratorului de sistem, care are nevoie de o imagine a fişierelor din sistem, după diverse criterii, cum ar fi dimensiunea, vechimea lor, proprietarul etc. M2.U2.2. Obiectivele unităŃii de învăŃare Această unitate de învăŃare îşi propune ca obiectiv principal o iniŃiere a studenŃilor în utilizarea comenzilor oferite de shell în lucrul cu directosre şi fişiere. La sfârşitul acestei unităŃi de învăŃare studenŃii vor fi capabili să: înŃeleagă şi să explice sintaxa şi semantica comenzilor de lucru cu directoare şi fişiere; scrie comenzi de creare, modificare, ştergere, vizualizare a structurilor de directoare şi de poziŃionare în cadrul unei astfel de structuri; înŃeleagă şi să explice conceptele legate de redirectarea intrărilor şi ieşirilor; scrie comenzi de copierea, mutare şi redenumire a fişierelor; înŃeleagă şi să explice conceptele legate de legături simbolice la fişiere; creeze legături simbolice la un fişier; înŃeleagă şi să explice conceptele legate de drepturile de acces la un fişier; scrie comenzi de setare a drepturilor la un fişier; scrie comenzi de căutarea a fişierelor într-o structură de directoare. Durata medie de parcurgere a unităŃii de învăŃare este de 3 ore.
Transcript

40

Unitatea de învăŃare M2.U2. Comenzi de lucru cu directoare si fisiere Cuprins M2.U2.1. Introducere........................................................................................................... 40 M2.U2.2. Obiectivele unităŃii de învăŃare............................................................................. 40 M2.U2.3. Comenzi de lucru cu directoare ............................................................................ 41 M2.U2.4. Redirectarea intrărilor şi ieşirilor.......................................................................... 44 M2.U2.5. Copierea, mutarea şi redenumirea fişierelor.......................................................... 48 M2.U2.6. Legături simbolice ............................................................................................... 50 M2.U2.7. Drepturi de acces ................................................................................................. 51 M2.U2.8. Căutarea fişierelor într-o structură de directoare................................................... 53 M2.U2.9. Test de evaluare a cunoştinŃelor .......................................................................... 57 M2.U2.10. Rezumat............................................................................................................. 58

M2.U2.1. Introducere Sistemele de operare Unix şi Linux oferă o mulŃime de comenzi de lucru cu directoare şi fişiere. Cunoscătorii sistemelor Windows, vor observa că sub Linux aceste comenzi au o serie de opŃiuni şi parametri care le fac mult mai puternice decât cele scrise sub MS-DOS, recunoscute de sistemele Windows. De asemenea, comenzile de setare a drepturilor sunt mult mai uşor de utilizat decât cele din MS-DOS. În plus, sub Linux există o comandă de căutare de fişiere în anumite structuri de directoare, apecificate ca argumente, după anumite criterii, iar rezultatul căutării să fie prelucrat de alte comenzi indicate; această comandă este foarte utilă administratorului de sistem, care are nevoie de o imagine a fişierelor din sistem, după diverse criterii, cum ar fi dimensiunea, vechimea lor, proprietarul etc.

M2.U2.2. Obiectivele unităŃii de învăŃare Această unitate de învăŃare îşi propune ca obiectiv principal o iniŃiere a studenŃilor în utilizarea comenzilor oferite de shell în lucrul cu directosre şi fişiere. La sfârşitul acestei unităŃi de învăŃare studenŃii vor fi capabili să: � înŃeleagă şi să explice sintaxa şi semantica comenzilor de lucru cu directoare şi fişiere; � scrie comenzi de creare, modificare, ştergere, vizualizare a structurilor de directoare şi de poziŃionare în cadrul unei astfel de structuri; � înŃeleagă şi să explice conceptele legate de redirectarea intrărilor şi ieşirilor; � scrie comenzi de copierea, mutare şi redenumire a fişierelor; � înŃeleagă şi să explice conceptele legate de legături simbolice la fişiere; � creeze legături simbolice la un fişier; � înŃeleagă şi să explice conceptele legate de drepturile de acces la un fişier; � scrie comenzi de setare a drepturilor la un fişier; � scrie comenzi de căutarea a fişierelor într-o structură de directoare.

Durata medie de parcurgere a unităŃii de învăŃare este de 3 ore.

41

M2.U2.3. Comenzi de lucru cu directoare

Creearea directoarelor se face cu comanda mkdir (“make directory”). Sintaxa ei este:

mkdir [-p] nume_catalog

Dacă este prezentă opŃiunea -p se creează şi cataloagele părinte care lipsesc din numele de cale dat pentru catalogul dorit.

Exemplu. $mkdir –p /home/ilflorea/so/Linux/exemple

Înainte de crearea catalogului exemple, vor fi create cataloagele ilflorea,so,Linux dacă nu au fost încă create, în ordinea specificată.

Tipărirea directorului curent se face cu comanda pwd (“print working directory” ). Sintaxa ei este: $pwd Se utilizează pentru a se verifica poziŃia momentană, într-o sesiune de lucru sub Linux, în ierarhia de cataloage.

Exemplu. Dacă numele de utilizator este ilflorea şi după loginare se tastează $pwd se va afişa: /home/ilflorea

Comanda cd (“change directory”) are sintaxa: cd [nume_catalog]

Are ca efect schimbarea directorului curent sau modificarea poziŃiei curente în ierarhia de directoare. Directorul dat ca parametru devine noul director curent. Pentru ca această comandă să poată fi executată, utilizatorul trebuie să aibă drept de căutare (redat prin x în comanda ls) în catalogul dat ca argument. Utilizarea comenzii cd fără parametru determină revenirea în catalogul gazdă al utilizatorului.

Exemple. $cd /home/ilflorea/so/Linux/exemple

# directorul curent va fi exemple $cd .. #directorul curent va fi Linux $cd /home/ilflorea #directorul curent va fi ilflorea Acelaşi efect se obŃine, dacă se tastează : $cd ~ sau $cd

Ştergerea unui catalog vid se face cu comanda rmdir (“remove directory”) care are sintaxa:

rmdir [opŃiuni] nume_catalog

Cu opŃiunea –p se şterg şi eventuale directoare părinte care au devenit vide. Pentru ştergerea mai multor fişiere sau directoare se foloseşte comanda rm, care are

sintaxa: rm [optiuni] fisier(e)

OpŃiunea –i: utilizatorul este întrebat înainte de ştergerea efectivă a intrării. OpŃiunea –r (sau -R): realizează ştergerea recursivă în catalogul la care se referă comanda. Nu este permisă ştergerea intrării “..”, adică a directorului părinte al fişierului. OpŃiunea -f şterge fişiere fără mesaj de avertizare. OpŃiunea -v afişează numele fiecărui fişier înainte de ştergere.

42

Exemple. Presupunem că avem structura de directoare şi fişiere din figura 2.2.1. Dacă tastăm comenzile: $pwd /home/ilflorea/so/exemple/Linux $rmdir Grep

Se şterge directorul /Grep. Dacă tastăm: $pwd /home/ilflorea $rd –r so se vor şterge directoarele /so, /exemple, /Linux, /Windows,/Awk, /Grep şi fişierele fis1 şi fis2.

/home/ilflorea /so /so1 fis3 fis1 fis1 /exemple

/Linux /Windows

/Awk /Grep fis2

Figura 2.2.1. Structură de directoare şi fişiere

Comanda ls (“list”) are sintaxa: ls [opŃiuni] [fişier_sau_director]

Are ca efect afişarea de informaŃii despre un director sau fişier. Se utilizează pentru a se afişa numele fişierelor de diferite tipuri incluse într-un catalog şi, în funcŃie de opŃiuni alte informaŃii despre aceste fişiere.

Exemplu. Utilizarea comenzii ls fără opŃiuni. Relativ la structura din figura 2.2.1, dacă tastăm: $ls /home/ilflorea Se afişează: so so1

Cu opŃiunea -l (“long”) se afişează informaŃii suplimentare (luate din nodul de index) despre fiecare fişier din catalogul argument al comenzii. Prima linie conŃine numărul de blocuri ocupate de directorul respectiv; următoarele linii conŃin următoarele informaŃii: - tipul fişierului (d: directory, -: fişier obişnuit b: fişier bloc; c: fişier special orientat pe caracter; l:legătură simbolică; p: fişier special FIFO (sau “pipe cu nume”); s: intrarea este un soclu (“socket”) pentru comunicarea în reŃea); - conŃinutul biŃilor de protecŃie/acces (r = read, w = write, x = execute), listaŃi în ordinea: proprietar, grupul proprietarului, restul utilizatorilor (se va discuta la drepturi de acces); - numărul de intrări în cataloage care punctează spre acel fişier fizic; - numele de login al proprietarului fişierului; - grupul proprietarului; - lungimea fişierului ( în octeŃi); - data ultimei modificări a fişierului;

43

- numele fişierului.

Exemplu. Utilizarea comenzii ls cu opŃiunea -l. Relativ la structura din figura 2.2.1, dacă tastăm: $ls –l /home/ilflorea Se afişează: total 22 drwxr-xr-x 1 ilflorea prof 4096 2010-08-24 22:04 so drwxr-xr-x 1 ilflorea prof 2048 2010-08-24 23:04 so1 drwxr-xr-x 1 ilflorea prof 12048 2010-08-25 23:04 fis1 drwxr-xr-x 1 ilflorea prof 13048 2010-08-24 23:04 fis3

Cu opŃiunea -a (“all”) se listează şi fişierele ascunse (fişierele al căror nume începe cu caracterul punct ).

Exemplu. Utilizarea comenzii ls cu opŃiunile -al. Relativ la structura din figura 2.2.1, dacă tastăm: $ls –al /home/ilflorea Se afişează: total 22 drwxr-xr-x 1 ilflorea prof 512 2010-08-24 22:04 . drwxr-xr-x 1 ilflorea prof 1024 2010-08-24 23:04 .. drwxr-xr-x 1 ilflorea prof 4096 2010-08-24 22:04 so drwxr-xr-x 1 ilflorea prof 2048 2010-08-24 23:04 so1 drwxr-xr-x 1 ilflorea prof 12048 2010-08-25 23:04 fis1 drwxr-xr-x 1 ilflorea prof 13048 2010-08-24 23:04 fis3

Cu opŃiunea -i (“index”) se afişează şi numărul nodului index asociat fiecărei intrări din catalogul listat. Cu opŃiunea -s (“size”) se afişează dimensiunea în blocuri a fişierului.

Exemplu. Utilizarea comenzii ls cu opŃiunile -alis. Relativ la structura din figura 2.2.1, dacă tastăm: $ls –alis /home/ilflorea Se afişează: total 22 301860 8 drwxr-xr-x 1 ilflorea prof 512 2010-08-24 22:04 . 65473 8 drwxr-xr-x 1 ilflorea prof 1024 2010-08-24 23:04 .. 360621 8 drwxr-xr-x 1 ilflorea prof 4096 2010-08-24 22:04 so 301862 8 drwxr-xr-x 1 ilflorea prof 2048 2010-08-24 23:04 so1 361443 8 drwxr-xr-x 1 ilflorea prof 12048 2010-08-25 23:04 fis1 301879 8 drwxr-xr-x 1 ilflorea prof 13048 2010-08-24 23:04 fis3

Se observă că numărul nodului index este listat pe prima coloană.

Pentru a schimba ordinea de listare implicită (alfabetic, după numele fişierului) există mai multe opŃiuni: -c: listarea se face în ordinea ultimei modificări a modului de acces la fişier (cel mai recent modificat se listează primul); -t: listarea se face în ordinea ultimei modificări a fişierului (cel mai recent modificat primul); -u: listarea se face după timpul ultimului acces la fişier; -r: inversează ordinea de sortare (invers alfabetic sau cel mai vechi modificat primul). -S sorteaza fisierele in ordine descrescatoare dupa dimensiunea lor.

44

Exemplu. Pentru găsirea celor mai mari fisiere din directorul curent se listează fisierele sortate in ordine descrescatoare dupa dimensiunea lor, prin: $ls -lS

Dacă argumentul unei comenzi ls este un fişier, în funcŃie de opŃiunile utilizate se afişează informaŃii despre fişierul respectiv.

Exemplu. Dacă se tastează $ls –l /home/ilflorea/fis1

Se afişează: drwxr-xr-x 1 ilflorea prof 12048 2010-08-25 23:04 fis1

Să ne reamintim...

Creearea directoarelor se face cu comanda mkdir. Tipărirea directorului curent se face cu comanda pwd. Comanda cd are ca efect schimbarea directorului curent sau modificarea poziŃiei curente în ierarhia de directoare. Ştergerea unui catalog vid se face cu comanda rmdir Pentru ştergerea mai multor fişiere sau directoare se foloseşte comanda rm. Comanda ls are ca efect afişarea conŃinutului unui catalog.

CreaŃi o structură de directoare şi fişiere, similară celei din figura 2.2.1., în care să înlocuiŃi ilflorea , cu numele vostru de utilizator. AdaptaŃi exemplele prezentate, la structura creată.

M2.U2.4. Redirectarea intrărilor şi ieşirilor

Fiecare comandă Linux are un “fişier de intrare” şi un “fişier de ieşire”. Implicit acestea sunt “intrarea standard” (tastatura de la care se introduce comanda) şi “ieşirea standard” (ecranul terminalului la care lucrează utilizatorul).

Interpretorul de comenzi stabileşte identitatea fişierelor standard de intrare şi standard de ieşire, pe care le ataşează comenzii. Atunci când se execută comanda respectivă, acestea primesc descriptorii de fişier 0 (intrare) şi 1 (ieşire). De asemenea, shell-ul stabileşte fişierul standard de erori, care are descriptorul 2 şi este transmis comenzii (de regulă este acelaşi cu fişierul standard de ieşire).

Shell-ul permite utilizatorului sa specifice explicit în linia de comandă o altă identitate pentru intrarea standard şi/sau ieşirea standard, prin caracterele speciale <, respectiv >.

Exemplu. $ ls -l fis1 >fis2

InformaŃiile despre fişierul fis1 din catalogul curent, nu apar pe ecran, ele sunt memorate în fişierul fis2 din directorul curent. Înainte de lansarea în execuŃie a comenzii ls, shell-ul deschide pentru scriere fis2 (cu descriptorul de fişier l). Dacă fişierul fis2 există, prin operaŃia de deschidere pentru scriere conŃinutul său anterior se pierde; dacă fişierul nu există, el va fi creat de către shell şi va avea iniŃial lungimea nulă.

Efectul unei specificări de forma: $comanda <fisier

este acela că argumentele cu care va fi executată comanda nu vor fi luate de la intrarea standard, ci din fişierul cu numele fisier .

O comandă în care se redirectează atât intrarea cât şi ieşirea va fi de forma: $comanda <input >output

Ordinea de specificare a redirectărilor nu este semnificativă.

45

Prim notaŃia n>, în care n este un întreg, se specifică redirectarea pentru scriere a fişierului cu descriptorul n. Această facilitate se foloseşte pentru redirectarea fişierului standard de eroare. Sintaxa unei comenzi în care toate cele 3 fişiere standard sunt redirectate este:

$comanda <input >output 2>errors Pentru ca fişierul în care se redirectează ieşirea să nu fie suprascris, ci să se adauge la

sfârşitul lui noi date, se foloseşte notaŃia >>. Pentru adăugarea la sfârşitul fişierului de erori sintaxa este 2>>. Astfel:

$comanda >>logfile va determina ca mesajele produse de comanda să se adauge la sfârşitul fişierului logfile.

Prin notaŃia <<c se specifică preluarea informaŃiilor necesare unei comenzi de la tastatură (în regim interactiv) sau din textul unei proceduri shell, până la întâlnirea lui c (caracter sau text). O astfel de constructie este de forma:

$comanda <<cuvant .......

succesiune de linii ----- Cuvant

Comanda cat este utilizată pentru a afişa, la ieşirea standard conŃinutul unuia sau mai multor fişiere specificate în linia de comandă. Prin redirectarea ieşirii, folosind mecanismul prezentat anterior, cat se poate utiliza pentru a crea un fişier text.

Exemplu. SecvenŃa: $cat >fis <<EOF Cursul de Linux Este foarte important Pentru mine EOF introdusă într-un fişier de comenzi, are ca efect crearea fişierului fis ce conŃine trei linii ” Cursul de Linux”, ” Este foarte important”, ”Pentru mine”.

Altă modalitate de a crea fişiere cu cat, fără a folosi notaŃia <<c, este de a folosi redirectarea ieşirii şi a tasta Ctrl-D, după ce s-a introdus în fişier textul respectiv.

Concatenarea fişierelor cu comanda cat. Dacă în linia de comandă a comenzii se specifică un număr de fişiere, dintre care ultimul este precedat de semnul >, se realizează concatenarea fişierelor specificate înaintea ultimului şi ultimul fişier va conŃine rezultatul concatenării.

Exemplu. SecvenŃa: $cat fis1 fis2 fis3 >fis

Realizează concatenarea fişierelor fis1 fis2 fis3 în fişierul fis.

Dacă la redirectare se foloseşte notaŃia >>fis, textul respectiv se va adăuga la sfârşitul fişierului, fără a distruge conŃinutul lui.

Exemplu. SecvenŃa: $cat fi>fis Cursul de Linux Este foarte important Pentru mine Ctrl-D se crează acelaşi fişier ca în exemplul anterior.

46

Legarea în pipe (“conductă”) are sintaxa: $comanda1 | comanda2

Efectul este următorul: comenzile comanda1 şi comanda2 vor fi lansate în execuŃie simultan, ieşirea lui comanda1 fiind utilizată ca intrare de comanda2. comanda2 poate începe efectiv execuŃia numai după ce are un element de informaŃie de la comanda1 (dar nu trebuie să aştepte până când comanda1 termină de produs tot ce va furniza ca ieşire). Ieşirea pentru comanda1 (descriptor de fişier 1) este un fişier (o structură numită pipe) şi acelaşi fişier va fi intrare pentru comanda2 (descriptor de fişier 0). Mecanismul pipe este frecvent utilizat în Linux pentru combinarea unor comenzi.

Exemplu. SecvenŃa: $ls -l|grep ilflorea Va afişa fişierele din directorul curent ale căror proprietar este utilizatorul ilflorea. Comanda grep o vom studia într-un modul următor. În acest exemplu, are ca efect căutarea cuvîntului ilflorea în ieşirea comenzii ls -l. Acelaşi efect se poate obŃine şi prin secvenŃa următoare: $ls –l >fis grep ilflorea fis

Se poate utiliza o legare în pipe a mai multor comenzi, de forma: $comanda_1|comanda_2 |...comanda_i|comanda_i+1...|comanda_n

În această situaŃie, ieşirea lui comanda_i este utilizată ca intrare de comanda_i+1.

Exemplu. SecvenŃa: $ls –l /home/ilflorea |grep ilflorea | sort +24

Va afişa fişierele din directorul /home/ilflorea ale căror proprietar este utilizatorul ilflorea, ordonate după dimensiune. Comanda sort o vom studia în această unitate de învăŃare.

Transmiterea stderr în acelasi loc cu stdout foloseşte sintaxa 2>&1.

Exemplu. SecvenŃa: $ls /home/ilflorea >outcom.txt 2>&1 Lucrează astfel: ls /usr/bin listeaza continutul lui /home/ilflorea. > redirecteaza iesirea comenzii ls (stdout) catre fisierul outcom.txt. 2>&1 transmite fisierul cu descriptorul 2(stderr), la aceeasi locaŃie cu fişierul cu descriptorul 1 (stdout). Deoarece stdout a fost redirectat, toate mesajele de eroare vor fi si ele trimise în fisierul outcom.txt.

Exemplu. Lansăm comanda ls pentru un director inexistent. $ls /home/ilfloreax >outcom.txt 2>&1 $cat commands.txt ls: /home/ilfloreax: No such file or directory

În acest exemplu, am presupus ca nu există directorul /home/ilfloreax.

Redirectarea în acelaşi timp a lui stderr şi stdout foloseşte sintaxa &>.

47

Exemplu. $ls /home/ilfloreax &>outcom.txt $cat outcom.txt ls: /home/ilfloreax: No such file or directory Lucrează astfel: &>outcom.txt redirectează atât stdout cât şi stderr către fişierul outcom.txt. Dacă nu se redirectează ambele fişiere, atunci mesajele de eroare vor fi transmise la terminal.

Exemplu. $ ls /home/ilfloreax >outcom.txt

ls: /home/ilfloreax: No such file or directory În acest caz, erorile vor fi afişate pe ecran, şi toate ieşirile vor fi transmise în fişierul outcom.txt.

Se mai pot utiliza construcŃiile: i>&j redirecteaza descriptorul de fisier i la j. Toate ieşirile, care în mod uzual sunt trimise fişierului cu descriptorul i, vor fi trimise catre cel cu descriptorul j. >&j redirectează ieşirile către fişierul cu descriptorul j.

ExecuŃia unei comenzi fără transmiterea ieşirii. Există situaŃii în care: - O comandă crează o mulŃime de date care nu sunt necesare. - Dorim să vedem numai mesajele de eroare (dacă acestea există). - Suntem interesaŃi să vedem dacă comanda respectivă se execută cu succes sau nu. În aceste cazuri, se face redirectarea iesirii catre fisierul nul, /dev/null.

Exemplu. $ls /home/ilflorea >/dev/null

Se verifică dacă există directorul /home/ilflorea.

Să ne reamintim... Redirectarea intrărilor şi ieşirilor este un mecanism prin care se modifică fişierele standard de intrare şi/sau de ieşire ale unei comenzi. În loc de tastatură, respectiv ecranul monitorului, intrarea, respectiv ieşirea poate fi un fişier oarecare. Acest mecanism este util atunci cind iesirea unei comenzi este intrare pentru o altă comandă.

Cu acest mecanism, cu comanda cat, se pot crea fişiere text în linia de comandă.

Un alt fişier standard care poate fi redirectat este cel de erori; de exemplu, când se doreşte păstrarea tuturor erorilor într-un fişier, acesta este redirectat cu ieşire şi adăugare la sfârşit într-un alt fişier. De asemenea, există şi situatia în care nu ne interesează mesajul de eroare al unei comenzi şi atunci fişierul de ieşire este fişierul nul.

Un alt mecanism de acest tip este legarea în pipe a comenzilor, prin care se utilizează o structură specială, cu acelaşi nume, care pentru o comandă este fişier de intrare, iar pentru alta de ieşire.

48

1. CreaŃi cu comanda cat câte un fişier prin ambele metode. AdăugăŃi text la fişierele create prin ambele metode. 2. ScrieŃi o legare în pipe a două comenzi, prin care să se caute şi să se afişeze informaŃii despre toate fişierele dintr-un director, al căror nume conŃine şirul de caractere fis. 3. ScrieŃi o secvenŃă de concatenare a trei fişiere aflate în directoare diferite şi fişierul în care se face concatenarea să fie în directorul gazdă.

M2.U2.5. Copierea, mutarea şi redenumirea fişierelor

Copierea unui fişier se face cu comanda cp (“copy”). Prin copiere se crează un nou fişier cu acelaşi conŃinut. Are sintaxa:

cp [opŃiuni] nume1 nume2 OpŃiunile comenzii sunt: -a (“archive”): se foloseşte acestă opŃiune pentru a se copia odată cu fişierul şi caracteristicile lui. -b (“backup”): dacă nume2 este numele unui fişier deja existent, se face o copie de siguranŃă a cestuia. -f („force”): se face copierea chiar dacă atributele lui nume2 interzic acest lucru. -i („interactive”): utilizatorul este întrebat atunci când se face suprascrierea. -p („preserve”): se face copierea şi a drepturilor, concept care îl vom discuta în această unitate de învăŃare. -r („recursive”): se face copierea recursivă. -u („update”): se face copierea numai dacă nume2 nu există sau este mai vechi decât nume1. Comanda are întotdeauna cel puŃin două argumente. • Dacă ambele argumente reprezintă nume de fişiere obişnuite, nume2 va fi un fişier nou (i se alocă nod index şi blocuri de date proprii), cu conŃinut identic cu cel al fişierului nume1. • Dacă nume1 este un fişier obişnuit, iar nume2 desemnează un catalog, atunci în catalogul nume2 se creează o intrare cu numele nume1 pentru copia fişierului. • Dacă atât nume1 cât şi nume2 reprezintă nume de cataloage, atunci comanda cp se poate executa doar dacă este prevăzută şi opŃiunea -R sau -r, iar efectul este crearea în nume2 a unui catalog nume1 şi copierea recursivă a fişierelor din catalogul original nume1 în catalogul nou creat. ObservaŃie. Numele de fişier nume1 poate fi definit şi ca un şablon, prin folosirea caracterelor * şi ?. Dacă este prezent caracterul *, respectiv ?, acesta poate fi înlocuit cu orice şir de caractere, respectiv cu un caracter, cu condiŃia ca numele obŃinut să existe în structura respectivă.

Exemplu. Relativ la structura din figura 2.2.2. ; dacă se tastează: $cd /home/ilflorea $cp ./so/fis1 ./so/exem/linux

Se crează un nou fişier cu numele fis1 în directorul /home/ilflorea/so/exem/linux, care are acelaşi conŃinut cu

fişierul cu numele fis1 din directorul /home/ilflorea/so.

49

Exemple Dacă se tastează: $cd /home/ilflorea $cp ./so/fis1 ./so/exem/linux/fis12

Se crează un nou fişier cu numele fis12 în directorul /home/ilflorea/so/exem/linux, care are acelaşi conŃinut cu

fişierul cu numele fis1 din directorul /home/ilflorea/so. Dacă se tastează: $cd /home/ilflorea $cp ./so/*fis? ./so/exem/linux1

Se crează noile fişiere cu numele fis1,abfis2, afis2 în directorul /home/ilflorea/so/exem/linux1, care au aceleaşi conŃinuturi cu cele din directorul /home/ilflorea/so. Dacă se tastează: $cd /home/ilflorea/so $cp –r ./exem /home/ilflorea

Se creează o sub-structură de directoare şi fişiere în /home/ilflorea, care conŃine sub-structura cu rădăcina în /home/ilflorea/so/exem (Figura 2.2.2).

/home/ilflorea /so /so1 fis3 fis1 afis2 fis1 /exem abfis2

/Linux /Linux1

/Awk /Grep fis2

Figura 2.2.2. Structură de directoare şi fişiere

Schimbarea numelui (poziŃiei) unui fişier se face cu comanda mv (“move” ). Sintaxa comenzii este:

mv [opŃiuni] sursa destinatie

•••• Ca şi comanda cp, mv are minimum 2 parametri. Deosebirea între cele două comenzi, este aceea că mv nu creează un fişier nou ci, pentru un fişier existent, doar schimbă numele său sau poziŃia sa într-un sistem de fişiere. Din acest punct de vedere, se poate considera că mv este o operaŃie asupra cataloagelor. • Dacă sursă şi destinatie sunt nume de fişiere obişnuite, atunci intrarea din catalog cu numele sursă dispare şi se creează o intrare cu numele destinatie. • Dacă sursă este nume de fişier obişnuit sau de catalog, iar destinatie este nume de catalog, dispare intrarea sursa şi se creează o intrare cu numele sursa în catalogul destinatie. În acest caz, trebuie să se folosească opŃiune –t. • În situaŃia că sursă este un catalog, prin această comandă întreaga sub-ierarhie sursă îşi schimbă poziŃia. • Dacă intrarea destinaŃie există, ea este suprascrisă. Se poate evita suprascrierea prin utilizarea opŃiunii -i, la fel ca şi la comanda cp. ObservaŃie: Comanda mv nu poate realiza traversarea sistemelor de fişiere în situaŃia în care

50

sursă este un catalog (deci cataloagele nu se pot muta dintr-un sistem de fişiere în altul). Pentru fişierele obişnuite, într-un astfel de caz se creează un alt fişier (se alocă nod index şi blocurile de date necesare) în noul sistem de fişiere.

Exemple. Relativ la structura din figura 2.2.2. ,dacă se tastează: $cd /home/ilflorea/so $mv fis1 fis2

Se va şterge intrarea fis1 din directorul /home/ilflorea/so şi se va crea o noua intrare cu numele fis2 în acelaşi director, care va corespunde unui fişier cu acelaşi conŃinut cu vechiul fis1. Dacă se tastează: $cd /home/ilflorea $mv ./so/fis1 –t ./so/exem/linux

Se crează o nouă intrare în directorul /home/ilflorea/so/exem/linux pentru fişierul fis1 şi se distruge intrarea corespunzătoare din directorul /home/ilflorea/so.Fişierul va păstra vechiul conŃinut.

M2.U2.3. Legături simbolice

Sub sistemele Linux, conceptul de partajare a fişierelor de către mai mulŃi utilizatori este mult mai dezvoltat decât sub alte sisteme de operare. El se sprijină pe conceptele de legătură şi drepturi de acces la fişiere, pe care le vom dezvolta în continuare.

Fiecare utilizator îşi poate construi propria sa structură de directoare şi fişiere în directorul său gazdă. Pentru ca un fişier să poată fi partajat de mai mulŃi utilizatori, el trebuie să aparŃină structurilor corespunzătoare acestora. În acest sens, apare problema ca un fişier să fie fiul mai multor directoare. Pentru a se evita apariŃia de informaŃii redundante despre acel fişier, informaŃiile sunt păstrate într-un director care aparŃine structurii utilizatorului care a creat acel fişier şi în celelalte directoare se crează câte o legătură către fişierul respectiv. De asemenea, în cadrul structurii de fişiere a unui utilizator, atunci când o aplicaŃie lansată dintr-un director, foloseşte un fişier dintr-un alt director, poate utiliza în locul căii către acel fişier o legătură simbolică la acesta.

Există două tipuri de legături: fixe (“hard”), care se creează implicit şi simbolice. Legăturile fixe reprezintă un alt nume dat unui fişier; legăturile simbolice funcŃionează ca scurtaturi (“shortcut”) către un anumit fişier. Legăturile fixe pot funcŃiona la nivelul unui singur sistem de fişiere local, pe când cele simbolice pot lucra peste mai multe sisteme de fişiere. Din aceste cauze, cele simbolice sunt cel mai des folosite.

Crearea unei noi legături pentru un fişier se face cu comanda ln (“link” ), care are sintaxa:

ln [-fs] numecale [legătură] sau:

ln [-fs] numecale... catalog

• Comanda este înrudită cu cp în sensul că produce noi intrări în catalog, dar nu produce şi o copiere fizică a fişierului. • Dacă se foloseşte prima formă sintactică şi sunt prezente ambele argumente (fără opŃiuni), atunci noua intrare de catalog apare sub numele legătură. • Dacă al doilea argument lipseşte, legătura creată în catalogul curent va avea acelaşi nume ca şi ultima componentă din nume_cale. • Dacă se foloseşte a doua formă sintactică, atunci în catalog se creează legături având ca nume ultimele componente din lista de nume_cale.

51

O legătură simbolică este de fapt un fişier text, al cărui conŃinut este nume_cale şi al cărui nume este legătură (sau ultima componentă din nume_cale). Legăturile simbolice pot traversa sistemele de fişiere. Nu se pot crea legături fixe spre un catalog. Doar superutilizatorul poate forŃa această operaŃie prin opŃiunea -f (“force” ).

Exemplu. Relativ la structura din figura 2.2.2. ; dacă se tastează: $cd /home/ilflorea $ln –s /usr/local/bin/fis myfis $ls -l myfis Lrwxrvxrwx 1 ilflorea prof 19 Oct 17 12:02 myfis ->/usr/local/bin/fis

În catalogul gazdă al utilizatorului s-a creat o legătură simbolică, myfis, spre fişierul /usr/local/bin/fis. Se observă că prin comanda ls –l,

lungimea fişierului myfis este afişată a fi 18, ceea ce corespunde cu numărul de caractere din numele de cale dat.

1. CopiaŃi recursiv un director în directorul gazdă. 2. CreaŃi o legătură simbolică din directorul gazdă către un fişier dintr-un alt director

Să ne reamintim...

Copierea unui fişier se face cu comanda cp.Cu opŃiunea –r, se face şi copierea recursivă. Schimbarea numelui (poziŃiei) unui fişier se face cu comanda mv. Sub sistemele Linux conceptul de partajare a fişierelor de către mai mulŃi utilizatori este mult mai dezvoltat decât sub alte sisteme de operare; unul dintre conceptele pe care se sprijină este cel de legătură, prin care un fişier poate fi fiul mai multor directori. Crearea legăturilor la un fişier se face cu comanda ln.

M2.U2.7. Drepturi de acces

Dacă se tastează comanda ls -l cale, pentru fiecare fişier, după primul caracter urmează un grup de 9 caractere, care definesc drepturile de acces la fişierul respectiv. În raport cu un fişier sau director, din punct de vedere al drepturilor, utilizatorii se împart în trei categorii: • proprietarul fişierului, notat cu u ( user). • grupul de utilizatori, notat cu g ( group), cu drepturi specifice, de obicei mai slabe decât

ale proprietarului, dar mai puternice decât ale restului utilizatorilor. • restul utilizatorilor, notat cu o (others), cei care nu sunt în primele două categorii.

Pentru toŃi utilizatorii se foloseşte notaŃia a (all), echivalentă cu combinaŃia ugo.

Exemplu. Presupunem că avem un fişier cu notele studenŃilor dintr-o anumită grupă la o disciplină. Proprietarul fişierului este numele de user al profesorului care a predat disciplina, grupul este format din numele de user ale studenŃilor care au susŃinut examen la disciplina respectivă.

Fiecare utilizator are asociat un identificator unic UID (User Identification), care este un număr natural. De asemenea, grupurile de utilizatori se identifică prin numere numite GID-uri (Group IDentification). Un utilizator aparte, cu drepturi depline asupra tuturor fişierelor este root sau superuserul. Pentru fiecare categorie de utilizatori, fişierul permite trei drepturi:

(i) dreptul de citire, notat cu r (read)

52

(ii) dreptul de scriere, notat cu w (write) care include crearea de subdirectori, ştergerea de subdirectori, adăugarea sau ştergerea de intrări în director, modificarea fişierului etc.

(iii)dreptul de execuŃie, notat cu x (execution) care permite lansarea în execuŃie a unui fişier. Acest drept, conferit unui director, permite accesul în directorul respectiv (cd) .

În consecinŃă, pentru specificarea drepturilor de mai sus asupra unui fişier sau director sunt necesari 9 biŃi. Reprezentarea externă a acestei configuraŃii se face printr-un grup de 9 caractere rwxrwxrwx,în care absenŃa unuia dintre drepturi la o categorie de utilizatori este indicată prin - (minus).

Modul de atribuire a acestor drepturi se poate face cu ajutorul comenzii chmod. Cea mai simplă formă a ei este:chmod mod fisier unde mod poate fi absolut sau simbolic. În cazul absolut, este un întreg reprezentat în sistemul de numeraŃie 8. În reprezentare binară, prima grupă de 3 biŃi indică drepturile proprietarului(user-ului), cea de-a doua indică drepturile grupului, iar cea de-a treia cifră indică drepturile restului utilizatorilor. Corespunzător unei anumite cifre octale, drepturile setate sunt prezentate în tabelul 2.2.1. (simbolul – înseamnă că dreptul respectiv nu este setat).

Număr Permisiune 0 --- 1 --x 2 -w- 3 -wx 4 r-- 5 r-x 6 rw- 7 rwx

Tabelul 2.2.1. Codificarea drepturilor în cifre octale

Modul simbolic este o combinaŃie între literele u,g,o,r,w,x şi semnele + (acordarea unui drept), - (ridicarea unui drept).

Exemple. Comanda: $chmod 755 fis1

fixează pentru fişierul fis1 din directorul curent, toate drepturile pentru user, de citire şi execuŃie pentru grup şi ceilalŃi utilizatorii. În urma acestei comenzi, drepturile asupra fişierului fis1 vor deveni: rwxr-xr-x (în reprezentare binară 755 este 111101101). Pentru a se da grupului de utilizatori drepturi de scriere, se tastează: $chmod g+w fis1 Pentru a se lua grupului de utilizatori drepturile de execuŃie, se tastează: $chmod g-x fis1 Dacă se dă comanda: $chmod a-r fis1 se va lua dreptul de citire al tuturor utilizatorilor.

Drepturi implicite. În momentul intrării în sistem, unui utilizator i se vor acorda nişte drepturi implicite pentru fişiere nou create. Toate fişierele şi directoarele create de utilizator pe durata sesiunii de lucru îl vor avea ca proprietar, iar drepturile vor fi cele primite implicit. Fixarea drepturilor implicite sau aflarea valorii acestora se poate face folosind comanda umask. Drepturile implicite sunt stabilite scăzând (octal) masca definită prin umask din 777. Pentru a se afla valoarea măştii se lansează comanda umask. Rezultatul este afişarea măştii,

53

de regulă 022. Deci drepturile implicite vor fi: 777-022=755, adică userul are toate drepturile, iar grupul şi restul vor avea doar drepturi de citire şi de execuŃie.

Exemplu. Dacă se doreşte schimbarea acestei măşti pentru a da userului toate drepturile, grupului drept de citire şi execuŃie iar restului nici un drept, (corespunzătoare constantei octale 750), se va da comanda $umask 027 (777-027=750). Efectul ei va rămâne valabil până la un nou umask sau până la încheierea sesiunii.

Să ne reamintim... Unul dintre conceptele fundamentale în partajarea fişierelor sub Linux, este cel de acordarea de drepturi privind modul de utilizare al fişierelor. Astfel, se pot seta drepturi de citire, scriere sau execuŃie pentru proprietarul fişierului, pentru un anumit grup de utilizatori şi respectiv pentru restul utilizatorilor. Comanda prin care se pot modifica aceste drepturi este chmod. De asemenea, există comanda umask prin care se pot stabili drepturi implicite.

1.ScrieŃi o comandă chmod prin care, relativ la un fişier să se seteze: toate drepturile pentru proprietar, dreptul de citire pentru grupul de utilizatori şi nici un drept pentru restul utilizatorilor; se va folosi reprezentarea numerică a drepturilor. 2. Folosind reprezentarea simbolică a drepturilor, să se scrie comenzile chmod care să seteze toate drepturile pentru grup şi dreptul de citire pentru restul utilizatorilor. 3. Să se scrie o comandă umask,prin care să se seteze drepturile implicite următoarele: toate drepturile pentru proprietar, drepturi de citire pentru grup, nici un drepr pentru restul utilizatorilor.

M2.U2.8. Căutarea fişierelor într-o structură de directoare

Căutarea se face cu comanda find a cărei sintaxă generală este: find cale criterii [actiune]

cale specifică numele directorului ce reprezintă rădăcina structurii în care se face căutarea. criterii reprezintă specificaŃiile după care se face căutarea. actiune specifică eventuale prelucrări care se fac asupra fişierelor găsite.

Căutarea dupa nume se face cu opŃiunea –name. OpŃiunea -name este “case sensitive”; se foloseşte opŃiunea -iname dacă nu se doreşte să se facă distinŃie între literele mari şi cele mici. În căutarea fişierelor, se pot folosi şabloane şi în acest caz numele de fişier este specificat între apostroafe. Se foloseşte -regex în locul lui -name pentru a face căutarea pentru fişiere al căror nume trebuie să îndeplinească un şablon definit printr-o expresie regulată, concept care îl vom discuta într-un modul următor.

Exemple. $find / -name fisier va lista toate fişierele dintr-un sistem de fisiere (de pe un disc) al căror nume este fisier ; această comandă va căuta în toate directoarele la care este permis accesul; dacă nu este permis accesul se va semnala acest lucru. Dacă nu se doreşte să se facă distinŃie între literele mari şi cele mici, se tastează: $find / -iname fisier

Această comandă va include în rezultatul căutării şi Fisier sau fIsier , de

54

exemplu. În căutarea fişierelor se pot folosi şi şabloane şi în acest caz numele de fişier este specificat între apostroafe. $find / -name ‘fis*’

listează toate fişierele din sistem al căror nume începe cu caracterele `fis’. $find / -name ‘fis???’

listează toate fişierele din sistem al căror nume începe cu caracterele `fis’, urmate de trei caractere oarecare. $ find /home/ilflorea -name ‘*fis*’

listează toate fişierele din din structura care porneşte din directorul /home/ ilflorea cu textul `fis' inclus în nume. $find . -regex `.*\(a1\|a2\).*` listează toate fişierele(inclusiv calea) din structura care porneşte din directorul curent al căror nume contine şirurile `a1` sau `a2` oriunde în numele lor.

Căutarea fişierelor după dimensiune se face cu opŃiunea -size, urmată de un număr natural, opŃional precedat de un semn. Avem trei cazuri: - când este precedat de semnul `+`, rezultatul căutării va fi toate fişierele care au dimensiunea mai mare decât numărul dat; - când este precedat de semnul `-`,vor fi selectate toate fişierele a căror dimensiune este mai mică decât numărul dat; - când nu este specificat nici un semn rezultatul va consta din toate fişierele care au exact aceeaşi dimensiune. Unitatea implicită este blocul de 512 baiŃi; dacă numărul specificat anterior este urmat de caracterul k, respectiv b atunci unitatea de măsură este kilobaitul, respectiv baitul. Se foloseşte opŃiunea -empty pentru a se găsi toate fişierele de dimensiune nulă.

Exemple. $find ~ -size +1000k va lista toate fişierele din structura care porneşte din directorul gazdă care au mai mult de 1000 kilobaiŃi. $find ~ -size -500b va lista toate fişierele din structura care porneşte din directorul gazdă care au o dimensiune mai mică de 500 baiŃi $find / -size 42 va lista toate fişierele din sistem care au o dimensiune de 42 de blocuri a câte 512 baiŃi. $find ~ -empty va afişa toate fişierele vide din structura care porneşte din directorul gazdă.

Căutarea fişierelor după momentul modificării. Pentru a găsi fişiere modificate într-un interval de timp specificat, se folosesc opŃiunile -mtime sau -mmin; argumentul folosit cu -mtime specifică numărul de zile, pe când cel cu –mmin specifică numărul de minute.

Exemple. $find /usr/local -mtime -1

va lista toate fişierele din structura care porneşte din directorul /usr/local care au fost modificate în ultimele 24 de ore. $find /usr -mmin 5

va lista toate fişierele din structura care porneşte din directorul /usr care au fost modificate în ultimele 5 minute.

55

Pentru a specifica un interval de timp, numărul utilizat ca argument, va fi precedat de semnul +, respectiv -, având semnificaŃia selectării tuturor fişierelor pentru care timpul de la ultima modificare este mai mare sau egal, respectiv mai mic sau egal decât argumentul specificat.

Exemple. $find /usr/local -mtime +1 -2

va afişa toate fişierele din structura care porneşte din directorul/usr/local care au fost modificate în ultimele 24 de ore. $find /usr -mmin -5

va lista toate fişierele din structura care porneşte din directorul /usr care au fost modificate în ultimele 5 minute.

OpŃiunea -daystart va specifica faptul că contorizarea timpului se va face începând din ziua curentă, în loc de ziua trecută.

Exemple. $find ~ -mtime 2 -daystart va lista toate fişierele din structura care porneşte din directorul gazdă care au fost modificate de acum două zile. $find /usr -mtime +356 -daystart

va lista toate fişierele din structura care porneşte din /usr care au fost modificate de cel mult un an. $find ~ -mtime 2 -mtime -4 -daystart va lista toate fişierele din structura care porneşte din directorul gazdă, care au fost modificate acum două până la patru zile. În exemplul precedent, am combinat opŃiunile -mtime 2 şi -mtime -4.

OpŃiunea -newer va fi folosită pentru a găsi fişierele mai noi decât un fişier dat.

Exemplu. $find ~ -newer /etc/fis

va lista toate fişierele din structura care porneşte din ~ care au au data de creare mai recentă decât fişierul /etc/fis.

Pentru a căuta fişiere a căror dată de creare este ulterioară unei date specificate, se va folosi comanda touch pentru a introduce acea dată într-un fişier, care va fi argument pentu opŃiunea -newer.

Exemplu. $touch -t 04012010 /tmp/timestamp $find ~ -newer /tmp/timestamp va căuta toate fişierele din structura care porneşte din directorul gazdă care au fost modificate după 1 aprilie 2010.

OpŃiunea –used este folosită pentru a găsi fişiere accesate după un număr de zile de la ultima modificare.

Exemplu. $find ~ -used +100 va căuta fişierele din structura care porneşte din directorul gazdă care au fost accesate după cel puŃin 100 de zile de la data ultimei modificări.

56

Căutarea fişierelor după proprietar. Cu opŃiunea –user, respectiv –group se pot căuta fişiere care aparŃin unui anumit utilizator, respectiv unui grup de utilizatori.

Exemplu. $find /usr/local/fonts -user florea

va lista toate fişierele din structura care porneşte din /usr/local/fonts care aparŃin utilizatorului florea. $find ~ -group info va lista toate fişierele din structura care porneşte din directorul ~ al căror proprietar este grupul info.

ExecuŃia de comenzi asupra fişierelor căutate se realizează cu opŃiunea -exec care are ca argument o anumită comandă. Sfârşitul comenzii este marcat de caracterele ‘;’. Dacă se foloseşte şirul '{}' în cadrul comenzii, acesta este înlocuit cu numele de fişier care a fost găsit

Exemple. $find . -name ’’*fis*’’ -exec rm ‘{}’ ‘;’;

va şterge toate fişierele care în numele lor conŃin subşirul fis, situate în directorul curent sau în subdirectoarele acestuia. $find ~/html/ -name '*.html' -exec grep linux `{}` `;`

va găsi toate fişierele din structura care porneşte din directorul ~/html/ cu extensia .html şi va afişa liniile din aceste fişiere care conŃin textul `linux’ . Pentru a se realiza comanda respectivă cu confirmare, se foloseşte -ok în locul lui -exec. $find ~ -used +365 -ok rm `{}` `;` va găsi toate fişierele din structura care porneşte din directorul gazdă, care au fost accesate la mai mult de un an de când au fost modificate şi va aştepta confirmarea înainte de ştergere.

Căutarea fişierelor după tip se face cu opŃiunea -type c ; rezultatul este “true” dacă tipul fişierului este c, un caracter care poate fi: f - fişier simplu; d - catalog; b - fişier special bloc; c - fişier special caracter; p - “pipe” (canal) cu nume; s - “socket” (pentru comunicarea în reŃea).

Exemplu. Pentru a lista numărul fişierelor din structura care porneşte din directorul gazda se tastează: $find ~ \! -type d|wc -l Observăm legarea în pipe a comenzilor şi utilizarea operatorului de negare. $ find /usr/share -type d | wc –l va lista numărul directoarelor din structura care porneşte din directorul /usr/share.

Căutarea fişierelor după mai multe criterii. Se pot combina mai multe opŃiuni pentru a se găsi fişierele care îndeplinesc criterii multiple.

Exemple. $find ~ -name 'fis*' -newer /etc/ultmod va lista fişierele din structura care porneşte din directorul gazdă al căror nume începe cu şirul `fis’şi care sunt mai noi decât fişierul /etc/ultmod $find ~ -size +2000000c -regex '.*.[^gz]' -exec gzip '{}' ';' va comprima toate fişierele din structura care porneşte din directorul gazdă şi care au o dimensiune de cel puŃin 2 megabaiŃi şi care nu au fost comprimate folosind comanda gzip .

57

Alte optiuni:

a) -perm onum - “true” dacă drepturile de acces la fişier corespund exact numărului octal onum. b) -print - întotdeauna adevărată, are ca efect afişarea numelui fişierului curent (care corespunde unui criteriu de căutare anterior specificat); c) -ls - întotdeauna adevărată, are ca efect afişarea numelui de cale al fişierului curent şi informaŃii suplimentare despre acesta (analog comenzii ls -li); d) -prune - întotdeauna adevărată, are ca efect oprirea căutării la numele de cale curent, dacă acesta este catalog (nu se caută recursiv);

1.ScrieŃi o comandă find care să şteargă toate fişierele din sistem care au fost create anterior unei date specificate. 2. ScrieŃi o comandă find care să copieze într-un director dat toate fişierele din structura de directoare şi fişiere a utilizatorului care au o dimensiune mai mare de 10 Mb. 3. ScrieŃi o comandă find care să afişeze numele tuturor fişierelor director din structura de directoare şi fişiere a utilizatorului.

Să ne reamintim...

Comanda find oferă utilizatorilor sistemelor Linux posibilitatea căutării fişierelor, într-o anumită structură, pe baza unor argumente exprimate prin opŃiunile comenzii. Astfel se pot face căutări după numele fişierului, după data creerii, după dimensiune etc. De asemenea, se pot specifica comenzi care să prelucreze rezultatu căutării.

M2.U2.9. Test de evaluare a cunoştinŃelor. MarcaŃi varianta corectă.

1. Prin care opŃiune a comenzii de creare de directoare, atunci când se specifică argumentl o cale, se crează şi directoarele din calea respectivă: a) -d c) –p b) -f d) -r

2. Ştergerea unui catalog vid se face cu comanda: a) rmd c) rmdir b) rm d) rmpdir

3. Ştergerea unei structuri de directoare si fişiere, se face cu comanda (opŃiunea): a) rm (-r) c) rmdir (-r) b) rmdir (-p) d) rm (-p)

4. Cu ce opŃiune a comenzii ls, listarea se face în ordinea ultimei modificări a modului de acces la fişier: a) –a c) -c b) - r d) -l

5. Care comanda realizeză concatenarea fişierelor: a) cp c) ct b) copy d) cat

6. Ce tip de redirectare a intrărilor şi ieşirilor crează o structură specială care este ieşire pentru o comandă şi intrare pentru altă comandă: a) Notată cu >>. c) conductă b) Notată cu &>. d) socket

7. Cum se procedează pentru a nu se afişa mesajul de eroare al unei comenzi:

58

a) se redirectează ieşire fişierului de erori către /dev/null

c) se redirectează ieşire fişierului de erori către /etc/null

b) se redirectează ieşire fişierului de erori către /proc/null

d) se redirectează ieşire fişierului de erori către /usr/null

8. Ce sintaxă foloseşte redirectarea în acelaşi timp a lui stderr şi stdout : a) @> c) $> b) &> d) #>

9 Argumentul unei comenzi chmod care indică modul de setare a drepturilor, poatefi: a) o constantă octală formată din trei cifre

c) o constantă hexazecimală formată din trei cifre

b) o constantă zecimalălă formată din trei cifre

d) o constantă binară formată din trei cifre

10. OpŃiunea utilizată în cadrul unei comenzi find, pentru a se căuta fişere numai în directorul indicat ca argument, este: a) -local c) -prune b) -dir d) - proc

M2.U2.10. Rezumat. Linux oferă o mulŃime de comenzi pentru manipularea structurilor de directoare. Astfel, există comenzi pentru creearea directoarelor, afişarea directorului curent, schimbarea directorului curent sau modificarea poziŃiei curente în ierarhia de directoare, ştergerea unui catalog vid sau ştergerea mai multor fişiere sau directoare, afişarea conŃinutului unui catalog. Redirectarea intrărilor şi ieşirilor este un mecanism prin care se modifică fişierele standard de intrare şi/sau de ieşire ale unei comenzi. Acest mecanism este util atunci cind iesirea unei comenzi este intrare pentru o altă comandă. Un alt fişier standard care poate fi redirectat este cel de erori; de exemplu, când se doreşte păstrarea tuturor erorilor într-un fişier, acesta este redirectat cu ieşire şi adăugare la sfârşit într-un alt fişier. Când nu ne interesează mesajul de eroare al unei comenzi atunci ieşirea este fişierul nul. Legarea in pipe a comenzilor utilizează o structură specială, cu acelaşi nume, care pentru o comandă este fişier de intrare, iar pentru alta de ieşire. Sub sistemele Linux conceptul de partajare a fişierelor de către mai mulŃi utilizatori este mult mai dezvoltat decât sub alte sisteme de operare; unul dintre conceptele pe care se sprijină este cel de legătură, prin care un fişier poate fi fiul mai multor directori. Crearea legăturilor la un fişier se face cu comanda ln. Un alt concept fundamental în partajarea fişierelor sub Linux, este cel de acordarea de drepturi privind modul de utilizare al fişierelor. Astfel, se pot seta drepturi de citire, scriere sau execuŃie pentru proprietarul fişierului, pentru un anumit grup de utilizatori şi respectiv pentru restul utilizatorilor. De asemenea, se pot stabili drepturi implicite. Sub Linux posibilitatea căutării fişierelor, într-o anumită structură, pe baza unor argumente. Astfel se pot face căutări după numele fişierului, după data creării, după dimensiune etc. De asemenea, se pot specifica comenzi care să prelucreze rezultatul căutării. Această facilitate este utilă administratorilor, atunci când vor să obŃină informaŃii despre ocuparea discurilor cu diverse fişiere.


Recommended