|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
Comenzi Unix - Interpretorul de comenzi | ||||||
|
||||||
Interpretorul de comenzi Dialogul cu Unix are loc prin intermediul unui terminal (emulator de terminal). Faza de atasare se compune din : Login : user z8v11vn Contul si parola sunt specifice fiecarui utilizator fiind atribuite de catre administrator. Daca nu apare nici un mesaj trebuie incercat cu tasta <ENTER> de mai multe ori. Atit numele de cont cit si parola sunt case sensitive $_ sau alte promptere. Fiecare utilizator isi poate schimba propria parola cu $passwd Pentru a termina sesiunea de lucru se apasa <CONTROL> D sau se tasteaza
exit. Modul cel mai simplu de folosire a unui sistem UNIX este cel interactiv: utilizatorul introduce o comanda; sistemul executa comanda si transmite rezultatul; sistemul afiseaza promptul, asteptind transmiterea unei noi comenzi. In realitate, lucrurile sunt putin mai complicate, preluarea comenzii transmisa de utilizator fiind realizata de un program, iar executia sa de un altul. Notiuni introductive despre procese. Executia comenzilor. Comanda date In termenii utilizati in sistemul de operare UNIX, fiecare program in executie este un proces. Folosind aceasta notiune, se poate da descrierea corespunzatoare executiei unei comenzi dupa cum urmeaza. Comanda $date folosita pentru a afla ora si data curente, declanseaza urmatoarea secventa de actiuni: * interpretorul de comenzi primeste comanda si o analizeaza; Wed Mar 27 09:14:33 EET 1996 * la terminarea procesului date, interpretorul de comenzi trece in running,
preia controlul si afiseaza mesajul prompt. $deita interpretorul de comenzi cauta in directoarele /bin sau /usr/bin saau local, nu gaseste procesul cu numele deita, depisteaza eroarea si transmite un mesaj de avertisment bash: deita: command not found dupa care afiseaza promptul si asteapta o noua comanda. Este usor de inteles ca, la un moment dat, mai multe procese pot fi incepute
si neterminate. Spunem ca ele sunt active (gata de executie). De exemplu, la
executia comenzii date sunt active interpretorul si procesul date insusi. $ps Informatiile afisate includ (pentru fiecare proces in parte): identificatorul procesului (PID), numarul terminalului de la care este lansat procesul (TTY,
numar fizic sau identificator logic, de exe pp2), starea procesului STAT (in
exemplul dat R inseamna in executie - running, S - sleeping, T - stopped, Daca se doreste lansarea unui proces in background trebuie folosit dupa numele lui &. Controlul va fi predat in continuare in foreground la terminal, in timp ce in background ruleaza procesul dat. Astfel $sleep 10 intirzie afisarea prompterului aprox 10s. Daca se introduce $sleep 10& se va crea un proces in background cu pid=21079, vizibil cu ps. Notiuni introductive despre fisiere Ca si in alte sisteme de operare (de exemplu MS DOS), si in UNIX fisierele constituie unitatile de memorare a informatiilor (date sau programe) totalitatea acestora alcatuind sistemul de fisiere. Pentru mai buna lor manevrare, evidenta fisierelor se pastreaza in cataloage (directoare), care nu sunt altceva decit tot fisiere, dar de un tip deosebit. Fisierele apartinind unui catalog pot fi, la rindul lor, cataloage, astfel incit sistemul de fisiere are o organizare ierarhica, arborescenta. Unix recunoaste patru tipuri de fisirere : -fisiere normale Pentru a face o tratare uniforma a datelor, sistemul UNIX considera ca echipamentele periferice sunt tot fisiere, dar fisiere speciale. Marea majoritate a comenzilor relative la fisiere se aplica in egala masura fisierelor
speciale. -o pozitie in ierarhie Pentru a usura scrierea, sistemul permite stabilirea unui catalog curent - cel ale carui fisiere sunt mai des utilizate. Se poate folosi astfel o cale de acces relativa la catalogul curent. Prin aceasta, fisierul /user/val/calc.c este desemnat prin notatia calc.c, daca user este catalogul curent. Dupa cum se observa, notatia relativa contine sirul cataloagelor aflate pe calea dintre catalogul curent si cel desemnat, incepind cu fiul catalogului curent din arborele sistemului de fisiere. Prin conventie, sunt adoptate urmatoarele notatii, relative la catalogul curent: * . desemneaza catalogul curent insusi; In exemplul dat, tatal lui val este user. Aceste notatii usureaza uneori desemnarea unui fisier, facind apel la tatal catalogului curent, sau la tatal tatalui.
../franc este echivalent cu /user/franc, iar Exista un numar de conventii de instalare comune tuturor versiunilor /bin utilitare, programe executabile Tot prin conventie, la admiterea fiecarui utilizator in sistem se stabileste implicit catalogul sau curent. Acest catalog de referinta (home directory) constituie radacina arborelui de fisiere pe care utilizatorul si-l poate construi prin comenzi specifice. Numele complet al directorului home directory este salvata intr-o zona numita context. Afisarea contextului se face cu $set Schimbarea si aflarea catalogului curent. Comenzile cd si pwd Utilizatorul poate schimba catalogul curent prin comanda cd (change directory - schimba catalogul curent). Daca val este catalogul curent, atunci comanda $cd .. determina schimbarea acestuia in user (tatal lui), iar comanda $cd determina revenirea la catalogul de referinta (indiferent care este catalogul curent, prin comanda pwd - print working directory- care afiseaza catalogul
de lucru (curent): Rezultatul arata ca /user este acum catalogul curent. Mutarea, copierea si stergerea fisierelor. Comenzile mv, cp si rm Comenzile de mutare, copiere si stergere de fisiere sunt frecvent utilizate in sesiunile de lucru. Comanda mv muta un fisier dintr-un loc in altul al sistemului de fisiere. De exemplu $mv fis1 fis2 muta fisierul fis1 in fisierul fis2, facind practic o redenumire a acestuia. Dupa mutare, fisierul fis1 nu mai exista. Mutarea poate fi mai importanta, schimbindu-se catalogul in care este plasat fisierul. De exemplu $mv fis1 /usr/tmp/fis2 face mutarea intr-un fisier din alt catalog decit cel curent. Daca fisierul in care se face mutarea exista deja, atunci continutul lui este inlocuit cu continutul fisierului mutat. Protectia si proprietarul fisierului destinatie nu se modifica. Altfel, fisierul este creat, si abia apoi se face mutarea. Protectia noului fisier este cea a fisierului de origine. Destinatarul poate fi un catalog. In acest caz, fisierul se muta in noul catalog pastrind numele din catalogul sursa. In plus este posibila mutarea mai multor fisiere: $mv fisier1 fisier2 fisier3 catalog1 Forma generala a comenzii de mutare este urmatoarea: mv a-iia-fia-i fisier1 fisier2 mv a-iia-fia-i fisier... catalog Daca fisier2 exista, el este sters inainte de mutarea lui fisier1; daca el
este protejat la stergere, atunci se cere confirmarea utilizatorului. In a doua forma fisierele pastreaza numele originale. Copierea fisierelor are un efect similar, dar fisierele care se copiaza raqmin in continuare in sistem. Comenzile prezentate ca exemple la comanda anterioara devin: $cp fis1 fis2 Prima copiaza continutul unui fisier in altul. Daca fisier2 exista deja, atunci proprietarul si modul sunt pastrate. Astfel, se imprumuta valorile de la fisier1. Optiunile au urmatoarele semnificatii: -f forteaza stergerea numelor existente pentru caile destinatiei, inainte de
copiere; Desi poate parea ciudata discutia despre stergerea fisierelor, atiat timp cit
nu s-a prezentat modalitatea de creare a lor, importanta pe care aceasta operatie
o are in activitatea utilizatorului justifica prezentarea ei cit mai devreme.
rm a-fia-ria-iia-i fisier /catalog unde optiunile se refera la urmatoarele: -i se cere o confirmare a utilizatorului la fiecare fisier Exemple privind utilizarea comenzii vor fi date in continuare. Crearea si distrugerea cataloagelor. Comenzile mkdir si rmdir Comanda mkdir este folosita pentru crearea unui catalog. Forma generala a comenzii este mkdir nume_catalog Ca efect, se creeaza catalogul nume_catalog, ca sub-catalog al catalogului
curent. Comanda rmdir sterge un catalog. Forma ei este urmatoarea: rmdir nume_catalog Stergerea unui catalog presupune stergerea prealabila a tuturor fisierelor inregistrate in el (comanda de stergere a fisierelor este rm). Daca un catalog nu contine alte subcataloage, atunci comanda rm nume_catalog/* face acest lucru, daca utilizatorul poseda toate fisierele din nume_catalog si are drept de scriere in el. Protectia fisierelor Intr-un sistem in care coexista mai multi utilizatori, apare fireasca intrebarea: Mecanismul de protectie a fisierelor reprezinta raspunsul acestei intrebari. Fiecarui fisier ii este asociat un ansamblu de indicatori care specifica drepturile de acces ale urmatoarelor categorii de utilizatori: * proprietarul fisierului; Dreptul de acces al fiecarei categorii este stabilit la crearea fisierului
si poate fi modificat de proprietar. In plus, administratorul (sau superutilizatorul) are drepturi de acces neconditionat in orice fisier. Dreptul de acces se poate
reduce la simpla citire a fisierului, la modificarea lui, la executia programului
continut de fisier sau la orice combinatie a acestor drepturi elementare. $ls -l total 2 drwxr-x-x 2 valentin 512 Apr 1 15:20 bin Aici, -l (log-list) reprezinta o optiune care cere sistemului sa afiseze informatii detaliate despre fisiere. Primul cimp al fiecarei linii precizeaza tipul fisierului (- obisnuit, d director, b fisier special de blocuri, c fisier special de caractere, p fisier pipe etc). Drepturile sunt mentionate in ordinea proprietar-grup-oricare, iar conventiile folosite pentru desemnarea lor sunt: r pentru drept de citire (read); Pentru a afisa fisiere speciale sau invizibile se poate folosi $ls -a Cu comanda ln se pot crea nume alias pentru fisiere. $ln f1 f2 Folosind apoi ls -i, se observa efectul lui ln, prin atribuirea unui alias unui fisier deja existent. $ls -i f1 Avem acum doua nume, f1 si f2, pentru acelasi fisier fizic. Observatia care trebuie facuta este ca nu se pot crea aliasuri pentru directoare. Pentru a afisa continutul fisierelor se poate folosi cat $cat nume_fisier Daca nu se introduce nici un parametru, cat citeste de la terminal primele $cat f1 f2 f3 Se poate crea un fisier vid f1 cu $cat /dev/null > f1 sau se pot introduce informatii intr-un fisier $cat > f1 Pentru a determina unde se gasesc unele fisiere se poate folosi find. $find nume expresie Astfel $find / -name '*.doc' -print se cauta din root (/) iar conditia este ca extensia sa fie doc. $find /usr/ana -name '*.doc' -print aceeasi conditie in directorul /usr/ana Comanda grep cauta intr-o lista de fisiere , linie cu linie, indeplinirea unei conditii $grep test lista Comanda wc contorizeaza linii, cuvinte si caractere din fisiere sau din standard input daca nu este specificat nici un fisier $wc test va contoriza numarul de fisiere din directorul curent. Asa cum am vazut, pentru admiterea unui utilizator in sistem, el trebuie sa
fie inregistrat in fisierul de conturi si sa execute o secventa de actiuni de intrare Este interesant ca sistemul permite ca un acelasi utilizator sa lucreze simultan la mai multe terminale (sau ca utilizatori diferiti sa foloseasca acelasi cont acelasi nume si aceeasi parola de intrare). Lista utilizatorilor, impreuna cu terminalele asociate si cu momentele intrarii in sistem pot fi aflate prin comanda who: $who root tty2 Mar 27 10:48 root tty1 Mar 27 10:47 marni ttyp5 Mar 27 10:50 (marn37.cs.tuiasi.ro) Aici, in a treia linie, marni este numele utilizatorului, ttyp5 este terminalul iar Mar 27 10:50 este momentul deschiderii sesiunii de lucru (luna, ziua, ora, minutul). Domeniul din care face parte utilizatorul este marn37.cs.tuiasi.ro. Pentru a afla numele utilizatorului de la terminalul curent trebuie introdus $who am i sigma!marni ttyp5 Mar 27 10:52 (marn37.cs.tuiasi.ro) $finger Orice comanda poate fi invatata prin inspectarea manualului, Comanda are mai multe optiuni, care permit selectia unor pagini de manual,
a unor sectiuni, a formei de prezentare a continutului manualului si altele. Comanda man man ofera posibilitatea cunoasterii tuturor amanuntelor despre utilizarea
comenzii man. Pentru majoritatea cazurilor, forma man titlu, unde prin titlu
se intelege numele unei comenzi, este suficienta. Aflarea versiunii curente se face cu comanda which man, la care uzual se primeste raspunsul mentionat. Se poate cauta si dupa cuvint cheie dat ca parametru. Elementele din lista pot fi folosite apoi la inspectarea anumitor pagini din manualul interactiv. Pentru comanda echo, sistemul ne furnizeaza urmatorul raspuns: $man echo Name echo - echo arguments Syntax echo a-uiaarg...i Description Options Examples echo ... 1>&2 Concluzie : Forma generala a unei comenzi UNIX este urmatoarea : nume_comanda aoptiuneiafisieri... unde In general, pe o linie se scrie o singura comanda. Este insa permisa scrierea unei comenzi pe mai multe linii, folosind ca semn de continuare caracterul '\'. $echo\ comanda aceasta este scrisa\ pe mai multe linii comanda aceasta este scrisa pe mai multe linii De asemenea, se pot da mai multe comenzi pe aceeasi linie. Comenzile aflate pe aceeasi linie trebuie separate intre ele prin semnul ';'. De exemplu : $ pwd; ls In general, o comanda admite mai multe fisiere, care pot fi specificate uneori printr-o notatie prescurtata, folosind caracterele generice ?, * si ai, cu urmatoarele semnificatii : ? semnifica orice caracter; Citeva exemple ilustreaza utilitatea lor : cot? semnifica toate numele de patru caractere, primele trei fiind cot (cota, cotb, cotc, ...); cas* semnifica toate numele avind oricite caractere, primele trei fiind cas Din cele prezentate nu trebuie inteles ca interpretorul inlocuieste notatia generica cu toate instantele posibile, alcatuind astfel o lista echivalenta. $rm *.h sterge toate fisierele cu extensia h, aflate in catalogul curent, iar comanda $rm * sterge toate fisierele din catalogul curent. Similar, comanda $ls/dev/d? d1 d2 d3 d4 afiseaza numele fisierelor din catalogul /dev care au doua caractere, dintre
care primul este caracterul d, adica d1, d2, d3 si d4. * caracterul generic este precedat de caracterul \; Astfel, mas\*, 'mas*' si "mas*" sint interpretate ca mas* si nu ca un tipar de patru caractere, in care primele trei sint mas. Interpretarea executiei unei comenzi Unele comenzi sint simple si cu o durata de executie scurta. Altele sint mai
complicate si de durata mare. Executia lor poate poate presupune un dialog cu
utilizatorul, pentru furnizarea unor informatii suplimentare sau pentru transmiterea unor comenzi specifice. De exemplu, o comanda de editare a unui
fisier pune in executie un editor. Comenzile de editare sint adresate editorului si nu interpretorului. Abia la terminarea editarii, editorul preia
controlul, urmind ca el sa primeasca urmatoarea comanda. Programatorul trebuie
sa stie, in orice moment, programul care-i preia comenzile si sa foloseasca
numai acele comenzi pe care programul le cunoaste si le accepta. $man date Sistemul afiseaza o pagina din aceasta descriere, asteptind interventia utilizatorului pentru a continua cu pagina urmatoare. Evident, in acest moment, programul man care face afisarea nu este terminat. Apasarea unei taste oarecare determina continuarea executiei lui.Utilizatorul poate determina terminarea executiei (si deci a sfirsitului descrierii) prin apasarea ^C. Ca
urmare, sistemul nu mai afiseaza restul descrierii fiind reactivat interpretorul de comenzi. |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|