Comenzi De Baza

43
Sisteme de operare-Concepte avansate Capitolul II Comenzi Linux Obiective. Din punctul de vedere al utilizatorului, cunoaşterea comenzilor reprezintă primul pas în lucrul în mod text sub Linux. După parcurgerea acestui capitol, studenţii trebuie să cunoască sintaxa şi efectul comenzilor: - pentru operaţii asupra cataloagelor şi fişierelor; - pentru operaţii asupra proceselor; - de informare şi administrare. Comenzile prezentate conţin, pe lângă sintaxă, semantică şi opţiunile cele mai importante, şi exemple de utilizare, care ajută la înţelegerea modului de utilizare a acestora. 1. Forma unei comenzi Linux. O comanda Linux are 4 zone sau câmpuri: Primul câmp conţine numele propriu-zis al comenzii (cp - copiere, rm- stergere), care indică ce acţiune realizează comanda respectivă. Al doilea este câmpul de opţiuni. O opţiune este de obicei o literă, care poate fi urmată de un argument şir de caractere sau un număr întreg. Un grup de opţiuni începe cu semnul '' - "(minus). Mai sunt unele comenzi care conţin opţiuni precedate de semnul " +"(plus). Zona de expresii conţine un şir de caractere cerute ca argumente pentru comanda respectivă. Zona de fişiere conţine numele fişierelor utilizate în cadrul comenzii lansate. Separarea câmpurilor sau zonelor se face prin spaţii. Dacă este necesară reprezentarea unui spaţiu, acel spaţiu se reprezintă între acolade sau ghilimele. Majoritatea programelor-comenzi Linux sunt astfel 42

description

Comenzi Linux de baza

Transcript of Comenzi De Baza

1

Comenzi UNIX

Sisteme de operare-Concepte avansate

Capitolul II

Comenzi LinuxObiective. Din punctul de vedere al utilizatorului, cunoaterea comenzilor reprezint primul pas n lucrul n mod text sub Linux. Dup parcurgerea acestui capitol, studenii trebuie s cunoasc sintaxa i efectul comenzilor:

pentru operaii asupra cataloagelor i fiierelor;

pentru operaii asupra proceselor;

de informare i administrare.

Comenzile prezentate conin, pe lng sintax, semantic i opiunile cele mai importante, i exemple de utilizare, care ajut la nelegerea modului de utilizare a acestora.

1. Forma unei comenzi Linux. O comanda Linux are 4 zone sau cmpuri:

( Primul cmp conine numele propriu-zis al comenzii (cp - copiere, rm- stergere), care indic ce aciune realizeaz comanda respectiv.

( Al doilea este cmpul de opiuni. O opiune este de obicei o liter, care poate fi urmat de un argument ir de caractere sau un numr ntreg. Un grup de opiuni ncepe cu semnul '' - "(minus). Mai sunt unele comenzi care conin opiuni precedate de semnul " +"(plus).( Zona de expresii conine un ir de caractere cerute ca argumente pentru comanda respectiv.

( Zona de fiiere conine numele fiierelor utilizate n cadrul comenzii lansate.

Separarea cmpurilor sau zonelor se face prin spaii. Dac este necesar reprezentarea unui spaiu, acel spaiu se reprezint ntre acolade sau ghilimele. Majoritatea programelor-comenzi Linux sunt astfel realizate nct s ajute un utilizator care nu este nc familiarizat cu comanda respectiv. Astfel, dac se introduce numai numele comenzii sau apar erori de sintax la tastare (dar numele comenzii este tastat corect) execuia comenzii const doar n tiprirea (afiarea) unui scurt mesaj explicativ.Exemplu:$ rmproduce rezultatul:syntax: rm -[rf] file(s)O posibil clasificare a comenzilor ntlnite n mod obinuit n sistemele Unix ar fi urmtoarea:1. operaii asupra fiierelor i cataloagelor;2. operaii asupra proceselor;3. operaii de informare i/sau administrare;4. operaii de prelucrare a fiierelor text;5. operaii asupra perifericelor;6. diverse.Descrierea complet a comenzilor se gsete n manualul de referin care nsoete fiecare implementare Linux, att n form on-line (accesibil prin comanzile man sau info), c i n form tiprit. Foarte multe din implementrile recente ofer aceste informaii i pe CD, eventual n format hipertext.O convenie adoptat nc de la primele variante de Unix este aceea ca manualul de referin este mprit n seciuni, iar comenzile sunt descrise n prima seciune. Frecvent n literatura referitoare la Unix se ntlnesc expresii de genul: pentru detalii consultai tar(1). Aceasta nseamn c trebuie consultat pagina de manual pentru comanda tar n seciunea l a manualului de referin. n cadrul fiecrei seciuni informaiile sunt prezentate n ordinea alfabetica a numelui paginii, deci tar(1) trebuie cutat spre sfritul seciunii 1 n forma tiprit a manualului. n acest capitol va fi prezentat doar o selecie de comenzi, iar descrierea acestora nu va fi att de complet ca n manualul de referin. Se introduc ns mai multe exemple de utilizare, iar gruparea comenzilor pe operaii (i nu alfabetic) permite o mai uoar nelegere.

2. Redirectarea intrrilor i ieirilor. Majoritatea comenzilor Linux au asociate un fiier de intrare i un fiier de ieire. Implicit acestea sunt intrarea standard , respectiv ieirea standard. n mod normal, fiierul standard de intrare este tastatura de la care se introduce comanda, iar fiierul standard de ieire este ecranul calculatorului sau terminalului la care lucreaz utilizatorul. Acestea primesc descriptorii de fiier 0 (intrare) i l (ieire) n procesul care este utilizat pentru execuia comenzii. Un al treilea fiier standard, pentru erori, primete descriptorul 2 i este transmis comenzii (de regul este acelai cu fiierul standard de ieire). Interpretorul Linux permite ns utilizatorului sa specifice explicit n linia de comand o alt identitate pentru intrarea standard i/sau ieirea standard, prin caracterele speciale . Astfel:$ cat main.c >program.cface ca listarea fiierului main.c din catalogul curent s nu apar pe ecran, ci s fie salvat n fiierul program.c din catalogul curent. Pentru aceasta, nainte de a se ajunge la lansarea n execuie a comenzii cat, shell-ul deschide pentru scriere fiierul program.c i i acord descriptorul de fiier l n procesul care va executa comanda cat. Dac fiierul program.c exist deja, prin operaia de deschidere pentru scriere coninutul su anterior se pierde; dac fiierul nu exist, el va fi creat de ctre shell i va avea iniial lungimea nul.

ntr-o comand n care se redirecteaz att intrarea ct i ieirea sintaxa va fi:$ command outputdar ordinea de specificare a redirectrilor nu este de regul semnificativ.Bourne shell introduce cteva faciliti de redirectare suplimentare, prezentate n continuare. Astfel, notaia:n>unde n este un ntreg, are semnificaia de redirectare pentru scriere a fiierului cu descriptorul n. Se folosete aceast facilitate n special pentru redirectarea fiierului standard de eroare. Sintaxa unei comenzi n care toate cele 3 fiiere standard sunt redirectate este:$ command output 2> errorsPentru ca fiierul n care se redirecteaz ieirea s nu fie suprascris, ci s se adauge la sfritul lui noi date, se folosete semnul >>. De exemplu, pentru adugarea la sfritul fiierului de erori sintaxa este 2>>. Astfel:$ command >>logfileva determina ca mesajele produse de command s se adauge la sfritul fiierului logfile (fiierul jurnal n care se cumuleaz date despre serviciile oferite de comanda respectiv.

Notaia nume_fiierdup care se introduc liniile fiierului, urmate de Ctrl-D; observm c se realizeaz redirectarea ieirii.

Comanda cp (copy = copiaz)

Sintax: cp [opiuni] nume1 nume2Efect: Copierea unui fiier. Comanda are deci ntotdeauna cel puin 2 parametri.

( Dac ambii parametri reprezint nume de fiiere obinuite, nume2 va fi un fiier nou (i se aloc nod index i blocuri de date proprii), cu coninut identic cu cel al fiierului nume1.

( Dac nume1 este un fiier obinuit, iar nume2 desemneaz un catalog, atunci n catalogul nume2 se creeaz o intrare cu numele nume1 pentru copia fiierului.

( Dac att nume1 ct i nume2 reprezint nume de cataloage, atunci comanda cp se poate executa doar dac este prevzut i opiunea -R sau -r, iar efectul este crearea n nume2 a unui catalog nume1 i copierea recursiv a fiierelor din catalogul original nume1 n catalogul nou creat.

( O alt opiune important a comenzii cp este -i, care determin cerere de confirmare de la utilizator dac prin copiere s-ar suprascrie un fiier existent.Comanda mv (move = mut, transfer)

Sintaxa: mv [opiuni] surs destinaieEfect: Schimbarea numelui (poziiei) unui fiier.

( Ca i comanda cp, mv are minimum 2 parametri. O deosebire esenial ntre cele dou comenzi, este aceea c mv nu creeaz un fiier nou ci, pentru un fiier existent, doar schimb numele su sau poziia sa ntr-un sistem de fiiere. Din acest punct de vedere, se poate mai degrab considera c mv este o operaie asupra cataloagelor.

( Dac surs i destinaie sunt nume de fiiere obinuite, atunci intrarea de catalog cu numele surs dispare i se creeaz o intrare cu numele destinaie.

( Dac surs este nume de fiier obinuit sau de catalog, iar destinaie este nume de catalog, dispare intrarea sursa i se creeaz o intrare cu numele sursa n catalogul destinaie.

( n situaia c surs este un catalog, prin aceast comand ntreaga sub-ierarhie surs i schimb poziia.

( Dac intrarea destinaie exist, ea este suprascris. Se poate evita suprascrierea prin utilizarea opiunii -i, la fel ca i la comanda cp.

Observaie: Comanda mv nu poate realiza traversarea sistemelor de fiiere n situaia n care surs este un catalog (deci cataloagele nu se pot muta dintr-un sistem de fiiere n altul). Pentru fiierele obinuite, ntr-un astfel de caz se creeaz un alt fiier (se aloc nod index i blocurile de date necesare) n noul sistem de fiiere.Comanda ln (link = legtur)

Sintax:ln [-fs] numecale [legtur]sau:

ln [-fs] numecale... catalogEfect: Crearea unei noi legturi pentru un fiier.

( Comanda este nrudit cu cp n sensul c produce noi intrri n catalog, dar nu produce i o copiere fizic a fiierului.

( Dac se folosete prima form sintactic i sunt prezente ambele argumente (fr opiuni), atunci noua intrare de catalog apare sub numele legtur.

( Dac al doilea argument lipsete, legtura creat n catalogul curent va avea acelai nume ca i ultima component din nume_cale.

( Dac se folosete a doua form sintactic, atunci n catalog se creeaz legturi avnd ca nume ultimele componente din lista de nume_cale.

Opiuni. Exist dou tipuri de legturi: fixe (hard), care se creeaz implicit i simbolice, care se creeaz n prezena opiunii -s. O legtur simbolic este de fapt un fiier text, al crui coninut este nume_cale i al crui nume este legtur (sau ultima component din nume_cale). Legturile simbolice pot traversa sistemele de fiiere. Nu se pot crea legturi fixe spre un catalog. Doar superutilizatorul poate fora aceast operaie prin opiunea -f (force = foreaz).

Exemplu:$ cd/home/ij$ ln -s/usr/local/bin/change mychange$ ls -l mychangelrwxrvxrwx i ij staff 21 Oct 17 12:02 mychange ->/usr/local/bin/changen catalogul gazd al utilizatorului s-a creat o legtur simbolic, mychange, spre fiierul /usr/local/bin/change. Se observ c prin comanda

ls -l lungimea fiierului mychange este afiat a fi 21, ceea ce corespunde cu numrul de caractere din numele de cale dat.

Comanda find (=gsete) realizeaz cutarea ntr-o structur de directoare, specificnd numele directorului(calea), criteriul de cutare i opional aciunea care se execut asupra fiierelor gsite. Sintax:find lista-cale expresiiCutarea prin nume se face cu opiunea -name

Exemple:

$ find / -name fisier va lista toate fiierele din sistem al cror nume este `fisier' ; aceast comand va cuta n toate directoarele la care este permis accesul; dac nu este permis accesul se va semnala acest lucru. Opiunea -name este case sensitive; se folosete opiunea `-iname dac nu se dorete s se fac distinie ntre literele mari i cele mici.

$ find / -iname fisier Aceast comand va include n rezultatul cutrii i Fisier sau fIsier , de exemplu.n cutarea fiierelor se pot folosi i abloane i n acest caz numele de fiier este specificat ntre apostroafe.$ find / -name fis*

listeaz toate fiierele din sistem al cror nume ncepe cu caracterele `fis.

$ find / -name fis??? listeaz toate fiierele din sistem al cror nume ncepe cu caracterele `fis, urmate de trei caractere oarecare.

$ find /usr/share -name *fis*

listeaz toate fiierele din din structura care pornete din directorul `/usr/share' cu textul `fis' inclus n nume.Se folosete -regex n locul lui -name pentru a face cutarea pentru fiiere al cror nume trebuie s ndeplineasc un ablon definit printr-o expresie regulat$ find . -regex `.*\(net\|comm\).*` listeaz toate fiierele din structura care pornete din directorul curent al cror nume contine irurile `net` sau `comm` oriunde n numele lor. Cutarea fiierelor dup dimensiune se face cu opiunea -size, urmat de un numr natural, opional precedat de un semn. Avem trei cazuri: cnd este precedat de semnul `+`, rezultatul cutrii va fi toate fiierele care au dimensiunea mai mare dect numrul dat; cnd este precedat de semnul `-`,vor fi selectate toate fiierele a cror dimensiune este mai mic dect numrul dat; cnd nu este specificat nici un semn rezultatul va consta din toate fiierele care au exact aceeai dimensiune. Unitatea implicit este blocul de 512 baii; dac numrul specificat anterior este urmat de caracterul `k,respectiv `b' atunci unitatea de msur este kilobaitul,respectiv baitul.

Exemple:$ find /usr/local -size +1000k [RET]va lista toate fiierele din structura care pornete din directorul `/usr/local' care au mai mult de 10,00 kilobaii.

$ find ~ -size -500b va lista toate fiierele din structura care pornete din directorul gazd care au o dimensiune mai mic de 500 baii

$ find / -size 42 va lista toate fiierele din sistem care au o dimensiune de 42 de blocuri a cte 512 baii.

Se folosete opiunea `-empty`pentru a se gsi toate fiierele de dimensiune nul.

$ find ~ -empty va afia toate fiierele vide din structura care pornete din directorul gazd.

Cutarea fiierelor dup momentul modificrii. Pentru a gsi fiiere modificate ntr-un interval de timp specificat, se folosesc opiunile -mtime sau -mmin; argumentul folosit cu `-mtime` specific numrul de zile, pe cnd cel cu `-mmin` specific numrul de minute.

Exemple:$ find /usr/local -mtime 1 va lista toate fiierele din structura care pornete din directorul /usr/local care au fost modificate n ultimele 24 de ore.

$ find /usr -mmin 5 va lista toate fiierele din structura care pornete din directorul /usr care au fost modificate n ultimele 5 minute.

Pentru a specifica un interval de timp, numrul utilizat ca argument, va fi precedat de semnul `+', respectiv `-', avnd semnificaia selectrii tuturor fiierelor pentru care timpul de la ultima modificare este mai mare sau egal, respectiv mai mic sau egal dect argumentul specificat.Exemple:$ find /usr/local -mtime -1 va afia toate fiierele din structura care pornete din directorul/usr/local care au fost modificate n ultimele 24 de ore.

$ find /usr -mmin -5 va lista toate fiierele din structura care pornete din directorul /usr care au fost modificate n ultimele 5 minute.Opiunea -daystart va specifica faptul c contorizarea timpului se va face ncepnd din ziua curent, n loc de ziua trecut

Exemple:$ find ~ -mtime 2 -daystart va lista toate fiierele din structura care pornete din directorul gazd care au fost modificate de acum dou zile.

$ find /usr -mtime +356 -daystart va lista toate fiierele din directorul structura care pornete din /usr care au fost modificate de cel mult un an.

$ find ~ -mtime 2 -mtime -4 -daystart [RET]va lista toate fiierele din structura care pornete din directorul gazd acum dou pn la patru zile. n exemplul precedent am combinat opiunile -mtime 2 i -mtime -4. Opiunea -newer va fi folosit pentru a gsi fiierele mai noi dect un fiier dat.

Exemplu:$ find /etc -newer /etc/fis va lista toate fiierele din directorul structura care pornete din /etc care au au data de creare mai recent dect fiierul /etc/fis.

Pentru a cuta fiiere a cror dat de creare este ulterioar unei date specificate, se va folosi comanda touch pentru a introduce acea dat ntr-un fiier, care va fi argument pentu opiunea -newer.

Exemplu:$ touch -t 04010000 /tmp/timestamp $ find ~ -newer /tmp/timestamp va cuta toate fiierele din structura care pornete din directorul gazd care au fost modificate dup 1 aprilie 2005(anul curent)Opiunea used este folosit pentru a gsi fiiere accesate dup un numr de zile de la ultima modificare.

Exemplu:$ find ~ -used +100

va cuta fiierele din structura care pornete din directorul gazd care au fost accesate dup cel puin 100 de zile de la data ultimei modificri.Cutarea fiierelor dup proprietar Cu opiunea user, respectiv group se pot cuta fiiere care aparin unui anumit utilizator, respectiv unui grup de utilizatori. Exemple:$ find /usr/local/fonts -user floreava lista toate fiierele din structura care pornete din /usr/local/fonts care aparin utilizatorului florea.

$ find /dev -group infova lista toate fiierele din structura care pornete din directorul /dev al cror proprietar este grupul info.Execuia de comenzi asupra fiierelor cutate se realizeaz cu opiunea -exec care are ca argument o anumit comand. Sfritul comenzii este marcat de caracterele ;. Dac se folosete irul `'{}'` n cadrul comenzii, acesta este nlocuit cu numele de fiier care a fost gsit

Exemple: $ find . -name *.o -exec rm {} ;;va terge toate fiierele cu sufixul .o, situate n catalogul curent sau n subcataloagele acestuia.$ find ~/html/ -name '*.html' -exec grep linux `{}` `;` va gsi toate fiierele din structura care pornete din directorul ~/html/ cu extensia .html i va afia liniile din aceste fiiere care conin textul `linux .Pentru a se realiza comanda respectiv cu confirmare, se folosete -ok n locul lui -exec.

$ find ~ -used +365 -ok rm `{}` `;`

va gsi toate fiierele din structura care pornete din directorul gazd, care au fost accesate la mai mult de un an de cnd au fost modificate i va atepta confirmarea nainte de tergere.

Cutarea fiierelor dup mai multe criterii. Se pot combina mai multe opiuni pentru a se gsi fiierele care ndeplinesc criterii multiple.

Exemple: $ find ~ -name 'fis*' -newer /etc/ultmodva lista fiierele din structura care pornete din directorul gazd al cror nume ncepe cu irul `topi care sunt mai noi dect fiierul /etc/ultmod

$ find ~ -size +2000000c -regex '.*[^gz]' -exec gzip '{}' ';'va comprima toate fiierele din structura care pornete din directorul gazd i care au 0 dimensiune de cel puin doi megabaii i care nu au fost comprimate folosind comanda gzip Legarea n pipe a comenzii find cu alte comenziExemple:

$ find /usr/share \! -type d | wc -lva lista numrul fiierelor din structura care pornete din directorul /usr/share.

$ find /usr/share | wc -lva lista numrul fiierelor i directoarelor din structura care pornete din directorul /usr/share.

$ find /usr/share \! -type f | wc lva lista numrul directoarelor din structura care pornete din directorul /usr/share.

Efect: Cutarea fiierelor dup nume, parial sau complet cunoscut (sau dup alte criterii) n ierarhia de fiiere a unui sistem UNIX. Comanda lucreaz n felul urmtor: pornind de la fiecare nume dat n pathname-list se caut recursiv fiiere care corespund lui expression considerat ca expresie logic. Legturile simbolice ntlnite nu sunt traversate, ci sunt considerate ele nsele ca fiiere la care se aplic criteriul de cutare. Operatorii care pot apare n expression sunt:b) -perm onum - true dac drepturile de acces la fiier corespund exact numrului octal onum.c) -type c - true dac tipul fiierului este c (un caracter care poate fi: f - fiier simplu; d - catalog; b - fiier special bloc; c - fiier special caracter; p - pipe (canal) cu nume; s - socket (pentru comunicarea n reea).d) -user uname - true dac proprietarul fiierului este uname;e) -atime n - true dac fiierul nu a fost accesat de n zile;f) -mtime n - true dac fiierul nu a fost modificat de n zile;g) -ctime n - true dac fiierul nu a fost schimbat de n zile (schimbat nseamn aici fie modificarea fiierului propriu-zis, fie modificarea atributelor sale);h) -print - ntotdeauna adevrat, are ca efect afiarea numelui fiierului curent (care corespunde unui criteriu de cutare anterior specificat n expression);i) -ls - ntotdeauna adevrat, are ca efect afiarea numelui de cale al fiierului curent i informaii suplimentare despre acesta (analog comenzii ls -li);j) -prune - ntotdeauna adevrat, are ca efect colateral oprirea cutrii la numele de cale curent, dac acesta este catalog (nu se caut recursiv);k) -exec command - true dac valoarea returnat de command este 0. Sfritul comenzii este marcat de caracterele \;. Frecvent ca argument al comenzii trebuie luat numele de cale curent, care se indic prin {}.Exemplu: tergerea tuturor fiierelor cu sufixul .o, situate n catalogul curent sau n subcataloagele acestuia:$ find. -name *.o -exec rm {}\;Comanda head (antet)

Sintax: head [-n] [filename... ]Efect: Afiarea primelor linii dintr-un fiier. n absena unor nume de fiiere, fiierul standard de intrare este copiat n fiierul standard de ieire. Opiunea -n, unde n reprezint un ntreg ntre 1 i 9999 precizeaz numrul de linii afiate (valoarea implicit este 10).

Comanda tail (sfrit, coad)

Sintax:tail +|-number [lbc] [f] [filename]sautail + |-number [l] [rf] [filename]Efect: Afiarea ultimei poriuni dintr-un fiier. Comanda se refer ntotdeauna la un singur fiier (fiierul standard de intrare este implicit).

( n absena opiunii number se folosete valoarea implicit 10, iar unitatea de afiare poate fi:

linia (opiunea l sau implicit);

blocul (opiunea b); caracterul (opiunea c). ( Dac number este precedat de semnul +, poziia de nceput a afirii este considerat relativ la nceputul fiierului, iar semnul - face ca specificarea poziiei s se considere relativ la sfritul fiierului.( Dac se folosete a doua form sintactic (unde se lucreaz numai cu linii), opiunea -r are efectul afirii n ordine invers a liniilor (ultima linie din fiier este afiat prima).( Opiunea f (dac fiierul nu este pipe) face ca operaia s nu se termine dup afiarea ultimei uniti solicitate, ci s intre ntr-un ciclu infinit; dup o pauz de o secund se ncearc citirea i afiarea nregistrrilor nou aprute n fiier. Astfel se poate urmri creterea dimensiunii unui fiier scris de ctre un alt proces.

Comanda wc(word count = numr de cuvinte)

Sintax: wc [-lwc] [filename...]Efect: Determinarea numrului de linii, cuvinte i caractere dintr-un fiier . Se consider cuvnt, un ir de caractere delimitat de spaiu, tab sau newline. Fiierul standard de intrare este implicit. Prin opiuni se specific dac se dorete numrul de linii(l), cuvinte(w) sau caractere (c). Implicit se afieaz toate. Dac n comand apar mai multe nume de fiiere se afieaz i numrul total, ca n urmtorul exemplu:$ ls -l *.txt

total 2

-rw-r--r--1ionel42Nov913:57fis1.txt

-rw-r--r--1ionel91Nov913:38fis2.txt

$ wc *.txt

2642fis1.txt

41691fis2.txt

622133 total

Comanda sort (sorteaz)

Sintax:sort [-bdfiMnr] [-tc] [sort-field...] [-cmu] [-o output-file][-T directory] [-y kmem] [-z recsz] filename...Efect:Sortarea coninutului fiierelor text. Sortarea se poate face n ordinea dat de coninutul liniilor sau a unor cmpuri din liniile fiierului. Comanda are un singur parametru obligatoriu: fiierul (fiierele) de sortat. Forma sortat este afiat implicit n fiierul standard de ieire. Prin opiunea o, poate fi specificat un fiier care s conin forma sortat. Sortarea dup linii se face n ordine lexicografic, lund n considerare toate caracterele liniei, cu valoarea lor conform conveniei ASCII.

Sortarea dup dup valoarea anumitor cmpuri din linie, considernd textul unei linii divizat n cmpuri delimitate prin separatori. Cmpurile se indic prin opiunea sort-field..., care are forma unor numere ntregi precedate de semnele + sau -: +nr indic numrul de ordine al cmpului de la care ncepe sortarea iar -nr indic numrul de ordine al cmpului unde se oprete sortarea (cmpurile se numeroteaz de la stnga la dreapta, ncepnd cu 0). Ca separatori de cmpuri se consider implicit caracterele spaii albe. Se poate ns indica un separator explicit prin opiunea -tc unde c reprezint caracterul folosit ca separator. Frecvent este util n sortare ca valoarea unui anumit cmp s fie interpretat ca numr i nu ca ir de caractere. Pentru aceasta se folosete opiunea n care se ataeaz la numrul de ordine al cmpului.

Exemplu: Sortarea fiierului de parole dup valoarea numeric a identificatorului de utilizator (UID), care este al treilea cmp al fiecrei linii:$ sort -t: +2n -3 /etc/passwdS-a specificat aici i faptul c separatorul de cmpuri n acest fiier este caracterul : i c valoarea celui de-al treilea cmp se interpreteaz ca numr.

Exemplu: Sortarea unei liste de numere de telefon dup numele de familie, iar n cazul aceluiai nume de familie dup numele de botez: Se dorete ca lista s fie sortat dup numele de familie, iar n cazul aceluiai nume de familie dup numele de botez:$ sort +1 -2 +0 -1 listatelefoaneAici este necesar s se delimiteze cmpurile de sortare astfel nct dup primul criteriu s nu se ia n considerare i numrul de telefon (dac -2 lipsete se consider implicit toate cmpurile care urmeaz pn la sfritul liniei), iar dup al doilea criteriu s se considere doar numele de botez. Cmpurile se iau n considerare n ordinea n care sunt specificate n comand.

O ultim opiune prezentat este -r care determin inversarea ordinii de sortare (din cresctoare n descresctoare).

Comanda sed (Stream Editor = editor n flux)Sintax:sed [-n] [-e] command files

saused [-n] -f scriptfile filesEfect: Linia de comand specific operaia efectuat de ctre sed i care sunt fiierele asupra crora actioneaz(prima forma). De asemenea, este posibil ca sed s-i preia comenzile dintr-un fiier n loc de a le primi n linia de comand. n mod normal, sed trimite rezultatul prelucrrii n fiierul standard de ieire, nu napoi n fiierul editat. Opiunea -n suprim ieirea, ceea ce nseamn ca se vor afia numai liniile specificate cu comanda p a editorului.Opiunea -e precizeaz c urmtorul argument este o comand i se utilizeaz cnd se specific mai multe comenzi n aceeai linie.Opiunea -f arat c urmtorul argument este un fiier care conine comenzi de editare.Comenzile de editare pentru sed au urmtoarea sintax:[address[, address]][!]command[arguments]Editorul sed ia pe rnd liniile din fiierul specificat ca intrare i le aplic fiecrei comanda data, trimind rezultatul n fiierul standard de ieire (dac ieirea nu este suprimat). Dac n comanda lipsete partea de adresa, comanda va avea efect asupra fiecrei linii din fiierul prelucrat. Dac se specific numai o adres, comanda se aplic liniilor care corespund acelei adrese (adresa poate fi exprimat printr-un tipar). Dou adrese separate prin virgul n cadrul comenzii fac ca aceasta sa se aplice liniilor din fiier ncepnd cu prima care satisface prima adres i pn la cea care satisface a doua adres, inclusiv. Dac o adres este urmat de semnul exclamrii, comanda se aplic liniilor care nu satisfac tiparul de adres. De obicei, tiparele de adres constau din numere sau din simboluri puse ntre caractere slash. Exemple:1, 30 liniile de la l la 30./^$/ toate liniile goale.1, /^$/ liniile de la prima din fiier, pn la prima linie goal./SAVE/! liniile care nu conin SAVE.Comanda cea mai frecvent utilizat este cea de substituie, (s), cu sintaxa:s/pattern/replacement/[flags]Tiparul (pattern) al comenzii const din iruri de caractere care se reprezint pe ele nsele, sau din expresii regulate, construite dup o sintax relativ complex. Se precizeaz numai c i aici prin * se red orice ir, dar un caracter oarecare (i numai unul) se indic prin punct(.), ceea ce face ca pentru specificarea punctului ca i caracter obinuit s fie necesar citarea cu \.Principalele fanioane sunt:g(global) nlocuiete toate apariiile tiparului n linia prelucrat, nu numai prima apariie.

nnlocuiete a n-a apariie a tiparului (implicit n are valoarea l i se admit valori pn la 512).

pTiprete linia dac s-a produs o nlocuire. nlocuiri multiple n linie duc la tipriri multiple ale liniei.

Dou exemple de comenzi sed sunt:sed s/Unix/UNIX/g czi.texsed s/^$/''Linie goala''/fisier.txtPrima comand nlocuiete n fiierul czi.tex toate apariiile lui Unix cu UNIX. Rezultatul este afiat n fiierul standard de ieire, coninutul lui czi.tex rmne nemodificat. Pentru salvarea coninutului modificat trebuie redirectat ieirea standard ctre un fiier diferit de czi.tex. Prin a doua comand, liniile goale din fiierul test.txt se nlocuiesc cu linii care conin textul Linie goala. n comand a fost necesar utilizarea ghilimelelor din cauza blancului din textul de nlocuire.Alte comenzi ale lui sed sunt:a) d - pentru tergerea liniilor adresate;b) a - pentru adugarea de text dup o linie;c) i - pentru inserarea de text naintea unei linii.Comanda grep(General regular expression processing).

Sintax: grep[options] regexp [files]Efect: Cutarea de tipare n fiiere text; opereaz, ca i sed, la nivel de linie. Comanda afieaz n fiierul standard de ieire liniile care conin un ir ce corespunde expresiei regulate. Opiunile principale sunt:-c Tiprete numai numrul de linii care corespund tiparului (expresiei regulate).-i Ignor deosebirea ntre litere mari i litere mici.-v Afieaz liniile care nu corespund expresiei regulate.-n Tiprete liniile nsoite de numrul lor de ordine n fiier.Exemplu: Aflarea identificatorului de proces sub care ruleaz browse-rul netscape, cu scopul de a termina execuia programului, care s-a blocat i nu mai rspunde la comenzi.ps aux | grep netscape

Comanda expr

Sintax: expr arg1 operator arg2 [operator arg3...]Efect: Evaluarea expresiilor. Comanda expr evalueaz o expresie i scrie rezultatul n fiierul standard de ieire. Fiecare atom din expresie apare ca un argument distinct (trebuie separat de ali atomi prin spaii). Operanzii din expresii sunt fie numere, fie iruri de caractere. Comanda foreaz transformarea tuturor operanzilor n valori ntregi sau n iruri de caractere, funcie de operaia care trebuie aplicat. Uneori pentru iruri trebuie utilizate mecanismele de citare. Operatorii apar fie sub form de simboluri infix, fie sub form de cuvinte cheie prefix. Este permis utilizarea parantezelor pentru grupri. De remarcat ns c parantezele trebuie citate pentru a interzice shell-ului evaluarea lor. Codul de retur al comenzii este 0 dac valoarea expresiei este diferit de 0 sau de null, 1 dac expresia are valoarea 0 sau null, sau 2 dac expresia nu este valid.Operatorii aritmetici acceptai sunt +, -, *, / i %. Se respect regulile de preceden obinuite. Se pot utiliza urmtorii operatori relaionali: =, !=, >, >=, < i = 10 d rezultatul 1 (true) dac valoarea variabilei v la care se adaug 5 este mai mare sau cel puin egal cu 10.Pentru exemplele urmtoare se consider c variabila de mediu v are valoarea program.c. Atunci:$ expr $v : .* d rezultatul 9, numrul de caractere din v.$ expr $v: \(.* \) d rezultatul program.c (s-au folosit paranteze pentru ncadrarea tiparului).$ expr $v: \([a-z]* \) d rezultatul program.

Comanda chmod (change mode = schimb modul)

Sintax: chmod [-fR] mode filenameEfect: Schimbarea drepturilor de acces la un fiier.

Categorii de utilizatori:

u - user (proprietar)g - grup

o - others (ceilali utilizatori)a - all (toi), echivalent cu combinaia ugo

Corespunzator fiecarei categorii, sunt setati 3 biti: bitul care indica dreptul de scriere, respectiv cel de citire si cel de executie.

Specificarea modului de setare a drepturilor se poate face numeric sau simbolic. n cazul specificrii numerice, se redau n octal biii corespunztori pentru fiecare din cele patru categorii. Astfel, 755 este echivalent cu rwxr-xr-x. n cazul specificrii simbolice, modul dorit de stare are forma:[cine] op drept [op drept... ]unde cine este o combinaie de u , g, o, a Dac se omite cine, valoarea implicit este a.Operaiile op trebuie s fie:+ pentru a aduga un drept;- pentru a terge un drept;= pentru a fixa explicit un drept.Drepturile se specific prin literele:r - readw - writex - executeX - d drept de execuie daca fiierul specificat este catalog sau dac alte clase de utilizatori au drept de execuie;s- specific setuid (mpreun cu u) sau setgid (mpreun cu g)t - specific sticky bit.Opiuni:-f: foreaz, adic nu vor apare mesaje de eroare dac nu se poate schimba modul unui fiier;-R: recursiv, deci comanda se aplica recursiv pentru toate fiierele cu numele indicate (generic). Exemplu:$ ls -l

total 479

-rwxr-xr-x1ionel401408Oct2611:53tar

-rw-r-r-1ionel80208Oct2514:19tr92.ps.gz

Pentru ca fiierul executabil tar s devin setuid, adic pe durata execuiei sale utilizatorul efectiv s fie proprietarul acestui fiier, trebuie emis comanda:

$ chmod u+s tarn urma acestei comenzi descrierea fiierului listat prin ls -l va fi:$ ls -l tar

-rwsr-xr-x1ionel401408Oct2611:53tar

2. Comenzi pentru operaii asupra proceselorComanda ps (process status = starea proceselor)

Sintaxa: ps [opiuni]Efect: Listarea proceselor active n sistem. Instruciunea furnizeaz informaii mai generale sau mai detaliate (funcie de opiunile folosite), despre procesele existente n sistem. Fr opiuni, comanda listeaz cteva informaii despre procesele care aparin utilizatorului, aa cum arat urmtorul exemplu:$ps

PIDTTSTATTIMECOMMAND

5203p3S0:00-tcsh(tcsh)

5206p3R0:00ps

3849p9IW0:02-tcsh(tcsh)

4435p9IW0:00man ps

Prima coloan afiat, cu antetul PID, reprezint identificatorul procesului (pid), care identific n mod univoc procesul pe durata existenei acestuia n sistem. Coloana a doua, cu antetul TT (n alte implementri TTY) reprezint terminatul de control, adic terminalul la care este conectat procesul. n exemplul dat, valorile p3 i p9 corespund unor ferestre sau terminale virtuale dintr-o interfa grafic.A treia coloan indic printr-o secven de litere starea procesului:R - running (n execuie);S - sleeping (adormit) de mai puin de 20 secunde;I - idle (inactiv), pentru procese adormite de mai mult de 20 secunde;W - swapped out, procese scoase din memoria principal;Z - zombie, procese terminate, care ateapt ca printele lor s execute un apel wait(), pentru terminarea lor complet;N - nice, procese cu prioritate redus.Coloana a patra, TIME, indic timpul de procesor folosit pn n prezent de ctre proces (de regul n minute:secunde).n ultima coloan (antetul COMMAND), se listeaz numele programului executat de ctre fiecare proces. n exemplul dat rezult c utilizatorul are deschise dou sesiuni (dac numele shell-ului este precedat de caracterul - nseamn c acesta este un shell de login) i c ntr-o sesiune s-a executat comanda man ps iar n sesiunea mai recent chiar comanda ps.

Opiuni:-a: determin afiarea de informaii i despre procesele altor utilizatori momentan conectai la sistem;-l: determin o afiare mai extinsa, incluznd cmpuri (coloane) cum sunt: UID: identificatorul numeric al utilizatorului (proprietarul procesului);F: fanioane care indic tipul de operaii executate de proces;PPID: identificatorul procesului printe;CP: factorul de utilizare a procesorului pe termen scurt, (folosit la planificarea procesului pentru execuie);PRI: prioritatea procesului n sistem;NI: incrementul de planificare al procesului;SZ: dimensiunea combinata (n KB) a segmentelor de date i stiv ale procesului;RSS: dimensiunea real n memorie a procesului (n KB);WCHAN: evenimentul pe care procesul l ateapt (o adres n sistem sau un nume simbolic).Ieirea produs cu opiunea -l pentru exemplul de mai sus este:

FVIDPIDPPIDCPMIHISZRSSWCHANSTATTTTIMECOMMAND

20488201200520352020150288364karnelmaSp30:00-tcsh(tcsh)

200000012005247520235330204460Rp30:00ps -l

200882002003849384801502800karnelmaIWp90:02-tcsh(tcsh)

2000800020052173849050360childIWp90:00man ps

- u: determin afiarea rezultatelor dup urmtorul format:USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMANDunde noile coloane au semnificaia:USER: numele proprietarului fiierului;%CPU: utilizarea procesorului de ctre proces; este o valoare medie pentru pn la l minut de timp real;%MEM: procentul de memorie real folosit de proces;START: timpul cnd procesul a fost creat (daca e n aceeai zi) sau data crerii.Relund exemplul de mai sus se obine:$ ps -u

USERPID%CPU%MEMSZRSSTTSTATSTARTTIMECOMMAND

ionel53390.00.0360p9IW13:240:00man ps

ionel53490.02.1204460p3R13:260:00ps -u

ionel38490.00.02800p9IWOct 130:04-tcsh(tcsh)

ionel52030.01.7288368p3S12:360:01-tcsh(tcsh)

-e: aceast opiune determin ca la fiecare comand s se afieze att argumentele ct i ambiana de execuie (variabilele de mediu i valorile acestora);-x: n informaiile afiate se includ i procesele fr terminal de control (procesele sistem, cum ar fi: swapper, pagedaemon etc.).Informaiile furnizate de comanda ps pot fi utilizate n diverse moduri. Frecvent ns valoarea PID obinut prin ps pentru o anumit comand (proces) va fi folosit pentru terminarea forat a procesului, cum se arat la comanda urmtoare.Comanda kill(omoar, termin)

Sintaxa: kill [opiuni] [pid]Efect: Terminarea forat a execuiei unui proces Argumentul pid este de fapt obligatoriu, cu o singur excepie: dac se folosete opiunea -l, cum se va descrie mai jos. n absena unei opiuni, comanda kill termin execuia proceselor al cror pid este menionat de parametru. De exemplu:$ kill 5418 6230va produce terminarea proceselor 5418 i 6230, dac acestea mai exist n sistem i aparin utilizatorului care emite comanda. Numai superutilizatorul poate termina orice proces din sistem.Utilizarea lui kill este de regul precedat de ps pentru a afla pid-urile proceselor care din diverse motive trebuie terminate. n realitate, comanda kill trimite un semnal la procesele identificate. n absena opiunilor, semnalul transmis este TERM (terminate) care are ca efect terminarea execuiei proceselor. Comanda permite i transmiterea altor semnale a cror identitate se specific n cmpul de opiuni, fie sub form numeric, fie sub form simbolic. Simbolurile care pot fi utilizate se obin astfel:$ kill -lHUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALARM PROF WINCH LOST USR1 USRSimbolurile sunt listate aici n ordinea identificatorilor numerici ai semnalelor.n absena oricrei opiuni se consider c este transmis semnalul TERM(15), deci comenzile:$ kill -TERM 5418 6230$ kill -15 5418 6230$ kill 5418 6230sunt echivalente.Dintre celelalte semnale sunt de remarcat:-HUP(1) (Hang up - pune receptorul n furc - denumire cu justificare istoric)- folosit frecvent de ctre procesele demon pentru a citi din nou fiierele lor de configurare;KILL (9) - cu efect sigur de terminare a unui proces.

Comanda w(what = ce).

Sintax: w [opiuni] [utilizator]

Efect: Listarea activitii diverilor utilizatori. Realizeaz un sumar al activitii curente din sistem(incluznd procesul curent) al fiecrui utilizator. Implicit (fr opiuni i parametri) comanda se refer la toi utilizatorii i produce o afiare n format lung, ca n exemplul urmtor:* w

2:42 pm up 3 days, 23:55, 5 users, load avarage: 0.19, 0.03.00

Userttylogin@idleJCPUPCPUwhat

romeottyp0Fri 8am3 days533-tcsh

vcretuttyp212:31pm2:11-

ionelttyp312:36pm31H

romeottyp4Fri 10am3 days314-tcsh

romeottyp8Sun 9am23:45-

Prima linie afiat de comand conine: timpul curent, de ct timp este pornit sistemul, ci utilizatori sunt conectai la sistem i ncrcrile medii calculate pentru ultimele l, 5 i 15 minute.Cmpurile afiate pentru fiecare utilizator sunt:- numele de login al utilizatorului;- numele terminalului de la care utilizatorul a nceput sesiunea;- momentul nceperii sesiunii;- intervalul de cnd utilizatorul nu a mai introdus comenzi de la terminal;- timpul de procesor folosit de toate procesele i fiii lor, generate de la acest terminal (n minute:secunde);- timpul de procesor folosit de procesele curente;- numele i argumentele proceselor curente.Opiunea -h (header = antet) produce o form prescurtat de afiare, din care lipsete prima linie.

Opiunea -s (short = scurt) determin omiterea coloanelor: numele terminalului, timpii de login i procesor i argumentele comenzilor.

Dac n comand se indic drept argument un nume de utilizator, se obin informaii numai despre acel utilizator.

Comanda topSintax: topEfect: Listarea dinamic a proceselor din sistem. Spre deosebire de ps i w care dau o imagine static ( la un anumit moment) asupra activitii din sistem, top afieaz procesele din sistem i actualizeaz periodic aceast informaie. Ca i n cazul lui ps, informaia afiat variaz de la o implementare la alta. Perioada de actualizare este implicit de 5 secunde, dar poate fi modificat printr-o opiune. n cazul Linux-ului se obine :12:26am up 25 min, 0 users, load average: 0.00, 0.01 0.09

56 processes: 55 sleeping, 1 running, 0 zombie, 0 stopped

CPU states: 1.9% user, 1.7% system, 0.0% nice, 96.2% idle

Mem: 30680K av, 29792K used, 888K free, 28512K shrd,992K buff

Swap: 72288K av, 6568K used, 65720K free11528K cached

PIDUSERPRIMISIZERSSSHARESTATLIB%CPU%MEMTIME COMMAND

679ionel13010281028824R02.33.30:01 top

521root5092888272920S00.726.90:14 X

575ionel00123611121016S00.13.60:00 gnome-smprox

651ionel00318431842524S00.110.30:00 deskguide_ap

658ionel10328832882596S00.110.70:00 gnome-termin

1root001247260S00.00.20:03 init

2root00000SW00.00.00:00 kflushd

3root00000SW00.00.00:00 kupdate

4root00000SW00.00.00:00 kpiod

5root00000SW00.00.00:02 kswapd

6root-20-20000SW