Sunteți pe pagina 1din 5

LABORATOR NR.

1 - SISTEME DE OPERARE
1. Interfaa utilizator la sistemul de operare UNIX
2. Comenzi Shell
3. Aplicaii
1. INTERFAA UTILIZATOR
1.1 ATAAREA LA SISTEM
Iniierea sesiunii de lucru sub Unix se realizeaz prin introducerea numelui i a parolei
utilizatorului. Dup verificarea corectitudinii acestor informaii de ctre programul login, se
lanseaz automat interpretorul de comenzi Shell specific utilizatorului respectiv.
Prezena interpretorului de comenzi este semnalata prin afisarea prompter-ului.
Prompter-ul indic faptul ca sistemul este gata s primeasca comenzi de la utilizator.
La sistemul Linux prompter-ul unui utilizator obinuit este format deobicei din
urmtoarele iruri de caractere:
numele_logic_al_masinii
:
[director
curent]
$
sau
nume_utilizator@nume_logic_masina@director_curent$
Exemplu:
mars:~$
alpha:/1/home/staff/student$ sau
[pus2gm@ATLAS@pus2gm]$
Dac utilizatorul se afl n subdirectorul propriu (home directory) se afieaz semnul ~
(tilda); dac utilizatorul se deplaseaz n alt subdirector dect cel propriu, parametrul [director
curent] va afia traseul de la rdcin pn la subdirectorul curent.
1.2 SINTAXA COMENZILOR SHELL
Interpretorul de comenzi (Shell) realizeaz dou funcii importante:
preluarea, prelucrarea i execuia comenzilor date de utilizator;
executarea de programe structurate, ntr-un limbaj de instruciuni specific Shell-ului;
programele n limbaj Shell cuprind att instruciuni ct i comenzi.
Comenzile au urmtoarea sintax general:
nume_comanda [optiuni] [argumente]
Nume_comanda reprezint numele comenzii ce va fi executat de ctre Shell. Celelalte cmpuri
definesc parametrii comenzii i sunt separate prin spaii. Opiunile particularizeaz efectul comezii
i sunt precedate de semnul - .
1.3 INTERPRETAREA UNEI COMENZI SHELL
O comand introdus de utilizator este interpretat de Shell prin mprirea ei n comenzi
elementare separate de && sau ; sau || sau de |. Fiecare comand elementar este la
rndul ei interpretat de Shell n mai multe etape:
1. linia de comand este mprit n cuvinte separate prin spaii sau alte caractere speciale; un ir
de caractere ntre ghilimele este tratat ca un singur cuvint;
1

2. cuvintele care ncep cu $ sunt tratate ca nume de variabile i sunt nlocuite cu valoarea
variabilei respective; aceast etap se numete substituirea variabilelor;
3. cuvintele din comand care conin caracterele ambigue * i ? sunt tratate ca nume
ambigue de fiiere i nlocuite cu lista fiierelor care se potrivesc cu aceste nume ambigue;
4. cuvintele incluse ntre apostroafe inverse, ` , sunt considerate comenzi ce se execut
separat; ele sunt apoi nlocuite cu rezultatele produse de comenzile respective; aceasta etap
se numete substituirea comenzilor;
5. se execut redirectarea intrrilor i ieirilor comenzilor, prin interpretarea urmtorilor
operatori:

<

<<

,
> , >> , <& , >& ;
6. execut atribuirile de forma variabila = valoare;
7. este interpretat n cele din urm numele comenzii; acesta poate fi:
- nume de comand intern, care este executat direct de interpretor;
- comand extern, care este executat prin lansarea unui fiier executabil;
- numele unei funcii shell definit anterior de utilizator; aceast funcie este executat direct
de interpretorul de comenzi Shell.
1.4 EXECUIA UNEI COMENZI SHELL
Dup ataarea la sistem a unui utilizator, sistemul de operare UNIX va lansa un proces
Shell pentru utilizatorul respectiv. Acest proces Shell va prelua cererile i va executa comenzile
lansate de utilizator, dup urmtorul ciclu:
repet
afieaz prompter;
citete comanda;
decodific comanda;
lanseaz n execuie comanda;
ateapt terminarea comenzii dac nu s-a specificat altfel;
pn cnd comanda = exit.
Comenzile Shell-ului pot fi interne sau externe. Comenzile interne sunt executate direct de Shell,
fr lansarea vreunui program (fiier execuatbil) aflat pe disc. Urmtoarele comenzi interne ale
interpretorului Shell sunt mai des ntlnite:
Comanda nul. Ignor argumentele i ntoarce 0 (succes); Citete i execut
comenzile Shell dintr-un fiier.
nume_fiier
Dac nu se specific nimic prin tehnici speciale, comenzile sunt executate de o
nou instan a Shell-ului. Fiierul este cutat n directoarele indicate de variabila
de mediu PATH, n ordinea n care sunt specificate n aceasta. Dac variabila
PATH conine i subdirectorul curent ( . ), atunci se cauta i n acesta.
cd [traseu]
schimb directorul curent cu cel specificat n argumentul traseu;
echo
afieaz argumentele primite;
exit
ncheie execuia interpretorului de comenzi;
export nume=valoare nscrie n mediu (environment) variabila nume;
pwd
afieaz numele directorului curent;
set arg ...
afieaz sau seteaz valorile unor variabile specificate n argumente;
type cmd
afieaz tipul comenzii specificat n argumentul cmd.
Orice comand ntoarce n urma execuiei un cod de stare care are valoarea 0 pentru succes i
2

altceva pentru eec. Acest cod de stare este atribuit variabilei $? i poate fi folosit ulterior de alte
comenzi (pentru a testa de ex. rezultatul execuiei unei comenzi anterioare).
Execuia unei comenzi externe ncepe cu cutarea fiierului executabil care va realiza efectiv
comanda; aceast cautare se face n subdirectoarele specificate n variabila de mediu PATH, n
ordinea n care acestea sunt specificate.
1.5 CONECTAREA COMENZILOR PRIN PIPE
n general comenzile Unix au sarcini bine delimitate; ele pornesc de la anumite informaii
obinute din fiierul standard de intrare (tastatura) i genereaz rezultate care sunt depuse n
fiierul standard de ieire (ecranul). Aceasta structur permite conectarea comenzilor n cascad
pentru realizarea din comenzi simple nlnuite a unor prelucrari complexe. Conectarea n cascad
(nlnuirea) presupune legarea ieirii unui program la intrarea urmtorului program. Exist
dou metode de nlnuire a comenzilor:
1. prin redirectare: se folosete un fiier n care prima comanda depune date pe care le va
citi i prelucra urmatoarea comand, .a.m.d.
2. prin tehnica pipe, cnd conectarea se face direct ntre cele dou comenzi, fr a mai fi
necesar existena unui fiier intermediar.
Tehnica pipe este o facilitate oferit de Shell-ul UNIX; prin operatorul | se conecteaza
ieirea standard a unei comenzi la intrarea standard a altei comenzi. Interpretorul admite i
conectari multiple, succesive prin pipe, a mai multor comenzi Shell.
2. COMENZI SHELL
2.1. INFORMAII GENERALE
O comanda este preluat de interpretor (Shell) la terminarea introducerii ei complete,
terminare marcat prin apsarea tastei enter. Toate caracterele introduse pn n acel moment
intra n alcatuirea comenzii, cu excepia a doua caractere:
- cel de tergere a ultimului caracter tastat (backspace <-);
- cel de anulare a comenzii (CTRL i U).
ntreruperea execuiei unei comenzi se face prin apsarea simultan a tastelor CTRL i C.
Vizualizarea comenzilor executate anterior se poate face prin apsarea tastelor sagei,
comenzile anterioare putnd fi (eventual) modificate i executate apoi din nou, prin apsarea
tastei enter ( facilitate history ).
Sintaxa complet a comenzilor UNIX poate fi aflat prin consultarea Manualului Programatorului;
acest manual este ncorporat n sistemul de operare LINUX i este disponibil on-line.
Pentru comenzile care vor fi prezentate n continuare se va folosi convenia BNF: parametrii
opionali se vor include ntre paranteze drepte [ ], iar numele unor entiti cum ar fi fiier sau
director se vor include ntre paranteze ascuite, < i > .
2.2. COMENZI INFORMATIVE I DE CONFIGURARE
man [opiuni] nume_comanda
Afieaza pagini din Manualul Programatorului sau
sistemului Linux. Ieirea din comanda man se face prin apsarea
literei q. Cutarea unei ir de caractere n
man [optiuni] cuvint_cheie pagina de manual se face cu /sir_de_caractere; continuarea cautarii
se face prin apasarea tastei /.
whoami
afieaz numele utilizatorului curent
3

who [optiuni]

afieaz informaii despre utilizatorii conectai n acel moment la


sistem.
finger [opiuni] [nume_user] afieaz informaii despre uitilizatorii conectai la un moment dat,
sau despre un anumit utilizator
echo [opiuni] [ir_de_caractere]
afieaz argumentul ir_de_caractere
file [opiuni] nume_fisier
afieaz informaii despre formatul unui fiier
date [opiuni] [data_i_timp] afieaz i seteaz data calendaristic i timpul
cal [optiuni] [luna an]
afieaza calendarul lunii sau anului curent
apropos sir_de caractere
afieaza informaii despre toate apariiile unui ir de caractere n
Manualul
Programatorului
(echivalent
cu
man
k
ir_de_caractere)
whatis nume_comanda
afieaz funciile unei comenzi
whereis comanda
afieaz localizarea unei comenzi n traseele de directoare ale
sistemului, trasee ncrise n variabila PATH
grep [opiuni] model [fiier] afieaz liniile dintr-un fiier sau din intrarea standard care se
potrivesc cu modelul dat.
set
afieaz valorile variabilelor de mediu
alias nume=comanda
stabilete un pseudonim pentru o comand
export variabila=valoare
nscrie variabile n mediu
2.3. COMENZI PENTRU GESTIUNEA DIRECTOARELOR
pwd

afieaz calea complet (pornind de la rdcin) pn la directorul


curent
cd [traseu]
schimb directorul curent
ls [opiuni]
afieaz coninutul directorului curent
mkdir [opiuni] nume_subdirector creeaz un subdirector
rmdir [opiuni] nume_subdirector sterge un subdirector
2.4. COMENZI PENTRU TERMINALE
tty [opiuni]
more
less
write

afieaz numele terminalului curent


comand filtru pentru afiare paginat
comand filtru pentru afiare paginat (specific Linux)
trimite un mesaj ctre un alt utilizator.

3. APLICAII
I . S se consulte Manulalul Programatorului pentru fiecare din comenzile enumerate n seciunile
2.2, 2.3 i 2.4 ale referatului de laborator. S se execute fiecare comand cu diverse variante de
opiuni.
II. S se rezolve exerciiile urmtoare:
1. S se afieze informaii despre utilizatorul root.
2. S se afieze toate informaiile din sistem referirtoare la cuvintul user.
3. S se afieze valoarea codului de retur ntors de o comand executat cu succes i valoarea
codului retur ntors de o comand euat.
4. S se afieze valoarea variabilei de mediu PATH.
5. S se scrie cu ajutorul comenzii echo un ir pe mai multe rnduri.
6. Ce semnificatie au numele de fiiere . i .. din fiierul director?
7. S se schimbe directorul curent cu cel aflat la dou nivele mai sus, folosindu-se o singur
comand i fr a se specifica numele acestui director. S se revin n directorul propriu
(home directory), n maximum 6 caractere.
8. S se creeze dou directoare t1 i t2, t1 subdirector al directorului curent iar t2 subdirector al
lui t1, folosindu-se o singur comand mkdir.
9. S se tearg cu o singur comand rmdir subdirectoarele t1 i t2 create n cadrul exerciiului
nr. 8.
10. S se tearg directorul printe al directorului curent. Explicai rezultatul.
11. S se afieze toate fiierele directorului curent.
12. S se afieze numai fiierele subdirectoare ale directorului curent.
13. S se afieze toate fiierele din directorul curent i din subdirectoarele sale.
14. S se afieze fiierele din directorul curent n ordinea datei ultimei modificri.
15. Ce semnificaie are primul caracter al fiecarei linii afiate n urma comenzii ls l ?
16. S se listeze coninutul directorului curent n ordine invers alfabetic.
17. Utilizai comanda more n pipe-line cu ls. Idem pentru comanda less. Care este deosebirea
dintre funcionarea celor dou comenzi? (Indicaie: consultai manualul on-line)
18. S se nscrie valoarea /usr/local/oracle7 n variabila ORACLE_HOME. S se afieze valoarea
variabilei ORACLE_HOME.
19. S se localizeze n sistemul de directoare fiierul executabil corespunzind comenzii file. S se
afiseze tipul acestui fiier. (Ind :whereis, file). S se gseasc soluia care folosete o singur
comand. (Ind.: Sectiunea 1.4, substituirea comenzilor).
20. Aflai comanda care inhib afiarea pe ecran a comenzilor tastate, fr a se inhiba efectuarea
lor. (Ind: man stty)