Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Accesul la fisiere (filiera comenzilor de sistem)

linux



+ Font mai mare | - Font mai mic



Accesul la fisiere (filiera comenzilor de sistem)

Utilizatorii cu mai multa experienta vor dori sa controleze mai profund operatiile cu fisiere pe care intentioneaza sa le efectueze si sa beneficieze de avantajele comenzilor puse la dispozitie de sistem. In fapt, aceasta e maniera "clasica" in care un utilizator UNIX/ Linux are acces la resurse, prin prisma sistemului de fisiere.



Specificatori

Inainte de a vedea cateva dintre cele mai frecvent folosite comenzi, mentionam faptul ca interpretorul de comenzi permite utilizatorului sa faca referire la mai multe fisiere simultan via specificatori de sisteme. In loc de a furniza numele complet al unui fisier, vom putea utiliza urmatoarele meta-caractere (wildcards )pentru a inlocui parti din numele unui fisier:

  • simbolul "?" va inlocui un singur caracter, pe pozitia in care apare;
  • simbolul "*" va inlocui un numar de zero, unu sau mai multe caractere;
  • expresia "[caractere va functiona ca un interval,numele de fisier potrividu-se cu caracterele furnizate. -este specifica sistemelor Unix

De exemplu, specificatorul pi?[0-9]*va putea desena nume de fisiere care incep cu caracterele "p"si "i" urmate de oricare alt caracter, apoi de una din cifrele de la 0 pana la 9,eventual fiind succedat de oricare alte caractere. Astfel, acest specificator se poate potrivi cu nume precum pin7 sau piu2004.txt,dar nu cu pinguin3.

Intre delimitatori "[]"mai poate sa apara meta-caracterul "|"indicand o alternativa si meta-caracterul "!" reprezentand negatia. Astfel, pentru a specifica toate fisierele care incep cu litera "d", urmata de orice caracter diferit de "a" sau "c", apoi de alte caractere, vom putea scrie "d[!ac]*".

Informatii despre fisiere

Cum directoarele stocheaza, fiind ele insele fisiere, vom incepe cu prezentarea comenzilor referitoare la directoare. Principale comenzi sunt:

mkdir cale-creeaza un director;

rmdir cale-sterge un director gol, in sensul ca acesta nu contine decat intrarile "." si "..";

cd [cale schimba directorul curent de lucru in cale;

pwd-afiseaza numele directorului curent (utila atunci cand ne-am "ratacit" prin hatisul structurii de directoare).

Argumentul cale reprezinta o cale de directoare separate de caracterul slash " de exemplu,/tmp/arhive/03feb sau .. /Documents/linux

Afisarea continutului unui director se obtine in urma apelarii comenzii ls. Aceasta ofera mai multe optiuni, dintre care le mentionam pe cele mai importante:

-a listeaza si fisierele ascunse(cele ale caror nume incepe cu caracterul ".");

-l afiseaza formatul lung continand informatii suplimentare, cum ar fi cele referitoare la drepturile de acces, proprietar si grup, dimensiunea, data crearii etc.;

-h are urmatorul efect: dimensiunile fisierelor sunt transformate din octeti in kilo-octeti(K)sau mega-octeti(M) pentru a fi mai usor citite de utilizator;

-R va lista si sub-directoarele, in mod recursiv(aceasta optiune va putea fi folosita si in cazul altor comenzi).

O comanda poate avea un numar variabil de parametri(argumente)si de optiuni prefixate de caracterul "- (se poate utiliza si varianta explicita a unei optiuni, prefixata de caracterele "- -

Cum majoritatea comenzilor pot accepta un numar impresionant de optiuni, avizam cititorul ca o practica buna este aceea de a consulta manualul oferit de sistem via comenzile man sau info(a se vedea sectiunea 5.3 a capitolului 5).

Urmeaza un exemplu de folosire a comenzii ls:

(infoiasi) ls -la

total 3416

drwxrwxr -x 4 busco busaco 4096 Dec 21 14:57.

drwxr-xr-x 3 busaco busaco 4096 Oct 27 10:24..

rw - - - - - - - 1 busaco busaco 5422 Oct 13 19:19 acronime.tex

-rw - - - - - - - 1 busaco busaco 43591 Oct27 19:00 biblio.tex

drwxrwxr-x 2 busaco busaco 4096 Oct27 10:26 eps /

-rw-r- -r- - 1 busaco busaco 2194474 Oct27 19:00 main.ps

-rw- - - - - - - 1 busaco busaco 5225 Oct24 19:21 main.tex

-rw- - - - - - - 1 busaco busaco 811 Sep10 2001 Makefile

-rw- - - - - - - 1 busaco busaco 1650 Oct16 12:51 multum.tex

-rw- - - - - - - 1 busaco busaco 17 Aug22 16:10 rezumat.tex

-rw-rw-r- - 1 busaco busaco 708449 Dec15 19:44 teza.tgz

drwxr-xr-x 3 busaco busaco 4096 Oct27 19:01 versions /

-rw- - - - - - - 1 busaco busaco 651 Sep10 2001 wmchap.sty

Apelul de forma ls -la este echivalent cu ls -l -a.In general, mai multe optiuni care nu sunt succedate de parametri suplimentari pot fi grupate ca si cum ar fi o singura optiune(se utilizeaza o singura data caracterul "- pentru specificarea optiunilor).

Dupa cum se observa din iesirea furnizata de comanda ls, numele fiecarui fisier este prefixat de numele de cont al proprietarului si grupul din care face parte acest proprietar. Filosofia UNIX / Linux precizeaza faptul ca fiecare fisier apartine cuiva. Un identificator (UID) numeric asociat celui care poseda fisierul (de obicei cel care l-a creat)este stocat pentru fiecare fisier in parte. Aceste aspecte vor fi dezvoltate in capitolul 4.

Drepturile de acces sunt afisate de comanda mentionata mai sus printr-o secventa de zece caractere. Primul caracter se refera la tipul fisierului, dupa cum urmeaza:

- - fisier obisnuit;

b-fisier special de tip bloc;

c-fisier special de tip caracter;

d-director;

l-legatura;

p-pipe;

s-socket.

Dupa cum am vazut ,fiecare fisier are asociate anumite drepturi de acces, numite si permisiuni. Le putem vedea in coloanele 2-10 din ceea ce afiseaza ls -l.

Cele trei drepturi asociate celor trei categorii (utilizator,grup,altii) sunt:

r-citire(Read);

w-scriere(Write);

x-executie(eXecute).

Ele arata daca un fisier poate fi citit, modificat sau, respectiv, executat(pentru fisiere de tip director poate fi cautat)de utilizator.

Ca exemplu concret sa luam un fisier avand permisiunile:

r-x-w- - -x

_/ _/

restul lumii (others)

__ grupul (group)

___ posesorul (user)

Acest lucru specifica urmatoarele

posesorul fisierului poate citi si executa acest fisier, dar nu il poate modifica

utilizatorii din grupul fisierului pot modifica acest fisier insa nu il pot citi sau executa

ceilalti utilizatori pot doar executa fisierul, dar nu il pot citi sau modifica.

De asemenea, fisierele mai au trei atribute speciale. Acestea se numesc:SUID, SEGID si Sticky (lipicios), semnificatia lor fiind:

SUID (Set User ID):un fisier cu acest atribut setat arata faptul ca executia sa da nastere unui proces care are proprietar pe posesorul fisierului, si nu pe posesorul procesului care executa fisierul(de exemplu, comenzi ca passwd sau cehfn pot fi executate si de utilizatori obisnuiti, cu toate ca au acces la resurse privilegiate ale sistemului-fisierele etc/ passwd si etc / shadow

O permisiune SUID setata este indicata de comanda ls -l printr-un s in loc de "x

(infoiasi) ls -l /usr/bin/chfn-rws - -x- -x 1 root root 13184 Aug 31 2003 /usr/bin/chfn

SGID(Set group ID) are o functie similara, actionand asupra grupului procesului.

Aceste doua permisiuni nu au sens decat daca fiserul este executabil.

Sticky (lipicios), afisat prin caracterul "t", pentru directoare indica faptul ca in directoarele in care oricine poate scrie (e.g.,/tmp), teoretic, oricine poate sterge orice fisier. Asociind o permisiune lipicioasa pe un astfel de director, vom permite stergerea unui fisier doar de catre proprietarul lui.

Un exemplu (optiunea d a comenzii ls este necesara pentru a lista drepturile directorului / tmp, si nu pe cele ale tuturor fisierelor in el) ar fi:

(infoiasi) ls -ld / tmp

drwxrwxrwt 3 root root 1024 Jul 26 00:10 / tmp /


permisiunea sticky

Modificarea drepturilor se realizeaza prin intermediul comenzii chmod. Pentru proprietar, se utilizeaza litera "u" pentru grup "g", iar pentru alti utilizatori "o Pentru acordarea, respectiv revocarea drepturilor indicate mai sus corespund caracterele "+", respectiv "-". De exemplu, daca se doreste sa se acorde drepturi de citire grupului caruia ii apartine utilizatorul pentru fisierul cv. Html, se va scrie

(infoiasi) chmod g+r cv. html

Anularea drepturilor de executie si scriere pentru grup si proprietar se va realiza prin:

(infoiasi) chmod ug-wx cv. html

Pentru a da dreptul de executie tuturor categoriilor de utilizatori (proprietar, grup si altii), se foloseste:

(infoiasi) chmod +x cv. html

Mai exista o modalitate de modificare a drepturilor, relativ mai complicata, dar care ar fi preferata de matematicieni si informaticieni. Fiecarui grup de drepturi i se asociaza un numar dupa cum urmeaza: fiecarui drept acordat ii corespunde valoarea 1, iar pentru fiecare drept anulat -0. Astfel, rezulta un numar de trei cifre binare care se transforma apoi in baza 8 (octal).

De exemplu, pentru rw- asociem 110, care in octal este 6. Drepturile rwxr-xr- - si rwx- -x- -x vor corespunde valorilor 751 si, respectiv, 711. Stabilirea drepturilor de citire, scriere pentru utilizator si grup si de citire pentru ceilalti ce realizeaza astfel

(infoiasi) chmod 664 cv. html

Pentru modificarea proprietarului se utilizeaza comanda chown

(infoiasi) chow busaco cv. html

Aceasta comanda permite simultan si schimbarea grupului:

(infoiasi) chown busaco : profs cv. html

(infoiasi) chown www : nobody /home /httpd/cgi-bin/*

Comanda chgrp modifica grupul unui fisier:

( infoiasi) chgrp studs cv .html

O alta comanda utila este file. Aceasta incearca sa determine tipul unui fisier:

( infoiasi ) file /Documents/ex/*

DESIGN.JPG : JPEG image data, JFIF standard 1. 01,

resolution (DPI),72x72

eps: directory

export.tx: ASCII English text, with wery long lines

file-ex: ASCII text

index2.cgi.html: HTML document text

main.ps:  PostScript document text conforming at level 2.0

main.tex: ASCII English text

Makefile:  ASCII make commands text

multum.tex: ASCII text

prog:  ELF 32-bit LBS executable, Intel 80386, version 1(SYSV), for GNU/Linux

2.2.5,dynamically linked (uses shared libs),stripped

sigla.gif: GIF image data, version 89a, 40x40

teza.tgz:  gzip compressed data, from Unix

typescript: ASCII text, with CRLF, LF line terminators

In acest exemplu, observam ca file "ghiceste" diverse tipuri de fisiere, precum cele text (scrise eventual in limba engleza), grafice sau executabile. In functie de tip, se pot oferi si diverse alte detalii folositoare.

O comanda care prezinta interes este si stat scopul ei fiind cel de afisare a diferitelor informatii despre fisiere.

In exemplul de mai jos, aflam informatii privitoare la directorul home al unui utilizator:

( infoiasi stat

File : "/ home/dragos"

Size: 2048 Filetype: Directory

Mode: / drwxr-xr-x)

Uid: / dragos) Gid: ( 202/profs)

Device:8 , 0 Inode: 79576 Links: 13

Access : Tue Nov 23 12 :43 :30 2004 . 00 :02 :12)

Modify :Tue Nov 23 12 :43 :31 2004(00000.00 :02 :11)

Change :Tue Nov 23 12 :43 :31 2004( 00000.00 :02 :11)

Comanda du afiseaza dimensiunile tuturor sub-directoarelor din directorul curent sau dintr-un director precizat. Se pot utiliza urmatoarele optiuni:

-h: dimensiunilor sunt scrise in kilo-octeti sau mega-octeti pentru a fi cat mai usor citite de utilizator.

-s: se va afisa doar dimensiunea directorului curent.

-a: listeaza dimensiunile fisierelor

Un exemplu ar fi

( infoiasi du /usr/lib/xine/

228K /usr/lib/xine/plugins/ 1.0.0./post

204K /usr/lib/xine/plugins/1.0.0./vidix

4, 9M /usr/lib/xine/plugins/1.0.0

4, 9M /usr/lib/xine/plugins

4, 9M /usr/lib/xine

Comanda df listeaza informatii privitoare la spatiul liber al partitiilor de disc.Aceasta comanda are aceleasi optiuni ca si comanda du.

( infoiasi) df

Filesystem 1k-blocks Used Available Use% Mounted on

/dev/sda3 3660632 2095384 1379296 61% /

/dev/sda2 132221 58245 67149 47% /boot

/dev/sda10 5542276 3780012 1480728 72% /home

/dev/sdb2 16500568 5962680 9699700 39% /home/profs

none 385840 0 385840 0% /dev/shm

/dev/sda5 489992 8382 456310 2% /tmp

/dev/sda6 988212 198788 739224 22% /var

/dev/sda7 988212 334756 603256 36% /var/log

/dev/sda9 3945128 961368 2783352 26% /var/spool/mail

/dev/sda8 743132 23148 68223 64% /var/spool/mqueue

Varianta grafica a comenzilor df si du se regaseste in meniul KDE sub numele utilitarului KdiskFree (care poate fi apelat prin kdiskfree).

Aceste comenzi sunt utile mai ales cand apar probleme cu spatiul de pe disc.

O alta utila poate fi tree, care afiseaza structura arborescenta a directoarelor. De exemplu, pentru a obtine sub-directoarele directorului "/", vom putea folosi:

(infoiasi) tree /-d-L 1

/

|--bin

|--boot

|--dev

|--etc

|--home

|--initrd

|--lib

|--mnt

|--opt

|--proc

|--root

|--sbin

|--tmp

|--usr

|--var

15 directories

Operatii cu fisiere

Nu am uitat de comenzile pentru realizarea operatiunilor de baza cu fisierele. A sosit vremea sa le mentionam succint:

  • cp - realizeaza copierea unui fisier sau grup de fisiere, sintaxa uzuala a comenzii fiind: cp sursa destinatie.
  • -mv - muta/ redenumeste fisiere, avand aceeasi sintaxa ca si cp;
  • ln-cu sintaxa ln sursa destintie - permite unui fisier sa aiba un nume complementar( mai multe nume de fisiere pot desemna acelasi fisier; legaturile pot fi hard ( se creeaza si o copie a continutului fisierului; la stergerea copiei, fisierul original este pastrat)sau soft(legatura simbolica va contine doar calea catre fisierul sursa; stergerea copiei determina si stergerea originalului); a se parcurge si cele descrise in sectiunea 2.1;

Pentru a crea o legatura simbolica, vom introduce o linie de genul:

( infoiasi) ln -s capitol3.txt../../copie/capitol3-0221.txt

rm- sterge fisiere, avand sintaxa rm fisier( e).

Atentie! Fisierele sterse nu pot fi recuperate in nici un mod!

Pentru toate comenzile de mai sus, exista o serie de optiuni folositoare

-f- forteaza indeplinirea actiunii, fara confirmare din partea utilizatorului sau ignorand erorile care pot surveni

-i- mod interactiv, interogand utilizatorul daca intr-adevar doreste sa realizeze ceea ce s-a simplificat (utilizati-o mai ales la rm);

-v- afiseaza mai multe informatii la executia comenzii respective

-R- mod recursiv, comanda executandu-se asupra tuturor sub-directoarelor (foarte periculoasa daca apare la rm, mai ales impreuna cu optiunea -f).

Urmeaza un exemplu de folosire a comenzii rm (dorim sa stergem interactiv o serie de fisiere temporare, al caror nume se termina cu caracterul tilda ):

( infoiasi) ls

apropos-ex~ mfile-ex~ ls-ex~ mount-ex~

( infoiasi rm -i

rm: remove regular file 'apropos-ex~'? y

rm: remove regular file 'file-ex~'?y

rm: remove regular file 'ls-ex~ '?n

rm: remove regular file 'mount-ex~ '?y

( infoiasi ls

ls-ex~

Cautarea sofisticata a fisierelor este posibila cu ajutorul comenzii find Asupra fisierelor gasite se pot efectua si diverse operatii (de exemplu, executia unor comenzi).Cautarea se va realiza pornind de la un anumit director care va fi explorat conform criteriilor de cautare alese.

Sintaxa generala a comenzii find este:

find [cale] [expresie] [actiune

Componenta cale reprezinta calea de directoare de la care se va incepe cautarea, expresie semnifica o expresie definind criteriul de cautare, iar actiune specifica actiunea care va fi efectuata la gasirea unui fisier.

Cautarea se poate realiza dupa :

  • numele unui fisier-se foloseste optiunea -name specificator, in care specificator reprezinta un specificator de fisier(se pot utiliza, desigur, meta-caracterele de substitutie,precum: *"sau
  • tipul unui fisier-se foloseste optiunea -type tip, unde tip pate fi unul dintre caracterele :f (fisier obisnuit),d(director),l( legatura simbolica) etc. ;
  • numele proprietarului-se utilizeaza optiunea-user nume,unde nume poate fi numele sau UID-ul proprietarului fisierului ;
  • grupul proprietarului-se foloseste-group nume, unde nume poate fi un nume de grup sau un GID.

Exista o multitudine de alte optiuni care pot compune o expresie de cautare ;pentru amanunte,parcurgeti paginile de manual dedicate comenzii find.

Ca actiune executata la gasirea unui fisier, putem avea :

  • afisarea numelui fisieului gasit-se foloseste optiunea-print(implicita)
  • executia unei comenzi-se utilizeaza optiunea-exec.Sirul de caractere va substitui numele fisierului gasit si va putea fi dat ca argument al comenzii care va fi executata. Vom sfarsi lista argumentelor paste comenzii cu caracterul ";".

De exemplu, cautarea tuturor imaginilior GIF din contul utilizatorului curent se va putea face astfel :

( infoiasi)s find ~ -name '*gif' -print

Identificare fisierelor utilizatorului dragos din directorul /tmp se va putea realiza prin linia:

( infoiasi) s find /tmp -user dragos -print

Pentru a sterge toate fisierele temporare (al caror nume este terminat cu .bak sau ~), vom putea da urmatoarea comanda:

find / -name * . bak -o -name *~ -exec rm "" ";"

S-au utilizat ghilimelele pentru ca interpretorul de comenzi sa nu intercepteze gresit caracterele speciale ""sau ";".Optiunea -o semnifica operatorul logic sau (or).Pot fi precizati si operatorii si (and) prin -a si negatie (not)prin caracterul "!".

Am discutat mai sus de utilitarul mtools FM . Aceleasi functionalitati se regasesc sub o serie de comenzi, foarte asemanatoare comenzilor uzuale din DOS pentru accesarea dischetelor formatate FAT. Discheta va fi accesibila prin numele a:, exact ca in DOS, insa pentru fisierele stocate de sistemul Linux se vor aplica regulile acestuia (a se revedea sectiunea 2.1 a capitolului de fata).

Fiecare comanda din pachetul mtools are numele prefixat cu litera m. Astfel, pentru operatiile de copiere, redenumire, stergere de fisiere, vor putea fi folosite comenzile mcopy ,mren si, respectiv,mdel.Pentru schimbarea unui director de pe discheta se va utiliza mcd, iar operatiile uzuale cu directoaare vor fi realizate via comenzilor mmd (creare de director)si mrd (stergere de director). Formatarea unei dischete ca discheta DOS se va face prin comanda mformat.

Pentru a vizualiza continutul unei dischete, vom putea introduce (pentru fisierele avand nume lungi va fi listat si numele scurt DOS, compus din 8 caractere plus 3caractere extensia):

(infoiasi) mdir

Volume in drive A has no label

Volume Serial Number is C06E-ECE2

Directory for A:/

TEZA -M~1 TGZ 708449 2003-12-15 19:48 teza-main. Tgz

bk <DIR> 2003-12-15 19:49 bk

2 files 708 449 bytes

936 bytes free

Vom copia toate fisierele stocate intr-un director local pe discheta, apoi vom sterge intreg continutul directorului bk2:

(infoiasi) mcopy ~/Documents/linux-book/* a:

(infoiasi) mdel a:/bk/*

(infoiasi) mmd a:/bk2

La final, reafisam continutul sistemului de afisare FAT stocat de discheta:

(infoiasi) mdir

Volume in drive A has no label

Volume Serial Number is C06E-ECE2

Directory for A:/

TEZA-M~1 TGZ 708449 2003-12-15 19:48 teza-main. Tgz

bk <DIR> 2003-12-15 19:49 bk

jobs-ex 118 2003-12-23 13:46 jobs-ex

ps2-ex 473 2003-12-23 13:46 ps2-ex

ps-ex  128 2003-12-23 13:46 ps-ex

ps-ex~ 128 2003-12-23 13:46 ps-ex~

TYPESC~1 0 2003-12-23 13:48 typescript

bk2   <DIR> 709 821 bytes

10 files 744 960 bytes free

Desigur, exista la dispozitia utilizatorului si alte comenzi privitoare la fisiere, o parte dintre ele aparand pe parcursul cartii.

Comenzile principale de vizualizare si editare a continutului fisierelor text vor fi descrise in cadrul capitolului 9,iar capitolele 12 si 13 se vor ocupa de fisierele grafice si cele multimedia.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 935
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved