06.09.2014 Views

Lucrarea 1 Introducere în Linux

Lucrarea 1 Introducere în Linux

Lucrarea 1 Introducere în Linux

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Lucrarea</strong> 1<br />

<strong>Introducere</strong> <strong>în</strong> <strong>Linux</strong><br />

Un calculator pe care rulează un sistem de operare <strong>Linux</strong> poate fi utilizat de mai mulţi<br />

utilizatori simultan, fiind un sistem multi-utilizator. De asemenea, un utilizator poate rula<br />

simultan pe un astfel de sistem mai multe programe, <strong>Linux</strong> fiind şi un sistem multi-proces<br />

sau multi-tasking. Scopul unui sistem multi-utilizator este să creeze fiecărui utilizator<br />

iluzia că este singurul care utilizează sistemul 1 . Pentru aceasta, fiecărui utilizator îi este<br />

asignat un cont desemnat printr-un nume. Din motive evidente de securitate, fiecare cont<br />

are asociată o parolă.<br />

Conectarea la sistem<br />

Având <strong>în</strong> vedere toate cele spuse mai sus, pentru a putea folosi un calculator pe care<br />

rulează <strong>Linux</strong>, mai <strong>în</strong>tâi trebuie <strong>în</strong>cepută o sesiune de lucru. Deci, <strong>în</strong> momentul <strong>în</strong> care<br />

apare un prompt de forma:<br />

login as:<br />

trebuie să introduce-ţi numele contului, după care vi se va cere să introduceţi şi parola:<br />

login as:gigel<br />

gigel@hostname's password:<br />

Operaţia de introducere a parolei este fără ecou 2 , tot din motive de securitate. Dacă fie<br />

numele, fie parola sunt incorecte 3 vi se va cere să introduceţi din nou parola, după un<br />

mesaj de eroare:<br />

login as:gigel<br />

gigel@hostname's password:<br />

Access denied<br />

gigel@hostname's password:<br />

Dacă aţi fost <strong>în</strong>să autentificaţi, sistemul vă va oferi câteva informaţii, precum ar fi data şi<br />

ora ultimei conectări, ce fel sistem de operare rulează, după care apărând promptul<br />

1 Cu excepţia comenzilor care îl ajută să vadă cu cine şi <strong>în</strong> ce fel partajează sistemul.<br />

2 Aceasta <strong>în</strong>semnând că, indiferent de numărul şi caracterele tastate, pe ecran nu se va vedea nimic.<br />

3 Atenţie! <strong>Linux</strong>-ul este "case sensitive", făcând distincţie <strong>în</strong>tre majuscule şi minuscule.


interpretorului de comenzi (sau "shell 4 ") care aşteaptă prima dumneavoastră comandă<br />

<strong>Linux</strong>:<br />

gigel@hostname:~$ exit<br />

În acest caz, efectul comenzii exit va fi terminarea sesiunii.<br />

Obţinerea de informaţii<br />

În această secţiune sunt prezentate cele mai importante comenzi, cele care vă permit să<br />

obţineţi informaţii detaliate despre o comandă, funcţie sau fişier. O să <strong>în</strong>cep cu comanda<br />

care vă permite accesul la manualul online. Pentru aceasta, tastaţi man urmat de numele<br />

comenzii. Puteţi de exemplu să <strong>în</strong>cercaţi:<br />

$ man man 5<br />

O să aveţi surpriza, poate, să vedeţi că informaţiile pe care le oferă man despre comanda<br />

man se <strong>în</strong>tind pe aproape trei pagini. Pentru a ieşi, apăsaţi tasta Q (sau q).<br />

Dacă doriţi numai o scurtă descriere a comenzii puteţi folosi comanda<br />

$ whatis<br />

care caută numai <strong>în</strong>tr-o bază de descrieri (whatis database). Acelaşi efect îl are şi man<br />

împreuna cu opţiunea f:<br />

$ man –f whatis<br />

În schimb, dacă nu vă aduceţi aminte numele comenzii puteţi să o căutaţi folosind un<br />

cuvânt relevant pentru ce ar trebui să efectueze respectiva comandă puteţi folosi man cu<br />

opţiunea –k sau comanda :<br />

$ apropos<br />

Un alt mod de a obţine informaţii îl oferă comanda help, care oferă numai informaţii<br />

despre comenzile "<strong>în</strong>capsulate" <strong>în</strong> shell. Sintaxa acestei comenzi este:<br />

help [-s] [şablon …] 6<br />

4 Cel mai probabil, interpretorul este Bourne Again Shell (bash). Alte shell-uri sunt: sh (cunoscut ca Bourne<br />

shell), C shell (sau csh), Korn shell (ksh). După cum sugerează şi numele, bash este o reimplementare a lui<br />

sh.<br />

5 În continuare, promptul va fi desemnat numai prin $, chiar dacă <strong>în</strong> realitate nu va fi <strong>în</strong>totdeauna aşa.<br />

Aceasta <strong>în</strong>seamnă că $ este deja prezent, ne mai fiind nevoie de tastarea lui.<br />

6 Parantezele drepte semnifică faptul că respectivul element de sintaxă este opţional, iar … indică faptul că<br />

elementul anterior poate fi repetat.


Dacă se specifică cel puţin un şablon, comanda help oferă informaţii detaliate despre<br />

toate comenzile care se potrivesc şablonului. Opţiunea s limitează volumul de informaţii<br />

afişate.<br />

Un alt mod <strong>în</strong> care se pot afla informaţii despre o comandă este folosind-o <strong>în</strong> mod<br />

incorect, de exemplu împreună cu opţiunile xyz:<br />

$ comandă -xyz<br />

Această combinaţie este puţin probabil să fie validă, aşa că răspunsul poate să fie de<br />

forma:<br />

comandă: invalid option – x<br />

Try 'comandă --help' for more information.<br />

Obţinerea de informaţii despre utilizatorii conectaţi<br />

În caz că aţi uitat deja, sistemul vă poate răspunde cine sunteţi 7 . Pentru aceasta trebuie să<br />

tastaţi:<br />

$ whoami<br />

Dacă, din greşeală sau nu, veţi tasta:<br />

$ who am i<br />

sistemul vă va oferi ceva mai multe informaţii, pe lângă nume spunându-vă ce fel de<br />

terminal folosiţi şi, ce-i mai important, de unde şi de când v-aţi conectat.<br />

Un alt mod de a afla cine sunteţi vi-l oferă comanda id care vă spune care este ID-ul<br />

dumneavoastră precum şi identificatorul de grup.<br />

Dacă doriţi să aflaţi împreună cu cine sunteţi conectat la sistem atunci vă recomand<br />

comanda:<br />

$users<br />

Aceasta comandă afişează numele tuturor utilizatorilor conectaţi. Dacă doriţi să aflaţi mai<br />

multe informaţii despre aceştia aveţi la dispoziţie comanda:<br />

$ who<br />

Iar dacă, suplimentar, doriţi să ştiţi ce fac aceştia 8 , folosiţi comanda:<br />

$ w<br />

7 Cel puţin din punctul lui de vedere.<br />

8 Ţineţi cont tot timpul că şi ceilalţi pot folosi aceste comenzi… Şi multe altele.


Dacă doriţi să aflaţi care au fost ultimii utilizatori conectaţi, folosiţi comanda:<br />

$ last<br />

O informaţie pe care nu o puteţi vizualiza, dar pe care o puteţi modifica, este parola.<br />

Pentru aceasta aveţi comanda:<br />

$ passwd<br />

care va cere să introduceţi vechea parola şi de două ori noua parolă.<br />

Lucrul cu cataloage 9 şi fişiere<br />

Din punctul de vedere al utilizatorului, sistemul de fişiere din <strong>Linux</strong> are o structură<br />

arborescentă, similară cu cea din MS-DOS şi Windows. Rădăcina sistemului este<br />

simbolizată prin /. Catalogul rădăcină conţine de obicei numai cataloage, dar celelalte<br />

cataloage pot conţine atât cataloage cât şi fişiere. De fapt, <strong>în</strong> Unix tot ce nu e catalog e<br />

fişier, inclusiv tastatura şi ecranul fiind privite ca nişte fişiere, precum şi celelalte<br />

dispozitive periferice.<br />

Există <strong>în</strong> rădăcină un număr de cataloage care au un conţinut mai mult sau mai puţin<br />

standard:<br />

• /bin care a fost gândit să conţină toate fişierele executabile <strong>în</strong> format binar, dar<br />

care de cele mai multe ori conţine principalele comenzi ale sistemului, inclusiv<br />

interpretorul de comenzi.<br />

• /dev – conţine fişierele prin intermediul cărora sunt accesate perifericele.<br />

• /etc – conţine informaţii administrative ale sistemului. De exemplu, parolele sunt<br />

păstrate <strong>în</strong> fişierul passwd din acest catalog.<br />

• /home – de obicei, acest catalog conţine cataloagele utilizatorilor, inclusiv<br />

cataloagele gazdă ale acestora.<br />

• /lib – conţine bibliotecile sistemului permiţându-se astfel partajarea mai uşoară a<br />

acestora.<br />

• /tmp – este catalogul folosit pentru crearea de fişiere temporare.<br />

• /usr – iniţial, acest director a fost gândit să conţină toate comenzile legate de<br />

utilizator dar acum fiecare dă propria interpretare acestui director.<br />

După cum aţi văzut, am prefixat toate numele de cataloage cu /. Atunci când un nume<br />

<strong>în</strong>cepe cu acest catalog atunci el reprezintă un nume de cale absolut, descrierea căii<br />

<strong>în</strong>cepând de la rădăcină. Dacă el nu <strong>în</strong>cepe cu catalogul rădăcină, atunci este vorba de un<br />

nume de cale relativ la catalogul curent. De exemplu, catalogul costel/gigel/test.cpp 10<br />

desemnează fişierul test.cpp din catalogul gigel, aflat <strong>în</strong> catalogul costel din catalogul<br />

curent. Pentru a afla catalogul curent se foloseşte comanda:<br />

9 În continuare termenii catalog şi director vor desemna acelaşi lucru.<br />

10 Separatorul este /, spre deosebire de Windows şi MS DOS unde separatorul este \.


$ pwd<br />

care va afişa calea absolută a catalogului curent. Iniţial, catalogul curent este cel conţinut<br />

<strong>în</strong> variabila de mediu HOME. Variabilele de mediu pot fi vizualizate folosind comanda:<br />

$ env<br />

deşi aceasta comandă a fost proiectată pentru a permite rularea unui program <strong>în</strong>tr-un<br />

mediu diferit. De fapt, valoarea variabilei HOME este setată la conectarea <strong>în</strong> sistem,<br />

pentru fiecare utilizator existând <strong>în</strong> fişierul /etc/passwd o linie cu următorul format:<br />

De exemplu:<br />

Unde:<br />

cont:x:UID:GID:nume utilizator:HOME:SHELL<br />

gigel:x:1001:77:Gigel Gigi:/home/gigi:/bin/bash<br />

• primul câmp reprezintă numele contului (sau numele de login).<br />

• Al doilea câmp semnifică faptul că parola criptată se găseşte <strong>în</strong>tr-un fişier ascuns.<br />

• Al treilea câmp (UID) este identificatorul utilizatorului.<br />

• Al patrulea câmp (GID) este identificatorul de grup al utilizatorului, utilizatorii<br />

fiind împărţiţi <strong>în</strong> grupuri pentru a uşura administrarea.<br />

• Al cincilea câmp reprezintă numele (adevărat) al utilizatorului.<br />

• Al şaselea câmp reprezintă catalogul gazdă al utilizatorului 11 .<br />

• Ultimul câmp reprezintă numele complet al fişierului binar executabil care<br />

conţine interpretorul de comenzi care se lansează după conectare.<br />

O altă variabilă de mediu importantă este PATH, care conţine lista directoarelor pe care<br />

le caută sistemul, <strong>în</strong> ordine de la stânga la dreapta, pentru a găsi comenzile şi aplicaţiile<br />

pe care doriţi să le lansaţi. În momentul <strong>în</strong> care este găsită prima comandă potrivită<br />

căutarea se termină. Această variabilă poate conţine mai multe directoare, separate prin : .<br />

Modificarea catalogului curent<br />

Pentru a schimba directorul curent se foloseşte comanda cd, sintaxa acestei comenzi<br />

fiind:<br />

cd director-nou<br />

Dacă doriţi să selectaţi directorul părinte al directorului curent folosiţi:<br />

11 Evident cu această valoare este setată variabila HOME.


$ cd ..<br />

Pentru "bunicul" directorului curent:<br />

$ cd ../..<br />

Pentru a selecta directorul cu numele frate, aflat la acelaşi nivel cu directorul curent aveţi<br />

mai multe soluţii. Prima, secvenţa de comenzi:<br />

Sau:<br />

$ cd ..<br />

$ cd frate<br />

$ cd ../frate<br />

Dacă doriţi să selectaţi rădăcina folosiţi:<br />

$ cd /<br />

Dacă doriţi să selectaţi subdirectorul etc din rădăcină, puteţi folosi calea absolută:<br />

$ cd /etc<br />

Vizualizarea conţinutului unui catalog<br />

Pentru listarea conţinutului unui catalog se foloseşte comanda:<br />

$ ls<br />

Comanda listează toate fişierele şi directoarele din catalogul curent, sortate alfabetic de<br />

sus <strong>în</strong> jos şi de la stânga la dreapta, făcându-se distincţie <strong>în</strong>tre majuscule şi minuscule. În<br />

continuare o să prezint cele mai importante opţiuni. Pentru a afla dimensiunea fiecărui<br />

director sau fişier folosiţi opţiunea s:<br />

$ ls –s<br />

Numerele afişate <strong>în</strong> stânga numelor reprezintă dimensiunea <strong>în</strong> blocuri de 1024 de octeţi.<br />

Dacă este setată <strong>în</strong>să variabila de mediu POSIXLY_CORRECT blocurile au numai 512<br />

octeţi, cu condiţia să nu fi fost folosită opţiunea –k, opţiune care specifică ca, <strong>în</strong> cazul <strong>în</strong><br />

care sunt afişate dimensiunile fişierelor, acestea să fie <strong>în</strong> kilo octeţi:


$ ls -ks<br />

Comanda ls acceptă ca argumente o listă de directoare şi fişiere, listând mai <strong>în</strong>tâi mai<br />

toate fişierele din acea listă după care, pentru fiecare director, <strong>în</strong>tregul conţinut al<br />

directoarelor. Dacă nu doriţi să vedeţi conţinutul directoarelor folosiţi opţiunea –d, iar<br />

dacă, dimpotrivă, doriţi să listaţi conţinutul tuturor directoarelor recursiv<br />

O altă opţiune utilă este –F care adaugă un sufix anumitor tipuri de fişiere:<br />

• / la sfârşitul numelor de directoare.<br />

• | la sfârşitul numelor de conducte FIFO.<br />

• = pentru socluri.<br />

• @ pentru legături simbolice.<br />

• * la sfârşitul fişierelor executabile.<br />

Dacă doriţi să listaţi numele <strong>în</strong>tr-o listă separate prin virgulă, folosiţi opţiunea –m. Dacă<br />

doriţi să modificaţi criteriul de sortare aveţi variantele:<br />

• -r inversează ordinea.<br />

• -t sortare după data ultimei modificări.<br />

• -u sortează după data ultimei accesări.<br />

• -f <strong>în</strong> ordinea <strong>în</strong> care sunt memorate pe disc.<br />

• -x listare pe coloane, sortate orizontal.<br />

• -C listare pe coloane, sortate vertical (modul implicit).<br />

• -S sortare <strong>în</strong> ordine descrescătoare după dimensiune.<br />

• -X sortare alfabetică după extensie (ceea ce urmează după ultimul ".").<br />

Dacă doriţi să vizualizaţi mai multe informaţii, puteţi folosi formatul lung:<br />

$ ls -l 12<br />

Efectul comenzii anterioare vor fi linii având o formă similară cu următoarea:<br />

-rwxr-x—x 6 stefan users 1788 2003-12-31 25:59 a.out*<br />

Primul caracter reprezintă tipul fişierului, cele mai <strong>în</strong>tâlnite caractere fiind 'd' pentru<br />

directoare şi '-' pentru fişiere obişnuite. Urmează permisiunile (9 caractere) şi numărul de<br />

legături hard. Următoarele două rubrici sunt numele proprietarului şi al grupului, apoi<br />

dimensiunea <strong>în</strong> octeţi şi data ultimei modificări. În fine urmează numele de fişier.<br />

Permisiuni<br />

După cum am mai zis, şirul de permisiuni are 9 caractere, grupate câte trei: permisiunile<br />

pentru proprietar, permisiunile pentru grup şi permisiunile pentru ceilalţi. O permisiune<br />

12 L mic, 1 are alt efect.


specifică tipul de acces… permis. Sunt permise următoarele caractere pentru descrierea<br />

tipului de acces:<br />

• 'r' are drept de citire.<br />

• 'w' are drept de scriere.<br />

• 'x' are drept de execuţie.<br />

• '-' nu are.<br />

Un şir care descrie drepturi depline atât pentru proprietar, grupul proprietarului, cât şi<br />

pentru ceilalţi, este:<br />

rwxrwxrwx<br />

În schimb şirul următor:<br />

rwxr-x--x<br />

spune că proprietarul are toate drepturile, grupul are numai drept de citire şi execuţie, iar<br />

ceilalţi au numai drept de execuţie.<br />

Comenzile legate de permisiuni sunt : chmod pentru modificarea permisiunilor unui<br />

fişier, umask pentru definirea permisiunilor implicite, chown şi chgrp pentru schimbarea<br />

proprietarului şi a grupului. Aceste comenzi nu vor fi detaliate <strong>în</strong> această lucrare.<br />

Crearea de noi directoare<br />

Pentru aceasta se foloseşte comanda mkdir. Sintaxa acestei comenzi este:<br />

mkdir [opţiuni] nume_director...<br />

Opţiunile, fiind <strong>în</strong>cadrate de paranteze drepte sunt… opţionale, iar cele … din sintaxă<br />

semnifică că se poate repeta elementul din stânga, folosind spaţiul ca separator. Comanda<br />

eşuează dacă utilizatorul nu are drepturi de scriere <strong>în</strong> directorul părinte al noului director<br />

sau dacă directorul există deja. Numele de director poate fi atât relativ cât şi absolut, dar<br />

directorul părinte al noului director trebuie să existe. De exemplu, pentru ca următoarea<br />

comandă:<br />

$ mkdir teste/crash<br />

să reuşească este necesar, dar nu suficient, ca directorul curent să conţină un director cu<br />

numele teste.<br />

Copierea<br />

Copierea fişierelor şi a directoarelor se realizează cu comanda cp, care are două forme:


cp [opţiuni]... sursa destinaţia<br />

cp [opţiuni]... sursa... director<br />

Uneori, cp copiază atât fişiere cât şi directoare 13 , copiile fiind independente de originale.<br />

Prima varianta permite copierea sursei <strong>în</strong> destinaţie, iar cea de-a doua variantă permite<br />

copierea mai multor surse <strong>în</strong>tr-un director.<br />

Mutarea (redenumirea)<br />

Comanda mv poate fi utilizată pentru mutarea sau redenumirea fişierelor şi a<br />

directoarelor. Sintaxa este similară cu cea a comenzii cp:<br />

mv [opţiuni]... sursa destinaţia<br />

mv [opţiuni]... sursa... director<br />

Dacă este folosită ultima formă, mv mută fiecare fişier sursă <strong>în</strong> directorul furnizat ca<br />

ultim parametru.<br />

Ştergerea<br />

Pentru ştergerea fişierelor se foloseşte comanda:<br />

rm [opţiuni] fişier...<br />

În mod obişnuit această comandă nu şterge directoare, <strong>în</strong> afara cazului <strong>în</strong> care se foloseşte<br />

opţiunea –r (sau –R). Pentru ştergerea directoarelor se foloseşte comanda:<br />

rmdir [opţiuni] director...<br />

Directoarele trebuie să nu mai conţină nimic.<br />

13 În mod implicit, cp nu copiază directoare, dar atunci când se folosesc opţiunile –a, -R şi –r, nu are<br />

<strong>în</strong>cotro.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!