comenzi schell -introducere

4
1 LABORATOR NR. 1 - SISTEME DE OPERARE 1. Interfața utilizator la sistemul de operare UNIX 2. Comenzi Shell 3. Aplicatii 1. INTERFAȚA UTILIZATOR 1.1. Interpretorul de Comenzi Interpretorul de comenzi (Shell-ul) este aplicația software care furnizează utilizatorului o interfață de comunicație în mod text cu sistemul de operare Unix. Prin intermediul Shell-ului utilizatorul poate transmite sistemului de operare Unix comenzi exprimate într-un limbaj specific - limbajul Shell. Shell-ul este un program neprivilegiat, localizat în subdirectorul /bin și independent față de nucleul sistemului Unix. Sistemul de operare Unix dispune de mai Interpretoare de Comenzi (Shell-uri): C-shell, Korn Shell, Bourne Shell (bash), etc. Administratorul de sistem specifică pentru fiecare utilizator ce Shell (Interpretor de Comenzi) implicit va folosi în comunicația cu sistemul de operare. Toate interpretoarele de comenzi din Unix recunosc același set de bază de comenzi. Interpretorul de Comenzi Shell realizează doua funcțiuni importante: preluarea, prelucrarea și execuția comenzilor date de utilizator execuția de programe structurate - numite script-uri Shell - scrise in limbajul de instrucțiuni Shell. 1.2. Atașarea la Sistem Inițierea unei sesiuni de lucru sub Unix se realizează de către utilizator prin introducerea unui nume de cont și a parolei aferente. Aplicația de conectare la sistem (aplicația de login) verifică aceste informatii și dacă ele sunt corecte, se încarcă : Interfața grafică (desktop-ul grafic), dacă pentru utilizatorul respectiv este prevazută implicit comunicarea în mod grafic cu sistemul de operare Interpretorul de Comenzi Shell, dacă pentru utilizatorul respectiv este prevazută implicit comunicarea în mod alfanumeric – mod text sau mod terminal - cu sistemul de operare. Observație : La sistemele Linux accesibile din laboratoarele Departamentului CTI în mod implicit comunicarea cu sistemul se face în mod grafic (prin intermediul unei interfețe grafice). În cazul comunicării prin interfață grafică, lansarea Interpretorului de Comenzi Shell poate fi facută prin selectarea unei “aplicații terminal” sau a unei “aplicații consolă” din listele de aplicații afișate în diverse bare de aplicații de pe ecran. În urma acestei selecții se lansează în execuție o instanță de Shell care va deschide pe ecran o fereastră terminal în care utilizatorul va putea tasta și executa comenzi Shell. Prezența Shell-ului ca program activ în fereastra terminal este semnalată prin afișarea unui șir de caracterere numit prompter. Afisarea prompter-ului în fereasta terminal semnalează faptul ca Shell-ul este apt sa primească comenzile tastate de utilizator. Observație : La sistemele Linux accesibile din laboratoarele Departamentului CTI prompter-ul afișat într-o fereastră terminal pentru un utilizator obișnuit este format din următoarele șiruri de caractere: nume_utilizator@nume_logic_masina ~ $ nume_utilizator@nume_logic_masina director_curent $ Dacă utilizatorul se afla plasat în directorul propriu (home directory) se afișează semnul ~ (tilda) în promter. Dacă utilizatorul este plasat în alt director decât cel propriu, parametrul director_curent (working_ directory) din promter va afișa traseul de la directorul radacină până la directorul curent.

Upload: alina-iftimiu

Post on 04-Dec-2015

8 views

Category:

Documents


1 download

DESCRIPTION

sper sa va ajute

TRANSCRIPT

Page 1: Comenzi Schell -Introducere

1

LABORATOR NR. 1 - SISTEME DE OPERARE

1. Interfața utilizator la sistemul de operare UNIX

2. Comenzi Shell

3. Aplicatii

1. INTERFAȚA UTILIZATOR

1.1. Interpretorul de Comenzi

Interpretorul de comenzi (Shell-ul) este aplicația software care furnizează utilizatorului o interfață de comunicație în mod text cu sistemul de operare Unix. Prin intermediul Shell-ului utilizatorul poate transmite sistemului de operare Unix comenzi exprimate într-un limbaj specific - limbajul Shell. Shell-ul este un program neprivilegiat, localizat în subdirectorul /bin și independent față de nucleul sistemului Unix. Sistemul de operare Unix dispune de mai Interpretoare de Comenzi (Shell-uri): C-shell, Korn Shell, Bourne Shell (bash), etc. Administratorul de sistem specifică pentru fiecare utilizator ce Shell (Interpretor de Comenzi) implicit va folosi în comunicația cu sistemul de operare. Toate interpretoarele de comenzi din Unix recunosc același set de bază de comenzi. Interpretorul de Comenzi Shell realizează doua funcțiuni importante:

− preluarea, prelucrarea și execuția comenzilor date de utilizator

− execuția de programe structurate - numite script-uri Shell - scrise in limbajul de instrucțiuni Shell.

1.2. Atașarea la Sistem

Inițierea unei sesiuni de lucru sub Unix se realizează de către utilizator prin introducerea unui nume de cont și a parolei aferente. Aplicația de conectare la sistem (aplicația de login) verifică aceste informatii și dacă ele sunt corecte, se încarcă :

− Interfața grafică (desktop-ul grafic), dacă pentru utilizatorul respectiv este prevazută implicit comunicarea în mod grafic cu sistemul de operare

− Interpretorul de Comenzi Shell, dacă pentru utilizatorul respectiv este prevazută implicit comunicarea în mod alfanumeric – mod text sau mod terminal - cu sistemul de operare.

Observație : La sistemele Linux accesibile din laboratoarele Departamentului CTI în mod implicit comunicarea cu sistemul se face în mod grafic (prin intermediul unei interfețe grafice). În cazul comunicării prin interfață grafică, lansarea Interpretorului de Comenzi Shell poate fi facută prin selectarea unei “aplicații terminal” sau a unei “aplicații consolă” din listele de aplicații afișate în diverse bare de aplicații de pe ecran. În urma acestei selecții se lansează în execuție o instanță de Shell care va deschide pe ecran o fereastră terminal în care utilizatorul va putea tasta și executa comenzi Shell. Prezența Shell-ului ca program activ în fereastra terminal este semnalată prin afișarea unui șir de caracterere numit prompter. Afisarea prompter-ului în fereasta terminal semnalează faptul ca Shell-ul este apt sa primească comenzile tastate de utilizator. Observație : La sistemele Linux accesibile din laboratoarele Departamentului CTI prompter-ul afișat într-o fereastră terminal pentru un utilizator obișnuit este format din următoarele șiruri de caractere:

nume_utilizator@nume_logic_masina ~ $

nume_utilizator@nume_logic_masina director_curent $

Dacă utilizatorul se afla plasat în directorul propriu (home directory) se afișează semnul ~ (tilda) în promter. Dacă utilizatorul este plasat în alt director decât cel propriu, parametrul director_curent (working_ directory) din promter va afișa traseul de la directorul radacină până la directorul curent.

Page 2: Comenzi Schell -Introducere

2

2. COMENZI SHELL

2.1. Sintaxa Comenzilor Shell

Comenzile Shell au sintaxa generală:

nume_comandă [opțiuni] [argumente]

unde nume_comandă reprezintă numele comenzii ce va fi executată de Shell, iar celelalte câmpuri definesc parametrii comenzii. Parametrii comenzii se separă prin spații și sunt de două tipuri :

− opțiuni, care particularizează modul de execuție al comenzii

− argumente, care specifică entitățile (fișiere, directoare, programe, utilizatori) asupra cărora va acționa comanda respectivă.

Opțiunile unei comenzi pot fi exprimate prin două metode:

− “ - ” ( minus) urmat de o literă sau o cifră ce reprezintă opțiunea

− “ -- ” (dublu minus) urmat de un șir de caractere ce reprezintă o variabilă și valoarea sa. Exemple : Parametrii unei comenzi au valori interne prestabilite ce vor fi luate in considerație atunci cand nu sunt specificați de utilizator la lansarea acelei comenzi.

2.2. Execuția 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 până când comanda lansată este “exit”.

O comanda este preluata de Shell la terminarea introducerii ei complete, marcata prin apasarea tastei Enter (NL – New Line). Toate caracterele introduse pana la terminarea introducerii intra in alcatuirea acelei comenzi, cu exceptia caracterului backspace , care are ca efect stergerea caracterului precedent. Interpretorul de Comenzi implementeaza actiuni specifice pentru anumite caractere de control:

CTRL c Încheiere comendă curentă aflată în execuție

CTRL \ Încheiere comendă curentă aflată în execuție

CTRL z Suspendare (oprire temporară) a comenzii curente aflate în execuție

CTRL d Încheie introducerea datelor intr-un fișier (EOF)

CTRL u Anuleaza toate caracterele tastate pe linia de comandă

Page 3: Comenzi Schell -Introducere

3

Comenzile Shell-ului pot fi externe sau interne (built-in). Comenzile externe se efectueaza prin lansarea in executie a unui fisier (executabil) stocat pe disc. Executia unei comenzi externe incepe cu cautarea fisierului executabil care va realiza efectiv comanda. Cautare se face in subdirectoarele specificate intr-o variabila de mediu a Shell-ului numita $PATH, in ordinea in care acestea sunt specificate in aceasta variabila. Comenzile interne sunt functii codate direct in aplicatia Shell. Cele mai frecvent utilizate sunt urmatoarele:

comanda nula Se obtine prin apasarea tastei enter și intoarce codul de retur 0 (succes)

nume_fisier Cauta in directoarele indicate de variabila de mediu $PATH fisierul executabil nume_fisier și il lanseaza in executie într-o nouă instanță Shell

cd [director] Schimba directorul curent cu cel specificat in argumentul director

echo [optiuni] [argumente] Afiseaza argumentele primite - variabile Shell sau șiruri de caractere

exit Încheie execuția interpretorului de comenzi și închide ferestra terminal

export nume= valoare Înscrie în mediu (environment) variabila nume cu valoarea valoare

pwd Afiseaza numele directorului curent

set [argumente] Afiseaza sau setează valorile unor variabile Shell specificate ca argumente

type nume_comanda Afiseaza tipul comenzii (internă sau externă) specificata prin argumentul nume_comnada

Observație : Sintaxa completa a comenzilor LINUX poate fi aflata prin consultarea paginilor Manualului 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.3. Comenzi Diverse, Informative și de Configurare

Orice comandă reintoarce in urma executiei un cod retur ce are valoarea 0 în caz de succes sau o valoare diferita de zero în caz de eșec al acelei comenzi. Codul de retur este atribuit unei variabile de mediu a Shell-ului numită $?. Codul de retur stocat in variabila de mediu $? poate fi folosit pentru a testa rezultatul executiei comenzii precedente. Vizualizarea comenzilor executate anterior (command history) se face prin apasarea tastelor “săgeți”, astfel comenzile anterioare putând fi reutilizate si (eventual) modificate in vederea unei re-lansari.

man [optiuni] [nume_comanda]

man [optiuni] cuvant_cheie

afiseaza pagina din manualul sitemului Linux care descrie comanda nume_comanda.

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

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 locatia unei comenzi in directoarele sistemului specificate in variabila $PATH

grep [optiuni] model [fisier] afiseaza liniile dintr-un fisier sau din intrarea standard care se potrivesc cu modelul model dat ca argument

set [optiuni] afiseaza valorile variabilelor de mediu ale Shell-ului

alias nume=comanda stabileste un pseudonim pentru o comanda

pwd afiseaza calea completa (de la radacina) pina la directorul curent

Page 4: Comenzi Schell -Introducere

4

ls [optiuni] [argumente] afiseaza continutul directorului curent

mkdir [optiuni] nume_director creeaza un subdirector

rmdir [optiuni] nume_director sterge un subdirector

more [fisier] comanda pentru afisare paginata

less [fisier] comanda pentru afisare paginata (numai in Linux)

write [utilizator] trimite un mesaj catre un alt utilizator

tty [optiuni] afiseaza numele terminalului curent

3. APLICATII

I . Sa se consulte Manulalul Programatorului pentru 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. Sa se localizeze in sistemul de directoare fisierul executabil corespunzind comenzii file. Sa se afiseze tipul acestui fisier.

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