Documente Academic
Documente Profesional
Documente Cultură
Aritoni Ovidiu
Laborator 1
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;
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 :
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:
[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu
$ date
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
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.
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.
Pana acum am folosit de mai multe ori cuvantul shell insa nu am dat o explicatie a acestuia.
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.
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
[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu
Modificarea prompterului
Iesirea dintr-o sesiune de lucru UNIX se poate face in mai multe moduri dupa cum urmeaza :
Sintaxa generală
Comenzi executate in background
Comenzi executate în foreground
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.
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 mere
Aceasta comanda permite introducerea de text pe mai multe randuri utilizand ' sau „ .
Exemplu
Pentru afisarea caracterelor ” se va folosi constructia ' ”text” ' , iar pentru afisarea ' se va utiliza ”
$ 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.
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 .
$echo $HOME
Comanda shell UNIX echo permite afisarea mai multor varibile de mediu in acelasi timp.
$ printenv
SSH_AGENT_PID=4924
TERM=xterm
SHELL=/bin/bash
GTK_RC_FILES=/etc/gtk/gtkrc:/home/ovidiu/.gtkrc-1.2-gnome2
WINDOWID=48234503
USER=ovidiu
LS_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;3
3;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;3
1:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pb
[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/socket
SSH_AUTH_SOCK=/tmp/ssh-oUzbtS4882/agent.4882
SESSION_MANAGER=local/ovidiu-desktop:/tmp/.ICE-unix/4882
USERNAME=ovidiu
KONSOLE_DCOP=DCOPRef(konsole-6254,konsole)
DESKTOP_SESSION=default
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games
GDM_XSERVER_LOCATION=local
KONSOLE_DCOP_SESSION=DCOPRef(konsole-6254,session-1)
PWD=/home/ovidiu
LANG=en_AU.UTF-8
GDMSESSION=default
HISTCONTROL=ignoredups
HOME=/home/ovidiu
SHLVL=1
LANGUAGE=en_AU:en
GNOME_DESKTOP_SESSION_ID=Default
LOGNAME=ovidiu
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-
lptbnuh5iH,guid=d19cec488f09fa192898ca4663899500
LESSOPEN=| /usr/bin/lesspipe %s
DISPLAY=:0.0
LESSCLOSE=/usr/bin/lesspipe %s %s
COLORTERM=
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.
[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.txt
Comanda cat
- este utilizata pentru afisarea simpla a continutului unui fisier
- pentru concatenarea continutului a doua fisiere
$ cat b.txt
Comanda printenv
− este utilizata pentru afisarea valorilor tuturor variabilelor de mediu$ cat a.txt b.txt
Comanda 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
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.
Aceasta comanda shell UNIX are diferite optiuni. Acestea vor fi explicate in continuare.
[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 3
Se 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.
printf("Buna ziua!");
}
[7]+ Stopped cat -n >program.c
ovidiu@ovidiu-desktop:~$ cat program.c
1 #include <stdio.h>
2 int main()
3 {
4
5 printf("Buna ziua!");
6 }
ovidiu@ovidiu-desktop:~$
$ cat -E program.c
cat -E program.c
1 #include <stdio.h>$
2 int main()$
3 {$
4 $
5 printf("Buna ziua!");$
$
$cat -t program.c
cat -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.c
cat -A program.c
1^I#include <stdio.h>$
2^Iint main()$
3^I{$
4^I$
5^Iprintf("Buna ziua!");$
Comanda 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.
$ who
ovidiu :0 2008-10-08 14:43
Comanda whoami
Aceasta comanda printeaza identificatorul utilizatorului care a deschis acea sesiune de lucru.
Exemplu
$whoami
ovidiu
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
[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.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ovidiu :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 -u
Wed Oct 8 17:04:11 UTC 2008
De asemeni aceasta comanda permite setarea date si a orei, dupa cum urmeaza :
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.
[LABORATOR DE SISTEME DE OPERARE 1] Prep.Drd.Aritoni Ovidiu
ovidiu@ovidiu-desktop:~$ cal
October 2008
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
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 50
Message: A
#
#
###
######
# #####
####
## ####
## #####
## #####
## #####
## ############
## ##############
## ##############
##############
# ###############
# ###############
#############
##########
######
##
#
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.
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.
$ ls -l
Drepturi asupra Numarul de i-noduri Utilizatorul care Grupul de utilizatori Marimea fisierului Ultima data la care Numele
fisierului alocate acelui fisier are acces la fisier care are acces la fisier exprimata in biti fisierul a fost modificat fisierului
Sirul de caractere care arata drepturile asupra unui fisier se exprim sub forma
[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.
Comanda shell UNIX utilizata pentru a seta permisiunile de acces asupra fisierelor si directoarelor
este chmod. Aceasta are sintaxa sub forma simbolica:
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.
$ dir
a.txt b.txt date.txt endians.c~ foldere.txt lctes05.pdf proiect-client-server rap
+fig.pdf Teste text.txt
BadetBonneauRapportTER.pdf c.txt Desktop Examples Java program.c proiect-client-
server.7z Script_folii.pdf test.txt tutorialUnix1.doc
Comanda cd
Comanda pwd
[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.
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 Desktop
ovidiu@ovidiu-desktop:~/Desktop$ pwd
/home/ovidiu/Desktop
mkdir
cp