Lucrarea 1 Introducere în Linux
Lucrarea 1 Introducere în Linux
Lucrarea 1 Introducere în Linux
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.