Comenzi Shell

18
[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu Laborator 1 Comenzi shell UNIX Scopul acestui document este de prezenta sub forma unui tutorial principalele comenzi Unix. Nu se doreste o prezentare exhaustiva,completa a tuturor comenzilor ci doar a celor mai des intalnite. Deoarece in timp de doua ore cat este alocat unui laborator nu se poate parcurge intreg acest tutorial se recomanda finalizarea studiului sau acasa, ca si studiu individual. 1. Ce este o comanda shell ? Comenzile shell sunt utilizate pentru a “pune” sistemul de operare la treaba, spunandu-i exact ce sa faca. Sarcinile pe care i le putem propune sitemului de operare spre rezolvare sunt din cele mai diverse : a) operatii cu fisiere; b) afisarea de informatii cu privire la starea sistemului de calcul; c) comunicare cu alte statii de lucru; 2. Cateva comnenzi shell simple Pentru a “spune” comanda dumneavoastra sistemului de operare trebuie deschisa o consola in care veti scrie numele comenzii. Aceasta consola se deschide urmand calea : Applications -> System Tools -> Konsole, asa cum este prezentat in figura urmatoare :

Transcript of Comenzi Shell

Page 1: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Laborator 1

Comenzi shell UNIX

Scopul acestui document este de prezenta sub forma unui tutorial principalele comenzi Unix. Nu se doreste o prezentare exhaustiva,completa a tuturor comenzilor ci doar a celor mai des intalnite. Deoarece in timp de doua ore cat este alocat unui laborator nu se poate parcurge intreg acest tutorial se recomanda finalizarea studiului sau acasa, ca si studiu individual.

1. Ce este o comanda shell ? Comenzile shell sunt utilizate pentru a “pune” sistemul de operare la treaba, spunandu-i exact ce sa faca. Sarcinile pe care i le putem propune sitemului de operare spre rezolvare sunt din cele mai diverse :

a) operatii cu fisiere;b) afisarea de informatii cu privire la starea sistemului de calcul; c) comunicare cu alte statii de lucru;

2. Cateva comnenzi shell simple Pentru a “spune” comanda dumneavoastra sistemului de operare trebuie deschisa o consola in care veti scrie numele comenzii. Aceasta consola se deschide urmand calea : Applications -> System Tools -> Konsole, asa cum este prezentat in figura urmatoare :

Page 2: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Dupa ce ati deshis consola ea va arata ca in figura urmatoare :

Dupa cum se poate observa apare o linie de text pe primul rand al carei ultim caracter este $. Pe aceasta linie fiecare entitate are urmatoarea semnificatie :

ovidiu : reprezinta numele utilizatorului care utilizeaza consola; ovidiu-desktop : reprezinta numele statiei de calcul (calculatorului) pe care ruleaza consola si alte programe;

Aceasta linie difera de la un calculator la altul,si de la un utilizator la altul.

Pentru a simplifica textul din acest tutorial vom reprezenta in acest tutorial linia consolei prin simbolul $ (dolar). De aceea cand veti scrie o comanda nu mai scrieti si simbolul $ ci doar numele comenzii asa cum este prezentat in acest tutorial.

a) date si cat Aceasta comanda shell este folosita pentru afisarea momentului de timp exact la care se tasteaza aceasta comanda. Rezultatul este ora si data exacta de la momentul tastarii acestei comenzi.

Atentie ! : shell-ul UNIX este case – sensitiv , adica face diferenta dintre caracterele „mici” si „mari”, adica intre a (a mic) si A (A mare).

Tastati in consola urmatoarele doua comenzi shell asa cum este aratat in figura urmatoare:

Page 3: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

sau in randurile de mai jos :

$ date

$ date > data.txt

Dupa ce ati tastat prima comanda date, consola va afisa data curenta. A doua coman shell va permite scrierea rezultatului obtinut in urma apelarii comenzii date in fisierul data.txt . Mai exact simbolul > (mai mare) este utilizat pentru a redirectiona rezulatul oricarei comenzi shell spre un fisier. In acest caz rezultatul comenzii date, adica data curenta este scrisa in fisierul text data.txt . Pentru a vizualiza continutul acestui fisier introduceti urmatoarea comanda shell in linia de comanda : $ cat data.txt

Trebuie facuta o remarca foarte importanta legata de directorul curent si implicit utilizat de catre consola. La deschiderea consolei se va considera ca si director implicit pentru consola directorul home al utilizatorului curent. Pentru a vizualiza continutul directorului home al utlizatorului curent puteti intra asa cum este aratat in figura urmatoare :

Page 4: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

b) whoami

Comanda shell whoami este utilizata pentru a afisa in consola numele utilizatorului curent care lucreaza in linie de comanda.

De exemplu :

$ whoami ovidiu deoarece utilizatorul curent este ovidiu, asa cum reiese si din figura urmataore:

unde dupa cum am spus mai sus utilizatorul ovidiu lucreaza pe statia ovidiu-desktop.

Exercitiu : Redirectionati intr-un fisier user.txt rezultatul comenzii whoami si afisati apoi continutul acestui fisier.

3. Intrarea / Ieşirea dintr-o sesiune de lucru UNIX

Unix – sistem multiutilizator Sistemul de operare UNIX permite utilizarea aceleaşi staţii de calcul pentru mai mulţi utilizatori simultan, în acelaşi timp.Această proprietate a sistemului de operare UNIX de utilizare simultană se poate exprima sub forma “Unix este un sistem de operare multiutilizator”.

Noţiunea de sesiune de lucru Pentru fiecare utilizator se poate deschide o sesiune de lucru, adica o conexiune cu o statie de calcul UNIX care permite executarea de diferite comenzi exprimate de catre acel user.

Page 5: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Putem spune asadar ca o sesiune de lucru este un sir de comenzi unix impreuna cu rezultatele lor, desfasurate intre intrarea in sistem si iesire.

Login

Comanda de login este utilizata atunci cand un utilizator doreste sa se autentifice pentru a porni o sesiune de lucru pe o statie de calcul UNIX.

Shell-ul UNIX. Nucleu unui sitem de operare

Pana acum am folosit de mai multe ori cuvantul shell insa nu am dat o explicatie a acestuia.

Utilizand motorul de cautare preferat ( de exemplu Google) incercati sa gasiti o explicatie a termenului de shell !

Dupa cum se poate trage observa shell – ul permite comunicarea comenzilor UNIX sistemului de operare, mai exact nucleului sau. Despre nucleul unui sistem de operare : http://ro.wikipedia.org/wiki/Nucleu_(sistem_de_operare)

Shell-ul este un limbaj de comenzi care permite comunicarea cu nucleul sistemului de operare, shell-ul nefacand parte din nucleu. Pentru executarea de diferite taskuri simple sistemul de operare are definite o serie de apeluri sistem. Shell-ul pemite “traducerea” comenzilor simple in apeluri sistem.

! Observatie Exprimarea corecta este comanda shell UNIX si nu comanda UNIX. Aceasta deoarece comenzile sunt ale shell-ului si nu ale nucleului sistemului de operare. Shell-ul UNIX nu face parte din nucleul sistemului de operare.

Exista mai multe tipuri de shell-uri :

− bourne shell (/bin/sh)− c_shell (/bin/csh)− korn shell (/bin/ksh)− menu shell;− window shell;− window collage;− graphics X/Window; − etc.

Standardul UNIX este bourne shell, numit uneori si bash.

Prompterul Shell Prompterul Shell permite dialogarea dintre utilizator si sistemul de operare. Acesta invita utilizatorul sa exprime comenzile sale. Prompterul shell Unix poate lua următoarele două forme :

$ pentru un utilizator obişnuit # pentru un superutilizator, adică administratorul de sistem

Page 6: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Modificarea prompterului

Valoarea implicita a prompterului este de forma user@statie-de-calcul:~$ . Aceasta valoare poate fi modificata dupa cum urmeaza. Introduceti comanda $ PS1="prompterul meu >"

Studiati efectul acestei comenzi!

Pentru detalii privind configurarea prompterului si a consolei utilizator urmati tutorialul de pe site-ul http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html .

Ieşirea dintr-o sesiune de lucru

Iesirea dintr-o sesiune de lucru UNIX se poate face in mai multe moduri dupa cum urmeaza :

a) Cu ajutorul comenzii shell exit b) Cu ajutorul combinatiei de taste Control-D

Modificarea parolei. Passwd Pentru fiecare utilizator se creează o sesiune de lucru.

4. Sintaxa comenzilor UNIX

Sintaxa generală Comenzi executate in background Comenzi executate în foreground

5. Comenzi simple UNIX

Page 7: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Comanda man

Comanda man este utilizata pentru a „arata” la prompter pagini de manual ale diferitelor comenzi shell UNIX. De exemplu, in situatia in care nu mai stiti cu exactitate ce face comanda „wc” veti tasta in terminal $ man wc dupa care vor fi afisate la terminal informatii despre aceasta comanda shell UNIX. Pentru a parcurge pagina de manual se foloseste tasta de scroll down ( ↓ ) sau scroll up (↑ ). Pentru a „iesi” afara din pagina de manual pentru a introduce noi comenzi folositi combinatia de taste CTRL Z.

Exercitii : pentru urmatoarele comenzi lecturati mai intai pagina de manual.

Comanda echo. Variabile de mediu.printenv

Comanda shell UNIX echo permite afisarea la terminal a unei linii de text introduse de catre dumneavoastra. Aceasta comanda nu permite decat introucerea unei singure linii de text. $echo Student Student $

Trebuie remarcat faptul ca aceasta comanda omite simbolurile ' (quote) si „ (ghilimele jos) respectiv ” (ghilimele sus).

Exemplu $ echo 'Ana are mere' Ana are mere $ echo „Ana are mere” Ana are mereAceasta comanda permite introducerea de text pe mai multe randuri utilizand ' sau „ .

Exemplu

$ echo 'Ana are mere > care nu sunt coapte' Ana are mere care nu sunt coapte $ echo ”Ana are mere > care nu sunt coapte” Ana are mere care nu sunt coapte Pentru afisarea caracterelor ” se va folosi constructia ' ”text” ' , iar pentru afisarea ' se va utiliza ”

$echo ' ”text” ' ”text” $echo "'text'" 'text'

Comanda permite introducerea de comenzi care ulterior sa poata fi executate. De exemplu

Page 8: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

$ echo ` > ls > mkdir Teste > ls> foldere.txt > `Dupa executarea acestor comenzi puteti vizualiza fisierul foldere.txt si veti observa existenta folderului Teste nou creat, precum si continutul noului fisier.

Comanda echo este adeseori utilizata pentru scrierea de scripturi UNIX scurte.In acest sens veti gasi exemple in laboratoarele urmatoare.

Comanda echo permite de asemeni evaluarea valorilor diferitelor variabile de mediu.

O variabila de mediu este un obiect cu nume propriu , care contine informatii folosite de una sau mai multe aplicatii , de exemplu : stocarea optiunilor si a parametrilor care personalizeaza mediu de executie . Aplicatiile pot obtine accesul la valorile variabilelor de mediu si isi pot ajusta comportamentul in consecinta . De exemplu programele care sunt rulate din linia de comanda sunt cautate in directoarele continute in variabila de mediu numita PATH .

Exemple de variabile de mediu

- $HOME: directorul alocat la intrarea in sesiune- $PATH: lista directoarelor unde se caută pt. execuţia unei comenzi- $PS1: def. prompter-ul asociat utilizatorului: # - supervizor, $ - utilizator- $LOGNAME: numele utilizatorului- $MAIL: numele directorului de poştă- $SHELL: numele programului SHELL- $TERM: tipul terminalului

Pentru a afisa valoarea variabilei de mediu HOME este suficienta comanda

$echo $HOMEComanda shell UNIX echo permite afisarea mai multor varibile de mediu in acelasi timp.

Ca si exercitiu incercati sa afisati pe linii diferite trei variabile de mediu.

Comanda printenv este utilizata pentru afisarea tuturor variabilelor de mediu.

$ printenvSSH_AGENT_PID=4924TERM=xtermSHELL=/bin/bashGTK_RC_FILES=/etc/gtk/gtkrc:/home/ovidiu/.gtkrc-1.2-gnome2WINDOWID=48234503USER=ovidiuLS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pb

Page 9: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

m=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01;35:*.ogg=01;35:*.wav=01;35:GNOME_KEYRING_SOCKET=/tmp/keyring-7sTtyL/socketSSH_AUTH_SOCK=/tmp/ssh-oUzbtS4882/agent.4882SESSION_MANAGER=local/ovidiu-desktop:/tmp/.ICE-unix/4882USERNAME=ovidiuKONSOLE_DCOP=DCOPRef(konsole-6254,konsole)DESKTOP_SESSION=defaultPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/gamesGDM_XSERVER_LOCATION=localKONSOLE_DCOP_SESSION=DCOPRef(konsole-6254,session-1)PWD=/home/ovidiuLANG=en_AU.UTF-8GDMSESSION=defaultHISTCONTROL=ignoredupsHOME=/home/ovidiuSHLVL=1LANGUAGE=en_AU:enGNOME_DESKTOP_SESSION_ID=DefaultLOGNAME=ovidiuDBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-lptbnuh5iH,guid=d19cec488f09fa192898ca4663899500LESSOPEN=| /usr/bin/lesspipe %sDISPLAY=:0.0LESSCLOSE=/usr/bin/lesspipe %s %sCOLORTERM=XAUTHORITY=/home/ovidiu/.Xauthority_=/usr/bin/printenv

Exercitii :

1. Scrieti intr-un fisier date.txt, utilizand comanda echo si procedeul de redirectare a iesirii, o fraza pe mai multe randuri care sa explice rolul comenzii echo.

2. Scrieti intr-un fisier environment.txt variabilele de mediu, utilizand comanda printenv si redirectarea iesirii.

Comanda cat

Comanda cat este utilizata pentru concatenarea diferitelor fisiere si afisarea rezultatelor astfel obtinute la iesirea standard.

Exemplul 1

1. Creati doua fisiere a.txt si b.txt, cu ajutorul comenzii echo si a redirectarii iesirii. Fisierul a.txt va contine o descriere de 2-3 randuri a comenzii cat, iar fisierul b.txt va contine o descriere a comenzii printenv.

2. Afisati continutul fisierului a.txt.3. Afisati continutul fisierului b.txt.4. Afisati folosind aceeasi instructiune cat continutul celor doua fisiere.

Page 10: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

5. Concatenati continutul celor doua fisiere in fisierul c.txt si afisati continutul acestuia. $ echo "Comanda cat> - este utilizata pentru afisarea simpla a continutului unui fisier> - pentru concatenarea continutului a doua fisiere> " > a.txt$ echo "Comanda printenv> - este utilizata pentru afisarea valorilor tuturor variabilelor de mediu> " > b.txt$ cat a.txtComanda cat- este utilizata pentru afisarea simpla a continutului unui fisier- pentru concatenarea continutului a doua fisiere

$ cat b.txtComanda printenv− este utilizata pentru afisarea valorilor tuturor variabilelor de mediu$ cat a.txt b.txtComanda cat- este utilizata pentru afisarea simpla a continutului unui fisier- pentru concatenarea continutului a doua fisiere

Comanda printenv− este utilizata pentru afisarea valorilor tuturor variabilelor de mediu

$ cat a.txt b.txt > c.txt$ cat c.txtComanda cat- este utilizata pentru afisarea simpla a continutului unui fisier- pentru concatenarea continutului a doua fisiere

Comanda printenv− este utilizata pentru afisarea valorilor tuturor variabilelor de mediu

Exemplul 2

Comanda cat este folosita pentru a scrie in fisiere. Pentru a iesi din modul de scriere, se utilizeaza combinatia de taste CTRL Z.

$cat > text.txtAcesta este un text,care este scris cu ajutorul comenzii cat.

[2]+ Stopped cat >text.txt$ cat text.txtAcesta este un text,care este scris cu ajutorul comenzii cat.$

Aceasta comanda shell UNIX are diferite optiuni. Acestea vor fi explicate in continuare.

Page 11: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

O prima optiune se refera la numararea liniilor. Asadar pentru a numara liniile unui fisier se foloseste optiunea -n.

Exemplul 3Se foloseste fisierul text, anterior creat text.txt. Pentru acest fisier se va realiza afisarea lui, indicand pentru fiecare rand numarul de ordine al acestuia.

$ cat -n text.txt 1 Acesta este un text, 2 care este scris cu ajutorul comenzii cat.$

Exista de asemeni si posibilitatea de a introduce un text nou, si de asemeni pntru acest text numarul de ordine al fiecarei linii nou introduse.

ovidiu@ovidiu-desktop:~$ cat -n > program.c#include <stdio.h>int main(){

printf("Buna ziua!");}[7]+ Stopped cat -n >program.covidiu@ovidiu-desktop:~$ cat program.c 1 #include <stdio.h> 2 int main() 3 { 4 5 printf("Buna ziua!"); 6 }ovidiu@ovidiu-desktop:~$

Optiunea -E permite afisarea caracterelui $ la sfarsitul fiecarei linii a fisierului text.

$ cat -E program.ccat -E program.c 1 #include <stdio.h>$ 2 int main()$ 3 {$ 4 $ 5 printf("Buna ziua!");$$

Comanda -t permite punerea in evidenta a tab-urilor folosite la redactarea unui text.

Page 12: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

$cat -t program.ccat -t program.c 1^I#include <stdio.h> 2^Iint main() 3^I{ 4^I 5^Iprintf("Buna ziua!");

Optiunea -A este folosita pentru a indica atat tab-urile dintr-un text cat si sfaristul de linie, fiind o combinatie a optiunilor -t si -E.

$ cat -A program.ccat -A program.c 1^I#include <stdio.h>$ 2^Iint main()$ 3^I{$ 4^I$ 5^Iprintf("Buna ziua!");$

C omanda who

Comanda shell UNIX who este folosita pentru a indica utilizatorul care foloseste la acel moment terminalul UNIX. In forma simpla comanda este utilizata pentru a arata ce utilizator este logat la acel calculator si momentul la care s-a logat pentru prima data. Eventual pot apare informatii despre redeschiderile ulterioare ale acelui utilizator.

$ whoovidiu :0 2008-10-08 14:43

Comanda whoami

Aceasta comanda printeaza identificatorul utilizatorului care a deschis acea sesiune de lucru.

Exemplu

$whoamiovidiu

Comanda w

Aceasta comanda este utilizata pentru a indica persoanele care sunt autentificate in sistem si de asemeni indica ce fac acesti utilizatori,mai exact :− timpul curent;− de cat timp este pornita aceasta masina UNIX;− cati useri sunt logati;− incarcarea medie a masinii UNIX respective,exprimata , pentru ultimul minut, ultimele 5 minute

respectiv utlimele 15 minute;− utilizatorul autentificat pe acest terminal, locatia ,momentul de la care este autentificat acest

Page 13: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

utilizator, etc. Pentru alte amanunte studiati pagina de manual a comenzii w.

$w 19:44:58 up 5:02, 1 user, load average: 0.24, 0.15, 0.06USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATovidiu :0 - 14:43 ?xdm? 4:53m 0.69s x-session-manager

Comanda finger

Comanda date Dupa cum a fost explicat anterior aceasta comanda shell UNIX este folosita pentru a indica ora si data curenta. Merita descrise cateva optiuni interseante ale acestei optiuni in continuare. Optiunea -u este folosita pentru a afisa timpul universal :

$ date -uWed Oct 8 17:04:11 UTC 2008

Pentru detalii privind timpul universal : http://ro.wikipedia.org/wiki/Ora_universal%C4%83_coordonat%C4%83

De asemeni aceasta comanda permite setarea date si a orei, dupa cum urmeaza :

$date --set="Thu Dec 15 11:33:56 PST 2005"date: cannot set date: Operation not permittedThu Dec 15 21:33:56 EET 2005

Daca sunteti autentificat ca si administrator, atunci aceasta comanda va permite setarea timpului.

Comanda cal Aceasta comanda shell UNIX permite afisarea calendarului. Daca comanda este transmisa in mod simplu, fara nici un parametru afiseaza calendarul lunii curente.Daca insa se specifica o anumita luna, sau an atunci comanda va permite afisarea calendarului lunii sau a anului respectiv. Specificarea se face in limba engleza.

Page 14: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

ovidiu@ovidiu-desktop:~$ cal October 2008Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31

ovidiu@ovidiu-desktop:~$ cal october 2004 October 2004Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 3031ovidiu@ovidiu-desktop:~$ cal 2008 2008

January February MarchSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 1 2 1 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 813 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 1520 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 2227 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29 30 31 April May JuneSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 1413 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 2120 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 2827 28 29 30 25 26 27 28 29 30 31 29 30

July August SeptemberSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 1 2 1 2 3 4 5 6 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 1313 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 2020 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 2727 28 29 30 31 24 25 26 27 28 29 30 28 29 30 31 October November DecemberSu Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 1 1 2 3 4 5 6 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 1312 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 2019 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 2726 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31

Page 15: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Comanda banner

Comanda banner este utilizata pentru a afisa la terminal un anumit mesaj, sub forma unui text de o anumita dimensiune, mult marita,sau care poate fi specifcata de utilizator.

$ banner -w 50Message: A # # ### ###### # ##### #### ## #### ## ##### ## ##### ## ##### ## ############ ## ############## ## ############## ############## # ############### # ############### ############# ########## ###### ## #

Comanda -w permite introducerea latimii pe care se va exprima mesajul specificat.

6. Comenzi pentru lucrul cu fişiere şi directoare

Comanda ls Aceasta comanda este utilizata pentru afisarea continutului de directoare si fisiere a folderului curent.Folderul curent este la deschiderea aplicatiei konsolei directorul numit „Home Folder”. Acesta poate fi identificat apeland din meniu : Places-> Home Folder.

Executati simplu comanda ls : $ lsa.txt Examples rap+fig.pdfBadetBonneauRapportTER.pdf foldere.txt Script_folii.pdfb.txt Java Testec.txt lctes05.pdf test.txtdate.txt program.c text.txtDesktop proiect-client-server tutorialUnix1.doc

Page 16: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Este important de remarcat faptul ca aceasta comanda permite afisarea continutului unui director furnizat ca si parametru. De exemplu pentru a afla contintul directorului Desktop, adica ce se afla pe desktopul dumneavoastra executati comanda $ ls Desktop

Toate comenzile pe care le utilizeaza un user sunt de fapt anumite programe executabile care se gasesc in anumite directoare. De exemplu comenzile de baza pe care le pot executa toti utilizatorii se gasesc in directorul /bin. Comenzile de baza pe care numai utilizatorul root are dreptul sa le execute se gasesc in directorul sbin, iar in directorul /usr/sbin se pot identifica comenzile unor servicii sau programe instalate de catre dumneavoastra (in /usr/sbin nu se gasesc comenzi vitale).

Folosind comanda ls si informatiile despre „directoarele de comenzi”, asa cum a fost expus in paragraful de mai sus realizati trei fisiere : comenziUSER.txt – acest fisier va contine lista comenzilor pentru utilizatori obinsuiti. comenziROOT.txt – acest fisier va contine lista comenzilor pentru root. servicii.txt – acest fisier va contine lista tuturor servciilor si aplicatiilor instalate.

Aceasta comanda shell poate avea urmatoarele optiuni: − x : permite afisarea pe orizontala a fisierelor si directoarelor din directorul curent :$ ls -xa.txt BadetBonneauRapportTER.pdf b.txt c.txt date.txt Desktop endians.c~ Examples foldere.txtJava lctes05.pdf program.c proiect-client-server proiect-client-server.7z rap+fig.pdf Script_folii.pdf Teste test.txttext.txt tutorialUnix1.doc

- r : afiseaza in mod invers intrarile din directorul curent.

O optiune care necesita un interes deosebit este -l. Acesta optiune permite afisarea directoarelor si fisierelor intr-un format detaliat cuprinzand informatii despre : drepturile asupra acelui fisier sau director, utiliztaori care pot utiliza acest fisier, etc.

$ ls -l

-rw-r--r-- 1 ovidiu ovidiu 132 2008-10-08 16:50 a.txt-rw-r--r-- 1 ovidiu ovidiu 1165680 2008-09-22 18:37 BadetBonneauRapportTER.pdf-rw-r--r-- 1 ovidiu ovidiu 92 2008-10-08 16:52 b.txt-rw-r--r-- 1 ovidiu ovidiu 224 2008-10-08 16:55 c.txt-rw-r--r-- 1 ovidiu ovidiu 143 2008-10-08 15:44 date.txtdrwxr-xr-x 7 ovidiu ovidiu 4096 2008-10-09 21:48 Desktop

Mai jos gasiti o descriere a intrarii pentru fiecare fisier in parte.

Drepturi asupra fisierului

Numarul de i-noduri alocate acelui fisier

Utilizatorul care are acces la fisier

Grupul de utilizatori care are acces la fisier

Marimea fisierului exprimata in biti

Ultima data la care fisierul a fost modificat

Numele fisierului

-rw-r--r-- 1 ovidiu ovidiu 132 2008-10-08 16:50 a.txt

Sirul de caractere care arata drepturile asupra unui fisier se exprim sub forma

Page 17: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

trwxrwxrwx

unde : t – reprezinta tipul acelui fisier. Daca avem un fisier obisnuit, atunci in locul tipul se va folosi simbolul – (linie). Daca avem un director atunci simbolul folosit este „d”, iar daca este un limk (short-cut) atunci se foloseste „l”. Identificati in lista dumneavoastra de intrari directaorerele si linurile, pornind de la observatia anterioara.

In tabelul urmator se poate remarca ce semnificatie au simbolurile r , w si x pentru fisiere respectiv directoare:

Permisiune Semnificatie pentru fisiere Semnificatie pentru directoarer read list( in absenta dreptului comanda ls nu il vede)w write, change create , delete (aceste operatii sunt referitoare la

subdirectoare)x start program / script enter (in absenta dreptului nu se va putea da comanda cd

asupra directorului respectiv)

Comenzi Shell UNIX de setare a permisiunilor de acces ale fisierelor si directoarelor

Comanda shell UNIX utilizata pentru a seta permisiunile de acces asupra fisierelor si directoarelor este chmod. Aceasta are sintaxa sub forma simbolica:

chmod [ugoa] [+-=] [rwx] path(s)

sau sintaxa sub forma octala

chmod O1O2O3 path(s)

r=4, w=2, x=1 , -=0

Comanda dir

Aceasta comanda este utilizata pentru afisarea fisierelor dintr-un anumit director. Daca este executata fara nici un parametru atunci va afisa fisierele din directorul curent.

$ dira.txt b.txt date.txt endians.c~ foldere.txt lctes05.pdf proiect-client-server rap+fig.pdf Teste text.txtBadetBonneauRapportTER.pdf c.txt Desktop Examples Java program.c proiect-client-server.7z Script_folii.pdf test.txt tutorialUnix1.doc

Comanda cd

Comanda pwd

Page 18: Comenzi Shell

[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu

Aceasta comanda permite afisarea directorului curent de lucru (pwd=”Print Working Directory”. In continuare se va explica conceptul de director curent de lucru. La acest moment in situatia in care dati comanda ls, vor fi afisate o serie de fisiere si eventual alte directoare. De asemeni daca veti crea un nou fisier, dupa care veti vizualiza continutul directorului veti remarca ca noul fisier creat se gaseste in acelasi folder, al carui continut a mai putut fi vizualizat si anterior, insa de aceasta data cu noul fisier deja creat in plus. Aceasta inseamna ca toate operatiile legate de fisere si directoare iau in considerare un anumit folder implicit. La deschiderea sesiunii de lucru in terminal, acest folder este exact cel specificat de variabila de mediu HOME.

ovidiu@ovidiu-desktop:~$ echo $HOME/home/ovidiuovidiu@ovidiu-desktop:~$ pwd/home/ovidiu Daca insa veti modifica cu ajutorul comenzii cd directorul, atunci director curent de lucru va fi cel specificat de ultima comanda cd. Iata mai jos un exemplu :

ovidiu@ovidiu-desktop:~$ cd Desktopovidiu@ovidiu-desktop:~/Desktop$ pwd/home/ovidiu/Desktop mkdir

Aceasta comanda permite crearea de noi directoare.

cp

Aceasta comanda permite copiere unui fisier peste alt fisier.