Sunteți pe pagina 1din 5

LABORATOR NR.

1 - SISTEME DE OPERARE

1. Interfata utilizator la sistemul de operare UNIX


2. Comenzi Shell
3. Aplicatii

1. INTERFATA UTILIZATOR

1.1. Interpretorul de Comenzi


Interpretorul de comenzi (Shell-ul) este o componenta software care furnizeaza o interfata de
comunicare intre utilizator si sistemul de operare Unix. Prin intermediul Shell-ului, utilizatorul poate
transmite sistemului de operare comenzi care sunt exprimate intr-un limbaj specific, limbajul Shell.

Shell-ul este un program « obisnuit », localizat de regula in subdirectorul /bin. El este independent de
nucleul sistemului de operare UNIX si este tratat de acesta ca un program neprivilegiat.

Sistemul UNIX pune la dispozitia utilizatorilor mai multe Interpretoare de comenzi (Shell-uri): C-shell,
Korn Shell, Bourne Shell (bash), etc. Administratorul de sistem specifica pentru fiecare utilizator ce Shell
(Interpretor de comenzi) implicit va folosi in comunicarea cu sistemul de operare. Toate interpretoarele
de comenzi sub Unix recunosc acelasi set de baza de comenzi (acelasi limbaj de comenzi).

1.2. Atasarea la Sistem


Initierea sesiunii de lucru sub Unix se realizeaza prin introducerea numelui de cont si a parolei de catre
utilizator. Programul de « login » (de conectare la sistem) verifica aceste informatii si in cazul in care ele
sunt corecte, se incarca :
- Interfata grafica (desktop-ul), daca pentru utilizatorul respectiv este prevazuta comunicarea in
mod grafic cu sistemul de operare (mod de lucru implicit in laboratoarele catedrei pentru
sistemele de tip Unix: Linux, BSD si Solaris)
- Interpretorul de comenzi Shell specific utilizatorului respectiv, daca pentru utilizatorul respectiv
este prevazuta comunicarea in mod alfanumeric (mod de lucru optional in laboratoarele
catedrei, selectabil de catre utilizator).

In cazul comunicarii prin interfata grafica, lansarea Interpretorului de comenzi trebuie facuta in mod
explicit de catre utilizator, prin selectarea unui « terminal » sau a unei « console », din lista de aplicatii
a sistemului de operare. In aceasta situatie se lanseaza de fapt in executie o instanta de Shell, care va
deschide pe ecranul grafic o « fereastra terminal » in care utilizatorul poate lansa comenzi Shell.

In ambele situatii in care Shell–ul este lansat in executie, implicit la conectare sau explicit din lista de
aplicatii, prezenta sa ca program activ este semnalata prin afisarea pe ecran a unui prompter. Acesta
este un sir de caractere care arata ca Shell-ul este gata sa primeasca comenzi de la utilizator.

Observatie : La sistemele Linux din laboratoarele catedrei prompter-ul unui utilizator obisnuit este format
de regula din urmatoarele siruri de caractere:

nume_utilizator@nume_logic_masina ~ $ sau
nume_utilizator@nume_logic_masina director_curent $

Daca utilizatorul se afla plasat in subdirectorul propriu (home directory) se afiseaza semnul ~ (tilda).
Daca utilizatorul se deplaseaza in alt subdirector decat cel propriu, parametrul director_curent va afisa
traseul de la radacina pana la subdirectorul curent.

1
1.3. Sintaxa Comenzilor Shell
Interpretorul de comenzi (Shell) realizeaza doua functiuni importante:
- preluarea, prelucrarea si executia comenzilor date de utilizator
- executarea de programe structurate scrise in limbajul de instructiuni specific Shell-ului;
programele in limbaj Shell pot contine atat instructiuni cat si comenzi.

Comenzile Shell au urmatoarea sintaxa generala:

nume_comanda [optiuni] [argumente]


unde nume_comanda reprezinta numele comenzii ce va fi executata de catre Shell.
Celelalte campuri definesc parametrii comenzii si sunt separate prin spatii.
Optiunile particularizeaza modul de executie al comenzii si sunt precedate de semnul “ - ”, iar
argumentele specifica entitatile (fisiere, directoare, programe, utilizatori) asupra caroara va actiona
comanda respectiva.

1.4. Executia unei Comenzi Shell


Shell-ul executa comenzile lansate de utilizator dupa urmatorul ciclu:
repeta
afiseaza prompter
citeste comanda tastata de utilizator
decodifica si verifica comanda
lanseaza in executie comanda
asteapta terminarea comenzii daca nu s-a specificat altfel
pana cand comanda = “exit”.

Comenzile Shell-ului pot fi externe sau interne (built-in). Comenzile externe se efectueaza prin
lansarea in executie a unui fisier (execuatbil) aflat pe disc. Comenzile interne sunt functii codate direct in
Shell.

Urmatoarele comenzi interne ale interpretorului Shell sunt mai des intilnite:

comanda nula Ignora argumentele si intoarce codul de retur 0 (succes)


nume_fisier Lanseaza in executie un fisier executabil. Fisierul este cautat in directoarele
indicate de variabila de mediu PATH, in ordinea in care sunt specificate in
aceasta. Daca variabila PATH contine si subdirectorul curent (“ . ”), atunci se
cauta si in acesta. Fisierul este executat de o noua instanta a Shell-ului.
cd [traseu] Schimba directorul curent cu cel specificat in argumentul traseu
echo [argumente] Afiseaza argumentele primite
exit Incheie executia interpretorului de comenzi
export nume=valoare Inscrie in mediu (environment) variabila nume cu valoarea valoare
pwd Afiseaza numele directorului curent
set [argumente] Afiseaza sau seteaza valorile unor variabile specificate in argumente
type cmd afiseaza tipul comenzii specificata in argumentul cmd

Orice comanda intoarce in urma executiei un cod retur ce are valoarea 0 pentru succes si altceva
pentru esec. Codul de retur este atribuit variabilei de mediu $? si astfel el poate fi folosit ulterior de alte
comenzi (pentru a testa, de exemplu, rezultatul executiei unei comenzi anterioare).

Executia unei comenzi externe incepe cu cautarea fisierului executabil care va realiza efectiv comanda;
aceasta cautare se face in subdirectoarele specificate in variabila de mediu PATH, in ordinea in care
acestea sunt specificate.

2
1.5. Conectarea Comenzilor in Pipe-lining
Comenzile Unix au sarcini bine delimitate : ele utilizeaza informatii provenite din fisierul standard de
intrare (tastatura) si genereaza rezultate care sunt depuse in fisierul standard de iesire (ecranul).
Aceasta structura permite conectarea comenzilor in cascada pentru realizarea de comenzi inlantuite in
scopul efectuarii unor prelucrari complexe.

Conectarea in cascada (inlantuirea) presupune “legarea” iesirii unui program la intrarea urmatorului
program. Exista doua metode de inlantuire a comenzilor :
1. prin redirectare : se foloseste un fisier in care prima comanda depune date pe care le va citi si
prelucra urmatoarea comanda, s.a.m.d.
2. prin tehnica « pipe » , atunci cand conectarea se face direct intre cele doua comenzi, fara a mai
fi necesara existenta unui fisier intermediar.

Tehnica « pipe » este o facilitate oferita de Shell-ul UNIX. Prin intermediul operatorului « | » se
conecteaza iesirea standard a unei comenzi la intrarea standard a altei comenzi.
Interpretorul admite conectari multiple succesive prin « pipe » a mai multor comenzi Shell.

1.6. Interpretarea unei Comenzi Shell


O linie de comanda introdusa de utilizator este interpretata de Shell prin impartirea ei in comenzi
elementare separate de « && » sau « ; » sau « || » sau de « | ».

Fiecare comanda elementara este interpretata de Shell in mai multe etape:


1. linia de comanda este impartita in cuvinte separate prin spatii sau alte caractere speciale; un sir
de caractere intre ghilimele este tratat ca un singur cuvant

2. cuvintele care incep cu « $ » sunt tratate ca nume de variabile si sunt inlocuite cu valoarea
variabilei respective; aceasta etapa se numeste substitutia variabilelor

3. cuvintele din comanda care contin caracterele ambigue « * » si « ? » sunt tratate ca nume
ambigue de fisiere si inlocuite cu lista fisierelor ce se potrivesc cu aceste nume ambigue

4. cuvintele incluse intre apostroafe inverse, « `», sunt considerate comenzi ce se executa
separat (comenzi imbricate); ele sunt inlocuite cu rezultatele produse de comenzile respective;
aceasta etapa se numeste substitutia comenzilor

5. se executa redirectarea intrarilor si iesirilor comenzilor, prin interpretarea urmatorilor operatori :


< , << , > , >> , <& ” , >& ”

6. executa atribuirile de forma variabila = valoare

7. este interpretat in cele din urma numele comenzii, care poate fi :

a. nume de comanda interna, care este executata direct de interpretor

b. comanda externa, care este executata prin lansarea unui fisier executabil de pe disc

c. numele unei functii Shell definita anterior de utilizator; aceasta functie este executata
direct de interpretorul de comenzi Shell.

3
2. COMENZI SHELL
O comanda este preluata de Shell la terminarea introducerii ei complete, terminare marcata prin
apasarea tastei « enter ». Toate caracterele introduse pana in acel moment intra in alcatuirea comenzii,
cu exceptia a doua caractere :
- cel de stergere ultim caracter tastat (backspace <-)
- cel de anulare a comenzii (CTRL si U).
Intreruperea executiei unei comenzi se face prin apasarea simultana a tastelor CTRL si C.

Vizualizarea comenzilor executate anterior se poate face prin apasarea tastelor “sageti”, comenzile
anterioare putand fi utilizate si (eventual) modificate in vederea unei re-lansari (facilitate “history” ).

Sintaxa completa a comenzilor LINUX poate fi aflata prin consultarea Manualului care disponibil on-line.
Pentru sintaxa comenzilor care vor fi prezentate in continuare se va folosi conventia BNF: parametrii
optionali se vor include intre paranteze drepte [ ] .

2.1. Comenzi Diverse, Informative si de Configurare

man [optiuni] [nume_comanda] afiseaza pagini din Manualul sau sistemului Linux. Iesirea din
comanda man se face prin apasarea literei q. Cautarea unei sir
man [optiuni] cuvant_cheie de caractere in pagina de manual se face cu /sir_de_caractere.
Continuarea cautarii se face tastand /
whoami afiseaza numele utilizatorului curent
who [optiuni] afiseaza informatii despre utilizatorii conectati la sistem
finger [optiuni] [nume_user] afiseaza informatii despre uitilizatorii conectati la un moment dat,
sau despre un anumit utilizator
echo [optiuni] [argumente] afiseaza argumentul sir_de_caractere
file [optiuni] nume_fisier afiseaza informatii despre formatul unui fisier
date [optiuni] [data_si_timp] afiseaza si seteaza data calendaristica si timpul
cal [optiuni] [luna an] afiseaza calendarul lunii sau anului curen
apropos sir_de_caractere afiseaza informatii despre toate aparitiile unui sir de caractere in
paginile de manual (echivalent cu man –k sir_de_caractere)
whatis nume_comanda afiseaza functiile unei comenzi
whereis comanda afiseaza localizarea unei comenzi in traseele de directoare ale
sistemului, trasee incrise in variabila PATH
grep [optiuni] model [fisier] afiseaza liniile dintr-un fisier sau din ntrarea standard care se
potrivesc cu modelul dat.
Set [optiuni] afiseaza valorile variabilelor de mediu
alias nume=comanda stabileste un pseudonim pentru o comanda
export variabila=valoare inscrie variabile in mediu
pwd afiseaza calea completa (de la radacina) pina la directorul curent
cd [traseu] schimba directorul curent
ls [optiuni] [argumente] afiseaza continutul directorului curent
mkdir [optiuni] nume_director creeaza un subdirector
rmdir [optiuni] nume_director sterge un subdirector
more comanda “filtru” pentru afisare paginata
less comanda filtru pentru afisare paginata (specifica Linux)
write trimite un mesaj catre un alt utilizator
tty [optiuni] afiseaza numele terminalului curen

4
3. APLICATII
I . Sa se consulte Manulalul Programatorului pentru fiecare din comenzile enumerate in sectiunea 2. a
referatului de laborator. Sa se execute fiecare comanda cu diverse variante de optiuni.

II. Sa se rezolve exercitiile urmatoare:

1. Sa se afiseze informatii despre utilizatorul root.

2. Sa se afiseze toate informatiile din sistem referirtoare la cuvintul “user”.

3. Sa se afiseze valoarea codului de retur intors de o comanda executata cu succes si valoarea


codului retur intors de o comanda esuata.

4. Sa se afiseze valoarea variabilei de mediu PATH.

5. Sa se scrie cu ajutorul comenzii echo un sir pe mai multe rinduri.

6. Ce semnificatie au numele de fisiere “ . ” si “ . . ” din fisierul director?

7. Sa se schimbe directorul curent cu cel aflat la doua nivele mai sus, folosindu-se o singura
comanda si fara a se specifica numele acestui director, Sa se revina in directorul propriu (home
directory) cu comanda de maximum 2 caractere.

8. Sa se creeze doua directoare t1 si t2, t1 subdirector al directorului curent iar t2 subdirector al lui
t1, folosindu-se o singura comanda mkdir.

9. Sa se stearga cu o singura comanda rmdir subdirectoarele create in cadrul exercitiului nr. 8.

10. Sa se stearga directorul parinte al directorului curent. Explicati rezultatul.

11. Sa se afiseze toate fisierele directorului curent.

12. Sa se afiseze numai fisierele subdirectoare ale directorului curent.

13. Sa se afiseze toate fisierele din directorul curent si din subdirectoarele sale.

14. Sa se afiseze fisierele din directorul curent in ordinea datei ultimei modificari.

15. Ce semnificatie are primul caracter al fiecarei linii afisate in urma comenzii “ ls –l ”?

16. Sa se listeze continutul directorului curent in ordine invers alfabetica.

17. Utilizati comanda more in pipe-line cu ls. Idem pentru comanda less. Care este deosebirea
dintre functionarea celor doua comenzi? (Indicatie: consultati manualul on-line)

18. Sa se localizeze in sistemul de directoare fisierul executabil corespunzind comenzii file. Sa se


afiseze tipul acestui fisier. (Ind :whereis, file). Sa se gaseasca solutia care foloseste o singura
comanda. (Ind.: Sectiunea 1.4, substituirea comenzilor).

19. Aflati comanda care inhiba afisarea pe ecran a comenzilor tastate, fara a se inhiba efectuarea
lor. (Ind: man stty)

S-ar putea să vă placă și