RADIO PRIETENIA - Radioul sufletului tau ! - Shell
   
  - R A D I O P R I E T E N I A -
  Home
  Guestbook
  Despre Radio
  Forum
  Echipa Radio
  Comenzi X
  EggDrop
  RooT
  Shell
  Comenzi Trivia

Copyright Radio Prietenia

Interpretorul de comenzi (Shell) al sistemului de operare UNIX este un program executabil aflat pe HD în directorul /bin si care are numele de cale(path) /bin/sh. Este tratat de catre nucleul (Kernel) sistemului de operare ca orice proces utilizator neprivilegiat. La deschiderea sesiunii de lucru, se lanseaza un proces shell la terminalul (statia de lucru) la care lucreaza utilizatorul, asteptând comenzi.

          Din punct de vedere al utilizatorului, Shell ofera o interfata complexa cu sistemul, pe doua nivele:



·       prelucrarea si executia comenzilor ce sunt programe independente de interpretor, prezente ca fisiere executabile în directoarele /bin, /usr/bin sau /etc;

·       dezvoltarea de programe structurate, într-un limbaj de programare oferit de Shell si care sunt fisiere de comenzi (profil; scenarii) destinate unor aplicatii ce necesita înlantuirea de actiuni diverse conform unor algoritmi.



          O comanda shell are urmatoarea forma sintactica generala:



                        $   []   [ ]     ,unde:



·       reprezinta numele comenzii (fisier executabil = procedura, functie, program);

·       reprezinta optiuni desemnate printr-o litera, precedata de semnul ”-“ sau “+”; daca sunt mai multe optiuni, acestea se scriu una dupa alta, fara spatiere, dar precedate de semnul “-“ sau “+”;

·       reprezinta nume de fisiere sau siruri de caractere ce constituie parametrii comenzii.





            Observatie. Cele trei constructii lexicale   ,   ,   , trebuie sa fie separate prin spatii.



            Numele comenzii este numele fisierului executabil ce urmeaza a fi executat si este cautat în urmatoarea secventa:



·       în directorul curent; daca nu este gasit;

·       în directorul /bin ; daca nu este gasit;

·       în directorul /usr/bin ; daca nu este gasit;

·       în caz contrar se da mesaj de eroare afisat de Shell.



            Constructia lexicala reprezinta de multe ori nume de fisiere a carui sintaxa a fost precizata. Interpretorul Shell permite specificarea fisierelor si prin utilizarea urmatoarelor metacaractere:



·       “*”       ce semnifica orice sir de caractere, inclusiv sirul vid;

·       ‘?”         ce semnifica orice caracter;

·       “[…]”   ce semnifica o multime de caractere;

·       “-“         ce semnifica o secventa lexicografica.



            Pe baza acestor metacaractere, interpretorul Shell va genera nume de fisiere utilizate în cadrul comenzilor.



            Exemple.



1.   *.c                 - indica toate fisierele având sufixul c;

2.   def[0-9]         - indica fisierele def0, def1, …, def9;

3.   prog[09]       - indica fisierele def0, def9;

4.   cap?               - indica fisierele existente cap1, cap2, cap3;

5.   cap*               - indica fisierele existente cap1, cap2, cap3, cap1.c, cap2.c;

6.   prog[*?]         - indica atât varianta prog*, cât si varianta prog?.





            Procese paralele



          În mod normal, interpretorul de comenzi Shell executa comenzile secvential, dar are facilitati pentru lansarea de procese în paralel pe care sa le controleze. Un proces este creat de un alt proces prin executia functiei (apelului) de sistem fork.

          Dupa initierea (deschiderea) unei sesiuni de lucru la un terminal (statie de lucru), sistemul Unix lanseaza un proces Shell pentru terminalul respectiv. În mod normal, sistemul Unix considera ca un proces poate sa treaca prin urmatoarele stari:



·       crearea procesului ( functia de sistem fork);

·       asteptarea (repaus) pentru executie (functia de sistem wait);

·       executia procesului ( functia de sistem exec);

·       terminarea (anularea) executiei procesului ( functia de sistem kill);



          Dupa crearea unui proces, acesta este trecut în starea Ready (gata de executie) pentru a trece în starea Run (executie) potrivit principiului de time-sharing, care consta în partitionarea timpului unitatii centrale între procese dupa prioritati. Prioritatile proceselor utilizator sunt evaluate dinamic la intervale fizice (de exemplu la zecimi de secunda):



                      Pp   =   TUC / TM ,   unde



·       Pp   reprezinta prioritatea procesului;

·       TUC reprezinta timpul unitatii centrale acordat procesului;

·       TM   reprezinta timpul în memoria interna   pentru proces.







          Ordinea de prelucrare a proceselor este data de ordinea crescatoare a prioritatilor, procesele de sistem fiind prioritare celor utilizator. Algoritmul de planificare corespunde unui algoritm de tip round-robin ce asigura eliberarea unitatii centrale de catre procesul curent într-un timp finit. Prelucrarea proceselor necesita comunicarea între ele. Exista doua metode de realizare a comunicarii intre procese:



·       tehnica redirectarii   - caz în care se foloseste un fisier ce va fi INPUT pentru un proces si OUTPUT pentru un alt proces;

·       tehnica pipe   - caz în care conectarea se face direct între procese, fara fisier intermediar; mecanism de tip server/client;



          În timpul prelucrarilor are loc sincronizarea proceselor ce se refera la urmatoarele:



·       sincronizarea procesului tata în raport cu procesul fiu si care este controlata de utilizator prin utilizarea functiei de sistem wait care blocheaza procesul tata pâna la terminarea procesului fiu;

·       sincronizarea prin mesaje ce este controlata de sistem si se refera la comunicarea între procese prin pipe;

·       sincronizarea prin evenimente si care este controlata de utilizator prin semnale recunoscute de sistem: pause, kill, allarm.



          Pentru gestionarea proceselor, nucleul (Kernel) foloseste doua zone:



·       tabela de procese în care se introduc mai multe informatii, si anume:

n     identificatorul procesului (PID);

n     identificatorul utilizatorului;

n     lungimea procesului;

n     locul în memorie unde este rezident în mod curent;

·       structura utilizator în care se afla mai multe informatii:

n     zona de salvare a registrilor generali;

n     informatii pentru acces la fisiere;

n     informatii despre directorul curent.



          Fiecare proces   are propriul spatiu de adrese. Procesul poate adresa orice locatie în spatiul sau de adrese fara sa aiba acces la spatiile altor procese. Spatiul de adrese al unui proces este constituit din trei segmente (imaginea procesului, supus swapping-ului):



·       segmentul de text   - contine instructiunile programului (codul);

·       segmentul de date   - contine o zona initializata (constantele programului si tablourile initializate) si o zona neinitializata (initializata cu zerouri);

·       segmentul de stiva   - utilizat pentru stiva de exectie a procesului în mod utilizator;

·       segmentul de sistem - contine o parte din informatiile de comanda ale procesului si stiva nucleului.





                          Principalele comenzi Shell





            Comenzile Shell în sistemul Unix pot fi grupate din punct de vedere al functionalitatii în mai multe categorii:



·       comenzi pentru informare ( cal, date, time, who, echo, passwd, login, mail, elm, write, tty, stty, man);

·       comenzi pentru gestiunea directoarelor ( pwd, cd, mkdir, rmdir, ls);

·       comenzi pentru gestiunea fisierelor ( cat, pr, lpr,lp, file, find, rm, cp, mount, umount, mv, cmp, chmod, chown, chgrp, diff, sort, tsort, tail, wc);

·       comenzi pentru gestiunea proceselor ( ps, nice, kill, sleep, time, sh, at );

·       comenzi pentru gestiunea volumelor ( df, dn ).



            Multe din comenzile Shell sunt de fapt utilitare cu foarte multe facilitati. Pentru descrierea lor vom folosi, conform obisnuintei, câmpuri optionale delimitate de paranteze drepte [ si ],   precum si constructii lexicale pentru entitati (director, fisier, etc. ) delimitate de paranteze ascutite < si >. Vom conveni ca pentru repetarea unui element sa utilizam imediat dupa el scrierea “…”.





Comenzi   pentru informare



1.     $cal   [] []    

- afiseaza calendarul (gregorian) al lunii curente daca lipsesc parametri



2.     $date

- afiseaza data curenta



3.     $time

- afiseaza timpul curent



4.     $who

- afiseaza numele utilizatorilor conectati la sistem în momentul respectiv



5.     $echo   []

- afiseaza (un ecou) la iesirea standard textul  



6.     $passwd

- modifica parola existenta pentru utilizatorul respectiv



      7.   $login

- deschide o sesiune de lucru Unix care va cere numele utilizatorului si parola



      8.   $mail

- emitere/receptie pentru posta electronica

a) expedierea :     $mail  

          - mesajul (de regula mai scurt) se tasteaza imediat dupa comanda si se va termina cu o linie ce va contine “.”; mesajul se va transmite la destinatie în directorul /usr/mail;

b) receptia   : $mail

            - consultarea cutiei postale proprie utilizatorului, numita mbox, si care ofera proprietarului actiuni de vizualizare, stergere, salvare pentru   fiecare mesaj din cutia postala;





              Observatie.Se poate utiliza comanda $ELM pentru listarea tuturor mesajelor,   si care ofera un meniu cu urmatoarele functii:Delete, Undelete, Mail a message, Replay mail, Forward mail, Quit, Read a message.



9.   $write   []

- transmite un mesaj pe terminalul unui utilizator ce este conectat în sistem;

  mesajul se tasteaza imediat dupa comanda si se termina cu +



10.   $tty

    - afiseaza numele terminalului (fisierul atasat)

      Exemplu:

      /dev/pty/ttys3



11. $stty

    -afiseaza caracteristicile terminalului la care se lucreaza (viteza de transmisie (speed), paritatea (even/odd), caracteristici de control);   pentru setarea caracteristicilor se utilizeaza comanda $stty   ;



12. $man   []    

        -   afiseaza pe ecran un help despre comenzi; pentru afisarea structurii   manualelor UNIX si modul lor de consultare, se utilizeaza comanda   $man   man





                    Comenzi pentru gestiunea directoarelor





1.     $pwd

        - afiseaza calea(path) directorului curent; numele comenzii reprezinta   prescurtarea Path Write Directory;

              Exemplu:   /users/vlada



2.     $cd   []

- realizeaza schimbarea directorului curent (change directory), noul   director va fi cel specificat; pentru verificare se pot utiliza doua   comenzi pe aceeasi linie : $cd []   ;   pwd  

- se utilizeaza si urmatoarele variante ale comenzii:

      $cd         - directorul curent devine home aflat în /etc/passwd

      $cd   ..     - directorul curent devine nodul superior(tata)

      $cd /       - directorul curent devine directorul radacina(root)



3.     $mkdir  

      - se creeaza un nou director cu numele specificat, ca subdirector al   directorului curent; sistemul va seta pentru directorul creat toate drepturile (R,W,X) la toate categoriile de utilizatori;



4.     $rmdir  

    -   se sterge directorul specificat numai daca nu contine fisiere



5.     $ls   [] [] …

        - se listeaza continutul directorului specificat(altfel, curent) sau informatii   despre fisierele specificate în cazul în care se specifica;

                        - optiunile permit precizarea informatiilor ce vor fi afisate, eventual ordinea afisarii; optiunile sunt precedate de semnul “-“ si pot fi combinate

                        - cele mai importante optiuni sunt:      

                                      -l   -afiseaza mai multe informatii despre director/fitier (drepturile proprietarului, drepturile grupului, proprietar, dimensiune,data, timpul, nume);

                                        -r   -afiseaza numele fisierelor în ordinea invers alfabetica;

                                        -t   -afiseaza numele sortate dupa data ultimei modificari;

                                        -R   -afiseaza rezumatul directorului specificat si al tuturor subdirectoerelor sale.

                      Exemple.

                            $ls               -listeaza numele subdirectoarelor directorului curent

                            $ls -lt           -listeaza continutul directorului curent, sortat dupa timp

                          $ls -l *.c       -listeaza informatii despre toate fisierele directorului curent

                                                ce au sufixul .c





                                      Comenzi pentru gestiunea fisierelor





1.     $cat []   []   []

    - afisarea/concatenarea/crearea de fisiere text

    Exemple.

      $cat   fisier1     -se afiseaza la terminal continutul fisierului ‘fisier1’

      $cat   fisier1   fisier2   >f3     -se concateneaza cele doua fisiere si   rezultatul se memoreaza în fisierul ‘f3’



          Observatie. Comanda este echivalenta cu $cat fisier[12]   >f3



      $cat   >fisier     -se creeaza un fisier text de la terminal, prin tastarea de la terminal a liniilor, dupa care se tasteaza +, iar fisierul se va salva în ‘fisier’                          



2.     $pr   [] [

- listeaza   prin paginare (antet si linii) fisiere text

Exemplu.

    $pr f1 f2 >f3.pr   -se pagineaza cele doua fisiere, iar rezultatul se salveaza in fisierul ‘f3.pr’



3.     $lpr   []

      - tiparirea la imprimanta a continutului de fitiere text

      Exemple.

    a) $lpr   >fisier.pr     -tipareste la imprimanta continutul fisierului ‘fisier.pr’

b)   $ls -l   /bin/usr/bin   >fisier             -secventa de comenzi realizeaza

$pr fisier   >fisier.pr                       pe rând crearea fisierului ‘fisier’

$lpr fisier.pr                                   cu continutul mai multor directoare,

$rm fisier fisier.pr                         paginarea lui în ‘fisier.pr’, tiparirea

                                                      acestuia la imprimanta, si în final

                                                                  stergerea celor doua fisiere create



4. $lp []

- tiparirea la imprimanta prin paginare a continutului unor fisiere



                      Observatie.Pentru utilizarea corecta a optiunilor pentru fiecare comanda, utilizatorul este invitat sa consulte help-ul oferit   de sistemul   Unix prin comanda:     $man  





          5. $file

-         determina tipul (sursa, obiect, executabil, text, etc.) unui fisier



6.   $find

      - se cauta în directoarele specificate si în toate subdirectoarele lor, pentru

        a se localiza toate fisierele ce satisfac



7.   $rm   []

          - sterge fisierele specificate din directorul curent

- principalele optiuni sunt :

    -i   -consultarea utilizatorului înainte de stergere

    -r   -stergerea   subdirectoarelor

    -f   -stergerea   fisierelor protejate la scriere

Exemple.

  $rm -i *       -se sterg toate fisierele din directorul curent prin confirmare

  $rm -r prog   -se sterge tot subarborele legat de directorul prog



8.   $cp … []

    - realizeaza copierea de fisiere în urmatoarele variante:

              a) $cp f1 f2                 - copiaza fisierul f1 în fisierul f2

              b) $cp f1 [f2…]   dir     -copiaza fisierele f1 f2 … în directorul dir

    Exemplu.    

      $cp chem/*.doc   /esr/user1/john   -copiaza toate fisierele cu sufixul .doc

                                                            subdirectorul john



9.     $mount    

    - montarea (legarea) unui sistem de fisiere la un director;arborele general     al sistemului de fisiere este unic si are radacina root(/); exista fisiere pe   alte suporturi (FD, CD) ce trebuie   introduse în sistem prin operatia de montare; fiecare suport (volum) contine   un sistem propriu de fisiere al carui director   radacina   se   poate   atasa   la   orice   director din sistemul   general de fisiere; operatia poate fi utilizata doar de administratorul de sistem;

      Exemplu.

              $mount /dev/dk00   /usr/vlada

                    -leaga sistemul de fisiere de pe discheta indicata de driver-ul

                    dk00 ca subdirector al directorului   vlada



10. $umount  

      - operatia inversa montarii(legarii) unui sistem de fisiere        



11. $mv

      - mutarea(redenumirea) de fisiere în doua variante:

          a) $mv  

              -fisierul   se redenumeste

b)   $mv

-fisierele specificate sunt introduse în directorul specificat





12. $cmp   []    

      - se compara cele doua fisiere specificate tinând seama de optiunile:

              -l     -compara si tipareste octetii diferiti

              -s     -întoarce codul de retur (0=fisiere identice,1=diferite, 2=erori)            



13. $chmod      

      - schimbarea drepturilor de acces la fisiere ordinare sau director

      - comanda poate fi utilizata doar de proprietarul fisierelor

      - reprezinta categorii de utilizatori, adica

                        U=proprietar

                        G=grup

                        O=restul utilizatorilor

                        A=cele trei categorii

- reprezinta unul dintre caracterele

                      + pentru adaugare

                - pentru stergere

                        = pentru asignare

      - reprezinta drepturile oferite de sistemul de operare

                        r =citire

                        w =scriere

                        x = executie

      Exemple.

        $chmod a+r   fisier1     - se da drept de citire tuturor utilizatorilor   fisierului fisier1

        $chmod go -rw   fisier   -se ridica privilegiile de citire si scriere pentru grup si proprietar



14. $chown    

  - schimba proprietarul unui fisier sau director

        - numele proprietarului se gaseste în fisierul   /etc/passwd



15. $chgrp    

          - schimba grupul unui fisier sau director

- numele grupului se afla în fisierul   /etc/group



16. $diff      

          - compara doua fisiere de tip ASCII folosind optiunile:

                      -b   ignora spatiile si

                      -e   crearea comenzilor de editor (a=adaugare, c=înlocuire,d=stergere)        



17. $sort   [] [+|- poz] … [-o ]  

      - sorteaza fisierele specificate la un loc si rezutatul este dat în

        fisierul f_sortat tinând seama de optiunile:

                  -b     ignora spatiile si  

                  -n     sortare numerica(implicit este alfabetica)  

                    -r     sortare descrescatoare

                    -f   translanteaza literele mari în litere mic

        -   este de forma m.n, unde m este deplasamentul în numar de     câmpuri (începând cu 1), iar n este numarul de caractere   fata de începutul câmpului(numerotat cu 0); semnul + va   însemna începutul cheii de sortare, iar - sfârsitul cheii;





18. $tsort  

        - sorteaza topologic fisierul specificat



19. $tail   []  

        - afiseaza un fragment de la începutul sau de la sfârsitul fisierului

          specificat folosind optiunile:

                      - +n / -n     n   linii/blocuri/caracter   de la început/sfârsit

                        -l   afiseaza linii

                        -b   afiseaza blocuri

                        -c   afiseaza caractere



20. $wc   []  

              - afiseaza numarul liniilor, cuvintelor, caracterelor din fisierul   specificat   folosind optiunile :

                                          -l   afiseaza numar de linii

                                          -w   afiseaza numar de cuvinte

                                          -e   afiseaza numarul caracterelor





                              Comenzi pentru gestiunea proceselor





1.   $ps   []   [ …]

      - afiseaza starile unor procese din sistem tinând seama de optiunile:

                                                -a     toate procesele active din sistem

                                                -l     informatii complete

                                                -n     toate procesele ce nu sunt asociate utilizatorului

      - informatiile referitoare la procese sunt:

              - flag-urile(F) procesului (00=proces terminat,

                                                      01=proces sistem,

                                                      04=proces suspendat de parinte,

                                                      10=proces în memorie, dar blocat)



              - starea procesului(S) (r =proces în coada de asteptare,

                                                  s=proces suspendat,

                                                  t=proces terminat,

                                                  d=proces evacuat temporar pe disc,

                                                  o=proces aflat în executie)

          - identificatorul utilizatorului (uid)

          - identificatorul procesului (pid)

          - identificatorul procesului parinte (ppid)

          - prioritatea procesului (pri)

          - terminalul de unde a fost lansat (tty)

          - timpul oferit de UC (time)                                  

          - prioritate modificata prin nice

          - adresa din memorie la care se afla (addr)

          - lungimea procesului (size)

          - momentul de start al procesului (stime)





2.   $kill   [ ]

        - terminarea unui proces în executie tinând seama de identificatorul   procesului(pid)





3.   $sleep  

        - suspenda temporar executia unui proces





4.   $time  

              - furnizeaza timpul de executie si timpul UC   la sfârsitul terminarii unei                

                comenzi lansate în executie





5.   $sh  

        - lansarea în executie a unui fisier de comenzi Shell





6.   $at     []   [+ ]  

        - lansarea în executie la termen a unui program tinând seama de

                    -   ce reprezinta   h:m (ora si minutul)

-   ce reprezinta numele lunii urmat de numarul zilei

                                      - este unul din cuvintele: minutes, hours, days,   weeks, months, precedat de un numar

              Exemplu.

                  $at   08:05   jan 24   +2 days   prog



7.   $nice   [-n]   []

        - lanseaza un proces în paralel cu prioritate redusa, unde

                -n   este un numar fixat care este adunat la ordinul de prioritate

                      implicit si rezulta prioritatea cu care se executa





Observatie.

Exista un numar de 20 de ordine de prioritate, numerotate da la 1 la 20.

Prioritatea maxima este 1, iar cea minima este 20. În general, daca nu se

modifica explicit prioritatile, un proces se executa cu prioritatea 10 sau cu

o prioritate implicita fixata printr-un apel de sistem.





          Exemplu.

          $nice -8   sort  
b &







                                Comenzi pentru gestiunea volumelor





1.     $df   []

      - indica spatiul liber pe un anumit volum unde este montat un sistem   de fisiere; daca fisierul sistem nu este specificat, se afiseaza spatiul   liber pentru toate sistemele de fisiere montate



2.     $du   []  

              - afiseaza numarul blocurilor alocate pe un volum(disc), unde   este numele unui volum montat sau numele unui   director; optiunile sunt:

                                                -a   genereaza o lista ce contine numele fiecarui fisier si

                                                      numarul de blocuri alocate

                                                -r   scrie mesaje despre directoare ce nu pot fi citite,  

                                                      fisiere ce nu pot fi deschise, etc.

                                                -s   afiseaza numai numarul de blocuri alocate



                                Exemplu.

                                  $du   -a   /usr/user1/teme

---------------------------------> NE GASITI PE CANALUL DE UNDERNET #RADIOPRIETENIA This website was created for free with Own-Free-Website.com. Would you also like to have your own website?
Sign up for free