Documente Academic
Documente Profesional
Documente Cultură
1 - SISTEME DE OPERARE
1. INTERFATA UTILIZATOR
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).
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-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:
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.
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
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 [ ] .
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.
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.
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 ”?
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)
19. Aflati comanda care inhiba afisarea pe ecran a comenzilor tastate, fara a se inhiba efectuarea
lor. (Ind: man stty)