Sunteți pe pagina 1din 11

Comenzi Unix - prezentare a principalelor categorii de comenzi :

1.
2.
3.
4.
5.

Introducere
Comenzi de help
Comenzi pentru lucrul cu fisiere si directoare
Alte categorii de comenzi
Troubleshooting (Ce sa faceti daca se blocheaza un program)

Introducere

La fel ca in MS-DOS, si in Unix exista doua categorii de comenzi (numite


si comenzi Unix, sau comenzi shell):
comenzi interne :
comenzi care se gasesc in fisierul executabil al shell-ului (i.e., interpretorului de
comenzi) respectiv, ca de exemplu: cd, echo, alias, exec, exit, s.a.
comenzi externe :
comenzi care se gasesc separat, fiecare intr-un fisier avind acelasi nume cu
comanda respectiva.
Acestea pot fi de doua feluri:
1. fisiere executabile (adica, programe executabile obtinute prin compilare
din programe sursa scrise in C sau alte limbaje), ca de
exemplu: ls, chmod,passwd, bash, s.a.;
2. script-uri (adica, fisiere de comenzi, analogul fisierelor *.bat din MSDOS), ca de exemplu: .bash_profile, .bashrc, s.a.
Forma generala a unei comenzi Unix este:
UNIX> nume_comanda optiuni argumente ,
unde optiunile si argumentele pot lipsi, dupa caz.
Prin conventie, optiunile sunt precedate de caracterul '-' (in MS-DOS este folosit
caracterul '/'). Argumentele sunt cel mai adesea nume de fisiere.
Daca este vorba de o comanda externa, aceasta poate fi specificata si prin calea ei
(absoluta sau relativa).
Separatorul intre numele comenzii si ceilalti parametri ai acesteia, precum si intre
fiecare dintre parametri este caracterul SPACE sau TAB (unul sau mai multe spatii sau
tab-uri).
O comanda poate fi scrisa pe mai multe linii, caz in care fiecare linie trebuie terminata
cu caracterul '\' , cu exceptia ultimei linii.

Pentru a putea executa fisierul asociat unei comenzi, utilizatorul care a lansat acea
comanda trebuie sa aiba drept de executie (i.e., atributul x corespunzator sa fie setat)
pentru acel fisier (vezi lectia filesys pentru amanunte legate de drepturile de acces la
fisiere).
Mai multe amanunte despre comenzile Unix vom vedea in lectia shell.
In continuare vom trece in revista principalele categorii de comenzi Unix disponibile:

Comenzi de help

Lista tuturor comenzilor interne disponibile intr-un anumit shell se poate obtine
executind in acel shell comanda urmatoare:
UNIX> help

iar pagina de help pentru o anumita comanda interna se obtine cu comanda:


UNIX> help nume_comanda_interna

Pentru a obtine help despre comenzile externe sunt disponibile urmatoarele


comenzi: man, whatis, apropos, info.
Comanda man se foloseste cu sintaxa:
UNIX> man [nr_sectiune] cuvint

si are ca efect afisarea paginii de manual pentru cuvintul specificat.


Cuvintul specificat reprezinta numele unei comenzi externe sau numele unei functii
de biblioteca C/C++ pentru care se doreste obtinerea paginii de manual.
Pagina afisata cuprinde: sintaxa comenzii/functiei, optiunile si argumentele ei cu
descrierea lor, efectul acelei comenzi/functii, exemple, etc.
Argumentul optional nr_sectiune se utilizeaza atunci cind exista mai multe comenzi
sau functii de biblioteca cu acelasi nume, pentru a afisa pagina de manual
(corespunzatoare uneia dintre acele comenzi sau functii) din sectiunea de manual
specificata.
Exemple:

UNIX> man man

Efect: afiseaza pagina de manual referitoare la comanda man.

UNIX> man write

Efect: afiseaza pagina de manual referitoare la comanda write, care scrie un


mesaj pe terminalul utilizatorului specificat.

UNIX> man 2 write

Efect: afiseaza pagina de manual referitoare la functia de biblioteca write, care


este apelata in programe C pentru a executa o scriere in fisierul specificat.
Comanda whatis se foloseste cu sintaxa:
UNIX> whatis cuvint

si are ca efect cautarea cuvintului specificat in baza de date whatis ce contine scurte
descrieri despre comenzile Unix si functiile de biblioteca C, si afisarea rezultatului
cautarii (numai potrivirile exacte ale cuvintului cautat sunt afisate).
Exemple:

UNIX> man whatis

Efect: afiseaza pagina de manual referitoare la comanda whatis.

UNIX> whatis write

Efect: afiseaza urmatoarele doua pagini de manual referitoare la write:


write
write

(1)
(2)

- send a message to another user


- write to a file descriptor

Comanda apropos se foloseste cu sintaxa:


UNIX> apropos cuvint

si are ca efect cautarea cuvintului specificat in baza de date whatis ce contine scurte
descrieri despre comenzile Unix si functiile de biblioteca C, si afisarea rezultatului
cautarii (sunt afisate toate potrivirile, nu doar cele exacte, ale cuvintului cautat).
Exemple:

UNIX> man apropos

Efect: afiseaza pagina de manual referitoare la comanda apropos.

UNIX> apropos write

Efect: afiseaza o lista (destul de mare) cu toate paginile de manual ce contin


cuvintul write, fie ca nume de comanda sau functie de biblioteca, fie in
descrierea vreunei comenzi sau functii.
Comanda info se foloseste cu sintaxa:
UNIX> info [optiuni] [cuvint ...]

si are ca efect afisarea documentatiei in format Info pentru cuvintul(-ele) specificat(e).


Documentatia in format Info este o alternativa la paginile de manual furnizate de
comanda man.
Formatul Info este o ierarhie arborescenta de documente, ce contin hiper-legaturi
(cross-referinte) intre ele, asemanator cu documentele HTML.

Exemple:

UNIX> man info

Efect: afiseaza pagina de manual referitoare la comanda info.

UNIX> info

Efect: afiseaza radacina documentatiei in format Info, din care se poate naviga
in toate documentele.

UNIX> info write

Efect: afiseaza documentatia despre comanda write.


IMPORTANT:

Folositi help-ul furnizat de comanda man pentru a afla in mod amanuntit pentru
ce se folosesc si cum se folosesc toate comenzile pe care le veti intilni la
laboratoarele de Unix.
De asemenea, exersati diverse exemple pentru fiecare comanda pentru a
intelege bine ce face si cum functioneaza acea comanda.

Comenzi pentru lucrul cu fisiere si directoare

Acestea sunt prezentate in lectia filesys.

Alte categorii de comenzi

1. Comenzi pentru login/logout la un calculator Unix:


2. pentru login:
- login (login numai de la terminale locale);
- rlogin (login de pe alte calculatoare, cu acelasi tip de Unix);
- telnet (login de pe alte calculatoare, conexiunea fiind prin protocolul
necriptat TELNET);
- ssh (login de pe alte calculatoare, conexiunea fiind prin protocolul
criptat SSH).
3. pentru logout:
- logout;
- exit (posibil numai din shell-ul de login).

4. Comenzi pentru schimbarea datelor unui cont de utilizator Unix:


5. pentru schimbarea parolei:
- passwd

6. pentru schimbarea shell-ului implicit (i.e., shell-ul de login):


- chsh

7. Comenzi pentru scrierea de mesaje:


8. pentru afisarea unui mesaj pe ecran (la fel ca in MS-DOS):
- echo

9. pentru trimiterea unui mesaj altui utilizator conectat la sistem:


- write

10. pentru activarea/dezactivarea primirii mesajelor trimise cu comanda write de


alti utilizatori:
- mesg [y|n]

11. pentru stabilirea unei ferestre de comunicare de mesaje intre diferiti utilizatori
conectati la sistem:
(pentru comunicare intre 2 utilizatori)
- ytalk (pentru comunicare intre mai multi utilizatori)
Exemple:
- talk

UNIX> echo mesaj

Efect: afiseaza pe ecran mesajul specificat.


UNIX> write user [terminal] ENTER
Prima linie a mesajului ENTER
A doua linie a mesajului ENTER
.....................................
Ultima linie a mesajului ENTER
^D (tastele CTRL + D, adica, caracterul EOF)

Efect: afiseaza mesajul specificat pe ecranul utilizatorului specificat, eventual


in sesiunea de lucru specificata prin terminal (lucru util daca acel utilizator are
deschise mai multe sesiuni de lucru in momentul respectiv).
UNIX> mesg n

Efect: dezactiveaza afisarea pe ecran a mesajelor trimise ulterior cu


comanda write de catre alti utilizatori (dezactivarea este utila atunci cind
afisarea acelor mesaje deranjeaza utilizatorul respectiv).

12. Comenzi ce ofera informatii despre utilizatori:


13. informatii despre utilizatorii conectati la sistem, in diverse formate:
= afiseaza numele utilizatorilor conectati la sistem;
- who = afiseaza utilizatorii conectati la sistem si numele terminalelor;
- rwho = afiseaza utilizatorii si terminalele conectate la sistem de la distanta;
- w = afiseaza utilizatorii conectati la sistem, numele terminalelor, procesul
curent executat in foreground pentru fiecare terminal, s.a.;
- whoami = afiseaza numele utilizatorului curent;
- who am i = afiseaza numele calculatorului, numele utilizatorului curent,
numele statiei, data si ora logarii, s.a.
- users

14. informatii personale despre un utilizator (nume real, adresa, last login, s.a.):
- finger

15. informatii de identificare despre un utilizator (UID-ul, GID-ul, alte grupuri de


care apartine, s.a.):
- id

16. Comenzi ce ofera informatii despre terminale:


17. pentru aflarea terminalului la care esti conectat:
- tty

18. pentru aflarea/setarea diferitelor informatii (ca de exemplu: viteza de transfer,


secventele escape, tastele de intrerupere, s.a.) referitoare la terminalele asociate
sesiunilor de lucru:
- stty

19. Comenzi ce ofera informatii despre data, timp, s.a.:


20. informatii despre data, timp, etc., in diverse formate:
- date
- cal

= afiseaza data si ora curente;


= afiseaza calendarul lunii curente, sau a anului specificat.

21. informatii despre momentul cind a fost ultima oara pornit (boot-at) un
calculator:
= timpul ultimei porniri a calculatorului local;
ruptime = timpul ultimei porniri a calculatoarelor din retea.

- uptime
-

22. Comenzi ce ofera informatii despre procesele din sistem, in diverse


formate:
23. comanda process status, ce afiseaza informatii despre procesele din sistem
(PID-ul, starea procesului, proprietarul procesului, cita memorie ocupa, cit timp
procesor consuma, s.a.):
- ps

24. pentru afisarea job-urilor aflate in lucru:


- jobs

25. pentru planificarea lansarii unor job-uri la anumite ore:


= planifica lansarea unei comenzi la o anumita ora (rezultatele se
primesc in mail);
- atq = afiseaza lista comenzilor planificate (aflate in coada de asteptare);
- atrm = stergerea din coada de asteptare a unor comenzi planificate anterior.
- at

26. alte comenzi referitoare la procese:


= afiseaza timpii de executie a proceselor din sistem;
- nice = permite stabilirea prioritatii de executie a unui proces;
- nohup = no hang-up : permite continuarea executiei proceselor ce folosesc
intrarea/iesirea standard, si dupa incheierea sesiunii de lucru (prin deconectare
de la sistem cu logout).
Exemple:
- times

UNIX> ps

Efect: afiseaza informatiile doar despre procesele utilizatorului curent, ce sunt


rulate in foreground.
UNIX> ps -ux

Efect: afiseaza informatiile despre toate procesele utilizatorului curent, inclusiv


cele ce sunt rulate in background sau fara terminal de control.
UNIX> ps -aux

Efect: afiseaza informatiile despre toate procesele din sistem, ale tuturor
utilizatorilor.
27. Comenzi pentru arhivare/comprimare/codificare de fisiere:
28. pentru arhivarea fisierelor:
- tar

29. pentru comprimarea/decomprimarea unui fisier:

- gzip / gunzip
- compress / uncompress

30. pentru codificarea/decodificarea unui fisier:


- encode / decode

Exemple:
UNIX> tar cf arhiva.tar ~/work/proiect

Efect: arhiveaza in arhiva arhiva.tar continutul directorului ~/work/proiect.


UNIX> tar xf arhiva.tar

Efect: dezarhiveaza arhiva arhiva.tar.


UNIX> gzip arhiva.tar

Efect: comprima fisierul arhiva.tar, producind fisierul arhiva.tar.gz.


UNIX> gunzip arhiva.tar.gz

Efect: decomprima fisierul arhiva.tar.gz, producind fisierul arhiva.tar.


UNIX> tar zcf arhiva.tar.gz ~/work/proiect

Efect: arhiveaza si comprima cu gzip in arhiva arhiva.tar.gz continutul


directorului ~/work/proiect.
UNIX> tar zxf arhiva.tar.gz

Efect: dezarhiveaza si decomprima arhiva arhiva.tar.gz.


31. Comenzi pentru cautarea de pattern-uri (sabloane) in fisiere:
32. pentru cautarea unui pattern (i.e. o expresie regulata) intr-un fisier sau grup de
fisiere si afisarea tuturor liniilor de text ce contin acel pattern:
- grep

33. comenzi (mai exact, limbaje interpretate) pentru procesarea de pattern-uri si


constructia de comenzi Unix:
- awk
- sed
- perl

Exemplu:
UNIX> cat /etc/passwd | grep so

Efect: afiseaza linia cu informatiile despre contul so din fisierul /etc/passwd.


34. Comenzi (programe) pentru diferite protocoale INTERNET:
35. pentru posta electronica:
- mail (utilitar in linie de comanda)
- pine (utilitar in mod text)
36. pentru transferul de fisiere prin retea folosind protocolul FTP:

- ftp = un program client de FTP, in linie de comanda


Observatie: FTP-ul este un protocol pentru transferul de fisiere intre doua
calculatoare legate in retea, ca de exemplu oricare doua calculatoare legate la
Internet.
- scp = un program client de SCP (SecureCopy = un FTP criptat), in linie de
comanda. Sub Windows este disponibil si in varianta grafica WinSCP.
Observatie: este recomandabil de folosit SCP-ul in locul clientilor clasici de FTP,
deoarece FTP-ul nu este un protocol criptat.
37. pentru transferul de pagini web din WWW folosind protocolul HTTP:
- lynx = un browser WWW (i.e. un program client de WWW), in mod text
- netscape = un browser WWW, in mod grafic (necesita X-Windows)
Observatie: WWW (World Wide Web) este un protocol pentru gestionarea
informatiilor in INTERNET, avind la baza protocolul HTTP si limbajul HTML(HyperText Markup Language).
38. pentru regasirea informatiilor personale, folosind protocolul FINGER:
= un program client de FINGER, in linie de comanda
Observatie: FINGER este un protocol pentru regasirea informatiilor personale
(nume real, adresa, last login, last mail read, s.a.) despre un utilizator de pe un
calculator din reteaua INTERNET.
- finger

39. pentru rezolvarea numelor simbolice in adrese IP sau invers, folosind


serviciul DNS:
= un program in linie de comanda
Observatie: Fiecare calculator conectat la INTERNET are asociata o
adresa IP unica, care este un sir de 4 numere (4 octeti). Deoarece astfel de
adrese sunt greu de retinut, s-au asociat si nume simbolice. Transformarea
adresei IP a unui calculator in numele simbolic asociat acelui calculator se face
prin protocolul ARP, iar transformarea inversa se face prin protocolul RARP, in
ambele situatii utilizindu-se serviciul DNS (Domain Name Service).
Exemple:
- nslookup

UNIX> finger so

Efect: afiseaza informatiile personale despre contul utilizator so de pe


calculatorul fenrir.
UNIX> finger vidrascu@thor.infoiasi.ro

Efect: afiseaza informatiile personale despre contul utilizator vidrascu de pe


calculatorul thor.
UNIX> nslookup fenrir.infoiasi.ro

Efect: afiseaza adresa IP (193.231.30.197) a calculatorului fenrir.


UNIX> nslookup 193.231.30.197

Efect: afiseaza numele simbolice (fenrir.infoiasi.ro si fenrir.info.uaic.ro)


asociate calculatorului cu adresa IP 193.231.30.197.
40. Alte comenzi:
41. comanda interna prin care se definesc/sterg alias-uri (pseudo-comenzi), prin
redenumirea vechilor comenzi sau inlantuirea mai multor comenzi:
- alias / unalias

Exemple:
UNIX> alias ll='ls -Al'

Efect: defineste alias-ul cu numele ll.


UNIX> ll tmpdir

Efect: executa alias-ul cu numele ll si cu parametrii specificati, adica, in acest


caz, executa comanda:
ls -Al tmpdir.
42. comanda ce copie intrarea standard (stdin) in iesirea standard (stdout) si in
fisierul specificat ca parametru:
- tee

Exemplu:
UNIX> my_program | tee results.txt

Efect: mesajele scrise pe stdout in timpul executiei programului specificat sunt


tiparite si in fisierul results.txt, putind fi deci consultate dupa terminarea
executiei programului.
(Aceasta facilitate este utila pentru depanarea programelor.)
43. comanda pentru executia iterativa a unei comenzi specificate pentru un set de
diferite linii de apel (i.e., parametri de apel pentru acea comanda):
- xargs

44. mai sunt multe alte comenzi; o parte dintre ele le veti intilni pe parcursul
lectiilor urmatoare.

Troubleshooting (Ce sa faceti daca se blocheaza un program)

Sa presupunem ca in timpul executiei unei comenzi (un program de sistem sau un


program scris de voi), aveti impresia ca acesta s-a blocat (nu mai apare nici un mesaj
pe ecran, desi ar fi trebuit, etc.).
Intr-o asemenea situatie nu trebuie sa intrati in panica, ci, pentru a opri acest program,
deci pentru a obtine din nou controlul asupra prompterului shell-ului, urmati urmatorii
pasi in ordinea in care sunt prezentati, oprindu-va la pasul la care ati reusit sa
deblocati programul (adica sa apara prompterul):
1. Mai intii, asteptati un timp rezonabil, poate totusi programul nu este blocat, ci
doar ocupat cu calcule laborioase.
Daca totusi nu apare prompterul, atunci:
2. Apasati tastele ^C (adica, CTRL + C).
Aceasta determina trimiterea semnalului de intrerupere SIGINT programului
respectiv.
Daca totusi nu apare prompterul, atunci:
3. Apasati tastele ^\ (adica, CTRL + \).
Aceasta determina trimiterea semnalului de terminare SIGQUIT programului
respectiv.
Daca totusi nu apare prompterul, atunci:
4. Apasati tastele ^Z (adica, CTRL + Z).
Aceasta determina suspendarea programului respectiv (adica acel program este
trecut in starea SUSPENDED) si afisarea prompterului.
Mai departe, pentru a opri acel program (el este doar suspendat, nu si terminat),
procedati astfel: dati comanda
UNIX> ps

pentru a afla PID-ul acelui program, iar apoi dati comanda


UNIX> kill -9 pid

unde pid este PID-ul aflat anterior. Ca urmare a acestei comenzi procesul
(programul blocat) este omorit (terminat).
In acest moment ati scapat de acel program ce se blocase si aveti din nou controlul
asupra prompterului shell-ului.

=================================== EOF
===================================

S-ar putea să vă placă și