Sunteți pe pagina 1din 24

1.

LINUX
1.1. Sistemul de operare Linux
n aceast! sec"iune este prezentat sistemul de operare Linux n contextul istoric Unix.
Unix este o familie de sisteme de operare care implementeaz! o interfa"! de programare a
aplica!iilor (API Application Programming Interface) comun!, numit! POSIX (Portable
Operating System Interface [for Unix]). POSIX este o colec!ie de standarde definit" de IEEE
(Institute of Electrical and Electronics Engineers) care specific! cerin"ele ce trebuie
ndeplinite de o aplica!ie pentru a fi compatibil! cu Unix. Acest standard poate fi extins "i
pentru alte sisteme de operare. Unix a fost dezvoltat ini!ial n anii 1970 de membrii
laboratoarelor Bell din cadrul corpora!iei AT&T (printre care Ken Thompson, Dennis Ritchie
!i Brian Kerningham), fiind proiectat ca sistem de operare pentru calculatoarele PDP de la
Digital Equipment. n 1973, Unix a fost rescris n C, limbaj de programare creat de
Kerningham !i Ritchie tocmai n acest scop, urm"rindu-se ca sistemul de operare s! fie u"or
de portat pe toate platformele hardware existente. n 1973, Unix a fost rescris n C, limbaj de
programare creat de Kerningham !i Ritchie special pentru acest lucru. Scopul era s" fac"
sistemul de operare portabil pe toate platformele existente. Prima versiune folosit! extensiv n
afara laboratorelor Bell a fost Unix System, Sixth Edition, cunoscut! sub numele de V6.
Simplitatea design-ului, cuplat! cu faptul c! a fost distribuit mpreun! cu codul surs!, a
condus la preluarea !i dezvoltarea rapid" de c"tre multe alte organiza!ii. n anii 1980 "i 1990,
majoritatea companiilor produc!toare de servere "i sta#ii de lucru "i echipau produsele cu
propriile variante comerciale de Unix. Printre acestea erau Tru64 de la Digital, HP-UX de la
Hewlett Packard, IBM AIX, SGI IRIX, SUN Solaris.
n acest context, n 1991, Linus Torvalds a dezvoltat prima variant! de Linux ca
sistem de operare pentru calculatoare dotate cu procesor Intel 80386, un procesor nou la
timpul respectiv. Intel 80386 implementa modelul liniar de memorie care permitea pentru
prima dat! rularea sistemelor Unix pe procesoare din familia Intel x86. Linus, pe atunci
student la Universitatea din Helsinki, era interesat de sistemele Unix. Folosea Minix, un
sistem Unix ieftin creat n scop educa!ional, dar a fost deranjat de imposibilitatea distribuirii
modific!rilor aduse codului surs! (din cauza licen"ei Minix) #i de deciziile de proiectare luate
de autorul Minix
1
-ului, Andrew Tanenbaum. Decide s! scrie propriul sistem de operare "i, la
finele anului 1991, ncarc! pe Internet o versiune timpurie. Din acel moment, num!rul celor
care lucreaz! la Linux a crescut n mod impresionant. n prezent, Linux este un sistem de
operare complet. Ruleaz! pe arhitecturi Intel x86, ARM, PowerPC, SPARC "i multe altele.
Este folosit ca sistem de operare ncepnd de la telefoane mobile inteligente pn! la clustere
dedicate calculelor de nalt! performan"!.
Linux este compatibil cu Unix, dar nu este Unix. Linux mprumut! multe idei de la
Unix !i implementeaz" API-ul Unix (a!a cum este definit de POSIX !i Single Unix
Specification), dar nu este un descendent direct al codului surs! Unix. Cnd s-a dorit, acesta a
deviat de la calea urmat! de implement!rile sistemelor Unix. Totu"i, nu a abandonat niciodat!
obiectivele generale de proiectare Unix !i a respectat interfe"ele de programare standardizate.
Spre deosebire de alte sisteme de operare, nicio firm! nu este proprietara sistemului Linux.
Mai mult dect att, el este protejat de Licen!a Public" GNU care stipuleaz" faptul c"
programele se poate copia !i utiliza gratuit, cu condi"ia de a se permite !i altora s# fac# acela!i

1
Polemica continu! "i n ziua de ast!zi. Site-ul sistemului Minix este www.minix3.org

lucru. Conceptul apar!ine ini!iatorului mi"c#rii Funda!iei pentru un Software Liber (Free
Software Foundation), Richard Stallman, ini!iatorul proiectului GNU. Proiectul GNU a luat
fiin!" din ncercarea de a crea un sistem de operare #i un mediu de dezvoltare compatibil cu
Unix. Aplica!iile distribuite n cadrul proiectului GNU sub licen!" public" includ:
GCC, compilator de C;
G++, compilator de C++;
GDB, utilitar pentru depanare;
GNU Make, versiune de Unix Make;
bash, interpretor de comenzi;
GNU Emacs, editor de text.
Sistemul Linux propriu-zis este alc!tuit din nucleu (kernel) (aportul principal adus de
Linus Torvalds) !i un num"r de unelte de programare !i utilitare de sistem, dintre care cele
mai importante (biblioteci C, editor de text pentru cod surs!, compilator, editor de leg!turi,
depanator, interpretorul de comenzi, etc.) sunt GNU. Un sistem Linux alc!tuit dintr-un
program de instalare, un kernel !i un set de aplica!ii gata compilate se nume"te distribu!ie
Linux. Numeroase companii !i organiza"ii au realizat asemenea distribu"ii. Acestea sunt
disponibile gratuit sau pot fi achizi!ionate contra cost. Dintre cele gratuite, distribu!iile Linux
cele mai r!spndite sunt Ubuntu, Debian, Fedora, CentOS, OpenSuSE.

Nucleu (kernel)
Interpretor de
comenzi (shell)
Aplica!ii

Figura 1.1 Structura de ansamblu a unui sistem de operare
1.1.1. Kernelul
Sistemul de operare Linux este reprezentat de fapt de kernelul s!u. Mul!i folosesc
cuvntul Linux numai n acest sens (n aceast! carte Linux se refer! la sistemul de operare n
ansamblu: kernel, utilitare, aplica!ii, interfa!" grafic"). Kernelul este un program care
gestioneaz! operarea sistemului de calcul. Ca orice alt program, const! dintr-o secven!" de
instruc!iuni executat" de procesor. Ceea ce l diferen!iaz" de programele obi#nuite (editoare
de text sau jocuri pe calculator) sunt func!ionalit!"ile speciale pe care le de!ine asupra
sistemului de calcul. Kernelul gestioneaz! resursele hardware "i software ale sistemului:
asigur! accesul "i controlul dispozitivelor periferice, organizeaz! informa#ia n memoria
principal!, ncarc! "i execut! programele de aplica!ii, etc.. n Linux, kernelul este complet
separat de interfa!a cu utilizatorul (care cuprinde "i interfa!a grafic#) "i este protejat de
func!ionarea defectuoas" a altor programe din sistem. Memoria este mp"r!it" logic n dou"
p!r"i, zona dedicat! kernelului (kernel space) !i zona dedicat" utilizatorului (user space).
Spa!iul utilizator este dedicat aplica!iilor, iar spa!iul kernel se ocup" efectiv de controlul
componentelor hardware. Niciun program care ruleaz! n spa"iu utilizator nu poate scrie (n
general nici citi) ceva stocat n spa!iul kernel. Comunica!ia ntre cele dou" zone se face prin
apeluri de sistem strict controlate. Accesul direct la componentele fizice, incluznd memoria
!i perifericele, este limitat numai la codul care ruleaz! n spa"iul kernel. Programele din
spa!iul utilizator acceseaz" perifericele numai prin intermediul driverelor de sistem care
ruleaz! n kernel.

1.1.2. Interpretorul de comenzi
Interpretorul de comenzi (shell) este o interfa!" ntre utilizator !i sistemul de operare;
preia comenzile utilizatorului !i le transmite sistemului de operare spre execu"ie. Totu!i,
interpretoarele de comenzi sunt indepedente de sistemul de operare. Primul interpretor de
comenzi important, numit Bourne shell, a fost dezvoltat de Steven Bourne !i a fost inclus ntr-
o distribu!ie de Unix lansat" n 1979. Acest interpretor de comenzi este cunoscut n cadrul
sistemului de operare sub numele de sh. Un alt interpetor de comenzi utilizat pe scar! larg!
este csh. Csh a fost scris de Billy Joy ca parte integrant! a unei distribu"ii de Unix numit!
BSD (Berkley System Distribution), !i a ap"rut la c#iva ani dup" sh. Numele de csh l-a
primit datorit! asem!n!rii sintaxei comenzilor sale cu cea a instruc!iunilor din limbajul C, fapt
ce l face mai u!or de utilizat de c"tre cei familiariza#i cu limbajul C. Toate aceste
interpretoare au fost ini!ial dezvoltate pentru Unix, dar s-au dezvoltat versiuni !i pentru
Linux.
Interpretorul de comenzi standard n Linux este bash (GNU Bourne-Again Shell),
compatibil cu sh. Poate fi accesat din cadrul interfe!ei grafice cu ajutorul unei aplica!ii numit"
consol!. Ini!ial, pe timpul cnd sistemele de calcul tocmai deveneau interactive (nainte de
asta func!ionau pe baza de cartele perforate), consolele erau formate dintr-un terminal (un
monitor care avea ata!at" o tastatur") care se conecta la sistemul de calcul prin conexiune
serial!. n prezent, pentru un calculator obi!nuit, monitorul !i tastatura au rol de terminal. n
Linux, ele permit accesarea a dou! tipuri de console: terminalele virtuale (console n mod
text) !i emulatoare de terminale (console n mod grafic).
Terminalele virtuale se numesc astfel deoarece utilizatorul poate dispune de mai
multe console diferite de!i fizic exist" o singur" pereche tastatur!/monitor. Terminalele
virtuale pot fi accesate din interfa!a grafic" cu ajutorul tastelor (Ctrl+)Alt+F1(Ctrl+)Alt+F6
(n mod implicit). Din aceste terminale virtuale se poate reveni n interfa!a grafic" cu ajutorul
combina!iei de taste (Ctrl+)Alt+F7.
Consolele n mod grafic reprezint! emulatoare de terminal. Ele se numesc emulatoare
deoarece simuleaz! func"ionalitatea unui terminal. Un asemenea emulator poate fi deschis cu
Ctrl+Alt+T. El va rula interpretorul de comenzi bash, responsabil cu afi!area unui prompt.
Prompt-ul are rol de interfa!" n linie de comand" (CLI Command Line Interface). La
aceast! linie de comand! vor fi introduse comenzile executate de interpretorul de comenzi.
Orice program lansat n execu!ie de c"tre acesta poart! numele de proces. Tabelul 2.2
prezint! anumite combina"ii de taste care faciliteaz! lucrul n consol!.
Tabelul 1.1 Utilizarea func!ionalit"!ilor Bash
Ctrl+A
Mut! cursorul la nceputul liniei de comand!.
Ctrl+E
Mut! cursorul la sfr"itul liniei de comand!.
Ctrl+C
Termin! procesul curent.
Ctrl+Z
Suspend! procesul curent.
Ctrl+D
nchide sesiunea curent!. Similar! cu tastarea exit.
Ctrl+R
Caut! n istoricul comenzilor.
Ctrl+U
!terge linia curent".
Ctrl+K
!terge cuvintele din dreapta cursorului.
Ctrl+W
!terge cuvintele din fa"a cursorului.
Ctrl+L
!terge tot ce este afi"at n consol#.
Ctrl+H
!terge pozi"ia curent# (similar cu Backspace).
Shift+Ctrl+C
Copiaz! textul selectat n memoria temporar!.
Shift+Ctrl+V
(Shift+Insert)
Scrie con!inutul din memoria temporar".
Alt+F
Mut! cursorul un cuvnt nainte.
Alt+B
Mut! cursorul un cuvnt napoi.
S!geat! sus / jos
Navigare prin istoricul comenzilor. Executa!i linia pe
care dori!i s" o repeta!i cu Enter.

Shift+PageUp /
PageDown
Navigare prin terminal (pentru a vedea textul care a
ie!it din ecran.
Tab
Completeaz! comanda sau numele de fi"ier. Dac! sunt
mai multe posibilit!"i, ap!sarea a dou! Tab-uri
succesive afi!eaz" lista acestora.
!!
Ruleaz! din nou ultima comand! executat!

n prezent se obi!nuie!te ca emulatorul de terminal s" se numeasc" terminal.
Conven!ie la care ader"m #i noi de acum nainte. Terminalul este panoul de control al
sistemului. O fereastr! terminal ar trebui s! arate ntotdeauna un prompt, a c!rui nf!"i#are
depinde de la distribu!ie la distribu!ie. n mod standard, afi!eaz" numele utilizatorului
conectat !i directorul curent n care se lucreaz":

user@host:~$

n exemplul de mai sus, user va fi numele dumneavoastr! de utilizator, host numele
calculatorului pe care lucra!i, iar simbolul ~ semnific! faptul c! directorul curent este chiar
directorul personal. Directorul personal este creat o dat! cu contul unui utilizator "i reprezint!
directorul din sistem destinat s! con"in! fi#ierele proprii acelui utilizator. Simbolul $ (dollar)
semnific! faptul c! utilizatorul nu are drepturi de administrare asupra sistemului. Utilizatorul
cu drepturi depline n sistem, numit root, este indicat cu simbolul # (diez). Prompt-ul
afi!eaz" tot felul de informa#ii dar nu este parte a comenzilor pe care le d"m sistemului.
Aproape toate comenzile din aceast! carte pot fi executate f!r! privilegii de administrator.
Atunci cnd lans!m ca utilizator obi"nuit o comand! care necesit! privilegii de root, scriem
n fa!a acesteia sudo.
Comenzile sunt cuvinte cheie care se introduc la consol! "i interpretate de
interpretorul de comenzi. Se folosesc pentru a configura sistemul de operare sau pentru a
ob!ine informa!ii de la acesta. Comenzile pot fi introduse ca atare, de exemplu, ls, sau pot
primi diverse op!iuni care modific" rezultatul acestora. Op!iunile sunt de regul" precedate de
caracterul liniu!", precum n ls -a. Folosit n alt! comand!, acela"i caracter de op!iune
poate avea alt! semnifica"ie. Unele programe pot avea op!iuni lungi, precedate de dou"
caractere liniu!", precum ls -all, altele nu au nicio op!iune. Separarea ntre numele
comenzii !i op"iune, sau ntre op"iuni, se face prin caracterul spa"iu.

user@host:~$ ls --all /

Pe lng! op"iuni, comenzile pot lua argumente. Argumentele specific! obiectul asupra
c!ruia trebuie s! ac"ioneze comanda. Un exemplu ar fi ls /etc, unde directorul /etc este
argument al comenzii ls. Aceast! comand! nseamn! c! dorim s! list!m con"inutul
directorului dat ca argument, n loc de ceea ce afi!eaz" comanda simpl" ls, adic! con"inutul
directorului n care ne afl!m (directorul curent). Anumite comenzi au neap!rat nevoie de
argumente.
Putem verifica dac! o comand! recunoa"te op!iuni !i argumente !i care dintre ele sunt
valide consultnd paginile de ajutor (manual) ale respectivei comenzi. Citirea acestora se face
tot n terminal. Tasta!i comanda urm"toare, urmat" de Enter.

user@host:~$ man ascii

Naviga!i la pagina urm"toare folosind tasta Space. V! pute"i ntoarce la pagina precedent!
folosind tasta b. Tasta!i q dac! dori"i s! ie#i"i din paginile manual nainte de a ajunge la
sfr!itul lor sau dac" programul nu se nchide automat la sfr!itul paginilor. Paginile de
manual sunt mp!r"ite n sec"iuni, Tabelul 2.3. Unele comenzi dispun de informa!ii n mai
multe sec!iuni. De exemplu passwd, comanda utilizat! la schimbarea parolei de utilizator.

Informa!ia cu privire la comand" este inclus" n sec!iunea 1. O alt" intrare pentru passwd
este n sec!iunea 5. Aceast" intrare descrie fi#ierul de sistem /etc/passwd. Paginile de
manual prezentate implicit sunt cele din sec!iunea cu cel mai mic num"r de identificare. Dac"
dori!i s" vede!i o alt" sec!iune dect cea afi#at" implicit, specifica!i num!rul acesteia dup!
comanda man:

user@host:~$ man 5 passwd

O alt! op"iune de interes o reprezint! k (keyword), c!utarea unui cuvnt cheie n paginile de
manual.
Tabelul 1.2 Sec!iunile paginilor de manual
Sec!iune Descriere
1 Comenzi disponibile utilizatorului
2 Apeluri de sistem
3 Func!ii din bibliotecile C
4 Dispozitive !i fi!iere speciale
5 Formate de fi!iere !i conven"ii
6 Jocuri
7 Diverse
8 Unelte de administrare a sistemului
1.1.3. Sistemul de fi!iere
ntr-un sistem UNIX, orice este un fi!ier; dac" ceva nu este un fi!ier, atunci este un
proces.

Aceast! propozi"ie nu este complet adev!rat!, deoarece exist! fi#iere speciale care
sunt mai mult dect ni!te simple fi!iere (cele numite pipes !i sockets, de exemplu), dar pentru
simplitate, a spune c! orice este un fi"ier constituie o generalizare acceptabil!. Un sistem
Linux, la fel ca Unix-ul, nu face diferen!a ntre director "i fi"ier. Un director este doar un fi"ier
care con!ine numele altor fi"iere. Programele, serviciile, textele, imaginile, "i a"a mai departe,
sunt toate fi!iere. Din punct de vedere al sistemului de operare, dispozitivele de intrare/ie!ire
sunt tot fi!iere. Dar cele mai multe fi!iere, n special cele cu care vom interac"iona n aceast#
carte, sunt fi!iere simple (con"in date obi!nuite). De exemplu, fi!iere text, fi!iere executabile,
fi!iere de cod sau rezultate. A!adar, de acum nainte ne vom concentra asupra directoarelor !i
fi!ierelor obi!nuite.
Sistemul de fi!iere este organizat ca ierarhie de directoare cu structur" arborescent".
2


2
man hier

/
/
bin/
bin/
media/
media/
etc/
etc/
sbin/
sbin/
mnt/
mnt/
home/
home/
chmod
chmod
mkdir
mkdir
cat
cat
ls
ls
stefan/
stefan/
student/
student/
asm/
asm/
fisier.txt
fisier.txt
Desktop/
Desktop/

Figura 1.2 Ierarhia de directoare Linux
Structura arborescent! ncepe cu trunchiul, indicat de caracterul / (slash). Acest
director, care con!ine toate celelalte directoare "i fi"iere ale sistemului, este directorul root
sau r!d!cina sistemului de fi!iere. Directoarele care se afl" pe palierul imediat urm"tor
directorului r!d!cin! sunt adesea precedate de caracterul /. Lucru care indic! pozi"ia acestora
pe al doilea nivel !i evit" confuzia cu alte directoare de acela!i nume aflate pe alte niveluri.
Fiecare din aceste directoare pot con!ine alte directoare sau fi"iere. Totodat!, fiecare director
din r!d!cin! are un scop predefinit. De exemplu, directorul /home con!ine directoarele
personale ale utilizatorilor obi!nui"i.

Nume director
3
Con!inut
/bin (binaries) Fi!iere executabile de uz general.
/boot Con!ine o parte a nc"rc"torului de sistem #i kernelul.
/dev Fi!iere de dispozitiv.
/etc Fi!iere de configurare ale sistemului !i aplica"iilor.
/home Con!ine directoarele personale ale utilizatorilor obi!nui"i.
/lib Biblioteci de func!ii "i module de kernel necesare pentru ini!ializarea
sistemului !i rularea comenzilor din /bin !i /sbin.
/lib64
/media
/mnt Folosit pentru montarea temporar! a altor sisteme de fi"iere.
/opt Aplica!ii suplimentare care nu fac parte din distribu!ie.
/proc Un pseudo sistem de fi!iere care are rolul s" exporte informa#ii din
spa!iul kernel n spa!iul utilizator.
/root Directorul personal al utilizatorului root.
/sbin Con!ine executabile pentru administrarea sistemului (inaccesibile
utilizatorilor neprivilegia!i).
/sys
/tmp Fi!iere temporare cu permisiuni de scriere/citire pentru oricine.
/usr Aplica!ii destinate utilizatorului. Con!ine "i el o ierarhie de directoare
deoarece informa!iile sunt structurate.
/var Fi!iere cu dimensiune variabil". Fi!iere cu durat" de via#" mic" sau al
c!ror con"inut se modific! des.

3
De!i exist" diferen#e ale ierarhiei de directoare de la distribu#ie la distribu#ie, n general se ncearc"
aderarea la standardul FHS (Filesystem Hierarchy Standard) care specific! structura sistemelor de
fi!iere Linux.


Pe lng! /, care semnific! directorul r!d!cin!, "i ~, care reprezint! directorul personal
al utilizatorului, mai ntlnim caracterele . !i .. - directorul curent, respectiv directorul aflat
pe nivelul imediat superior (p!rinte).
O adres! de fi"ier, n#eleas! ca traseu ce trebuie parcurs n structura de fi"iere pentru a
ajunge la acel fi!ier, poate fi descris! n dou! moduri. n primul, traseul ncepe de la directorul
r!d!cin!
/home/user/fisier.txt

!i este denumit cale absolut!. n acest caz, nu pot exista confuzii, numai un singur fi!ier din
sistem corespunde acestui traseu.
n al doilea mod, denumit cale relativ!, traseul nu ncepe cu caracterul /, de exemplu

~/fisier.txt
sau
bin/fisier.txt

!i pot fi generate confuzii. ~/fisier.txt nseamn! fi"ierul care se afl! n directorul
personal al utilizatorului, dar nu se specific! care utilizator. La fel, bin/fisier.txt
nseamn! fi"ierul din directorul bin/ cu plecare din directorul n care te afli n prezent.
Directorul curent se poate afla prin comanda pwd.
C!ile relative folosesc "i caracterele . !i .. . Iat! cteva exemple:
documenta!ia de instalare a unui program surs" (necompilat) specific" s" rul"m
comanda ./configure. Aceasta execut! programul configure din directorul
curent (cel care vine cu noul cod), !i nu alt program omonim, care se g"se!te n alt"
parte a sistemului.
n fi!ierele HTML, c"ile relative sunt folosite la specificarea celorlalte fi!iere,
independent de loca!ia directorului n care se afl" site-ul, specific! unui server web.

<a href=../files/begin.html> .. </a>

Trecerea dintr-un director n altul se face prin comanda cd urmat! de adresa absolut!
sau relativ! a noului director. Dac! dorim s! trecem ntr-un director cu nume foarte lung, nu
trebuie s! tast!m tot numele, este de ajuns s! scriem primele caractere "i s! ap!s!m Tab,
consola va completa numele n locul nostru. n cazul n care sunt !i alte directoare sau fi!iere
care ncep cu aceea!i secven"# de caractere, consola va semnala sonor acest lucru, iar ap#sarea
tastei Tab de dou! ori ntr-un interval scurt de timp va afi!a toate variantele.
Comanda mkdir (make directory) creaz! un nou director. Dac! nu se specific! o
cale, acesta se va afla n directorul curent. De asemenea, re!ine!i faptul c" Linux face
distinc!ie ntre literele mari !i mici. Altfel, un director assembly este diferit de unul numit
Assembly.

user@host:~$ mkdir assembly

Un director gol se !terge cu rmdir (remove directory). De exemplu, comanda

user@host:~$ rmdir assembly

!terge directorul creat nainte. Dac" directorul specificat nu este gol, rmdir nu va !terge
directorul. Pentru a !terge un director cu con"inut trebuie nti s# !tergi con"inutul (fi!iere sau
sub-directoare), sau s! folose"ti comanda rm cu op!iunea -r. n mod normal, rm (remove)
!terge un fi!ier:

user@host:~$ rm fisier.txt


Interpretorul de comenzi ne permite s! specific!m anumite grupuri de fi"iere. Acesta poate
substitui n numele fi!ierelor orict de multe caractere, cu un asterisc, sau un singur caracter,
cu un semn de ntrebare (poate substitui serii de numere !i caractere, majuscule sau nu, dar nu
detaliem). De exemplu,

user@host:~$ rm prog*

!terge toate fi!ierele care ncep cu prog. ndep!rtarea tuturor fi"ierelor din directorul curent
se face cu

user@host:~$ rm *

Directoarele nu sunt !terse. Pentru asta e nevoie de op"iunea -r men!ionat" anterior:

user@host:~$ rm -r *

Ultima comand! este foarte puternic! !terge toate directoarele !i fi!ierele din
directorul curent. Cu o excep!ie, directoarele . !i .. . Deoarece sunt absolut necesare,
acestea sunt imposibil de !ters. Ele determin" rangul acelui director n sistemul de fi!iere. Dar
acest lucru nu cred c! ne bucur! prea tare. A"adar, mare aten#ie! n Linux, la fel ca n Unix, nu
exist! co" de gunoi cel pu!in nu n cazul consolei, pentru c" n cazul interfe!ei grafice exist"
destule alternative. A!a c", odat" !ters, un fi!ier este pierdut !i, n general, nu exist"
posibilitate de recuperare. Ca m!sur! de precau"ie, n cazul comenzilor rm, cp !i mv se poate
activa comportamentul interactiv prin op!iunea -i. n acest mod, la o cerere de acest tip,
sistemul va cere confirmare, astfel nct pentru a produce o pagub! este nevoie de o a doua
ap!sare a tastei Enter:

user@host:~$ rm -ri Directory
Tabelul 1.3 Comenzi de uz general pentru lucrul cu fi!iere !i directoare
Comand! Descriere
touch fisier Creaz! un fi"ier gol.
cat fi!ier Afi!eaz" pe ecran tot con#inutul fi!ierului specificat.
less fi!ier Arat! con!inutul fi"ierului cu un vizualizor mai complex.
cp surs! destina"ie Copiaz! fi"ierul surs! n fi"ierul destina#ie.
mv surs! destina"ie Redenume!te sau mut" fi!ierul surs".
du fi!ier/director Afi!eaz" m"rimea fi!ierului/directorului.
file fi!ier Determin! tipul unui fi"ier.
grep cuvnt fi!ier Afi!eaz" liniile din fi!ier care con#in cuvntul introdus.
wc fi!ier Num!r! liniile, cuvintele "i caracterele dintr-un fi!ier.
find traseu expresie G!se"te fi"ierele n ierarhia sistemului de fi"iere.

Fi!iere standard
Am deschis discu!ia referitoare la sistemul de fi"iere enun!nd principiul fundamental
de proiectare al sistemelor Unix - everything is a file. Sintagma orice este un fi!ier
trebuie n!eleas" ca orice este reprezentat ca fi#ier. Un fi!ier poate fi o colec"ie de date pe
disc, dar, ntr-un sens mai general, un fi!ier este punctul final al unui traseu parcus de date.
Cnd scrii ntr-un fi!ier, trimi"i date de-a lungul unui traseu la un punct final. Cnd cite!ti un
fi!ier, preiei date dintr-un punct final. n cazul unui transfer ntre fi!iere, calea parcurs" de
date se poate afla n totalitate n interiorul unui calculator sau poate traversa o re!ea de
calculatoare, datele pot suferi modific!ri de-a lungul traseului sau nu, !.a.m.d.. Ceea ce
trebuie s! n"elegem este c! n sistemele Unix totul este reprezentat ca fi#ier #i toate fi#ierele,

indiferent de natura lor, sunt tratate de c!tre mecanismele interne ale sistemului de operare
mai mult sau mai pu!in identic. n acest sens, fi"ierele nu sunt reprezentate numai de colec!iile
de date stocate pe disc, ci de toate componentele hardware care pot juca rol de surs! sau
destina!ie pentru date. Tastatura este un fi"ier: un punct final care genereaz# date "i le trimite
undeva. Monitorul este un fi!ier: un punct final care prime!te date de undeva !i le afi!eaz".
Fi!ierele Unix nu sunt neap"rat fi!iere text. Fi!ierele binare au parte de acela!i tratament.
Tabelul 2.5 prezint! cele trei fi"iere standard definite de sistemele Unix sau nrudite, cum este
Linux. Aceste fi!iere sunt deschise !i disponibile ntotdeauna n timpul rul"rii programelor.
Tabelul 1.4 Cele trei fi!iere standard n Unix
Fi!ier Identificator C Descriptor de fi!ier Hardware
Standard Input STDIN 0 Tastatur!
Standard Output STDOUT 1 Monitor
Standard Error STDERR 2 Monitor

Pentru sistemul de operare, un fi!ier este reprezentat printr-un descriptor de fi!ier.
Descriptorul de fi!ier este un num!r. Primele trei numere apar"in celor trei fi#iere standard.
Dac! un program deschide un fi"ier existent sau creaz! unul nou, Linux va returna un
descriptor de fi!ier unic. Programul va gestiona fi!ierul prin descriptorul de fi!ier respectiv.
Tabelul 1.4 prezint! "i numele de identificare specific limbajului de programare C. De obicei,
cnd cineva spune STDOUT n!elegem c" se refer" la descriptorul de fi#ier 1, adic" la
monitor. Pe de alt! parte, STDERR semnific! destina"ia la care programele trimit mesajele de
eroare. Descriptorii de fi!ier 1 !i 2 au aceea!i destina"ie, monitorul, !i mesajele standard !i
cele de eroare vor fi afi!ate n acela!i mod. Totu!i, n Unix !i Linux putem separa ie!irile
standard ale programului de mesajele de eroare (sau alte mesaje specifice modului n care se
comport! programul) printr-un mecanism numit redirec!ionare I/O.
Redirec!ionarea intr!rilor "i ie"irilor
A!a cum am afirmat anterior, n mod predefinit, ie!irile standard sunt direc"ionate la
monitor !i afi!ate pe ecran (n general prin intermediul unui terminal). Dar asta numai
predefinit. Punctul final pentru un flux de date care se ndreapt! c!tre STDOUT poate fi
modificat. Datele trimise c!tre STDOUT pot fi redirec"ionate c!tre un fi#ier aflat pe disc. Un
fi!ier este un fi!ier, traficul de date ntre fi!iere, indiferent de natura acestora, este gestionat de
Linux n acela!i mod, a!adar schimbarea unui punct final cu altul nu ridic" probleme. Datele
direc!ionate c"tre ie#irea standard pot fi redirec!ionate c"tre un fi#ier existent sau c!tre un
fi!ier nou, creat n timpul rul"rii programului.
La fel, predefinit, datele de intrare pentru programe provin de la tastatur!. Cum tot
ceea ce trimite tastatura este text, acest text poate proveni !i de la alte fi!iere text. Pentru un
program, comutarea ntre sursele de intrare este la fel de facil! precum comutarea destina"iilor
aferente datelor sale de ie!ire. Mecanismul care realizeaz" aceast" comutare se nume!te
redirec!ionare I/O. Toate comenzile specifice interpretorului de comenzi din Linux trimit
datele de ie!ire la STDOUT (ecran). Comanda ls, de exemplu, trimite con!inutul directorului
curent la STDOUT. Scriem n terminal ls, !i ne este afi!at la ecran un listing al directorului
curent. Putem captura acest listing prin redirec!ionarea textului emis de ls c!tre un fi"ier aflat
pe disc.

user@host:~$ ls > continut.txt

Dac! nu exist!, fi"ierul continut.txt va fi creat automat !i va con"ine tot textul emis de
comanda ls. A!adar, am comutat ie!irea standard de la ecran la fi!ierul continut.txt.
Simbolul > (mai mare) este doar unul din operatorii de redirec!ionare. Simbolul < (mai mic)
realizeaz! func"ia invers!, comut! intrarea standard; schimb! fi#ierul STDIN (tastatura) cu un
alt fi!ier, de obicei un fi!ier aflat pe disc. n Linux dispunem de un program care schimb!
caracterele mari cu mici, sau invers.


user@host:~$ tr '[:lower:]' '[:upper:]'

Un program care ruleaz! are ntodeauna deschise trei fi"iere standard: STDOUT
(pentru afi!are la ecran), STDIN (pentru preluarea caracterelor de la tastatur!), "i STDERR
(pentru afi!area mesajelor de eroare la ecran). tr nu face excep!ie de la regul". n timpul
rul!rii a"teapt! date de la tastatur!, iar rezultatul proces!rii este afi"at la ecran. Introduce#i
cuvinte sau litere mici !i observa"i c# la ecran sunt afi!ate cu majuscule.

user@host:~$ tr '[:lower:]' '[:upper:]'
text introdus de la tastatura (stdin) si afisat la ecran (stdout)
TEXT INTRODUS DE LA TASTATURA (STDIN) SI AFISAT LA ECRAN (STDOUT)

Putem schimba intrarea standard cu un fi!ier aflat pe disc. Fi!ierul este creat folosind
operatorul de redirec!ionare >.

user@host:~$ echo "Acesta este un fisier text" > input.txt
user@host:~$ tr '[:lower:]' '[:upper:]' < input.txt

Putem modifica simultan intr!rile "i ie"irile standard ale unui program;

user@host:~$ tr '[:lower:]' '[:upper:]' < input.txt > output.txt

Redirec!ionarea I/O permite programului s! citeasc! date din fi"ierul input.txt, iar
dup! procesare s! le scrie n fi"ierul output.txt. Ambele aflate pe disc. Operatorii de
redirec!ionare pot fi privi!i ca s"ge!i care indic" direc!ia mi#c"rii datelor. Datele sunt luate din
fi!ierul input.txt !i trimise c"tre program; astfel, simbolul < arat" c" datele se deplaseaz" de la
fi!ier c"tre program. n mod similar, simbolul > arat! c! programul trimite datele c!tre fi"ierul
output.txt.
Privind n ansamblu, redirec!ionarea I/O ac!ioneaz" ca un fel de comutator de date,
schimbnd direc!ia fluxurilor de date de la fi"ierele standard la fi"ierele surs! "i destina#ie
dorite de utilizator.
Comanda cat afi!eaz" la STDOUT con#inutul unui fi!ier.

user@host:~$ cat fisier.txt

Prin redirec!ionarea ie!irii standard c"tre un alt fi!ier, acesta din urm" va fi creat
(dac! nu exist!), sau suprascris (dac! exist! deja). n concluzie, aceast! comand! necesit!
aten!ie suplimentar".

user@host:~$ cat input.txt > output.txt

Interpretorul de comenzi bash dispune de o facilitate care ne protejeaz! de acest
risc: noclobber. Putem seta variabila noclobber utiliznd comanda set:

user@host:~$ set -o noclobber

Pentru deselectarea variabilei noclobber se folose!te comanda:

user@host:~$ set +o noclobber

Dac! variabila noclobber este setat!, putem for"a suprascrierea unui fi#ier pozi"ionnd
operatorul | (discutat n capitolul urm!tor) imediat dup! operatorul redirec!ionare (>|) sau
simbolul de alipire (>>|). Dou! caractere mai mare dect, >>, adaug! text la un fi"ier
existent. Urm!toarea comand! adaug! con"inutul fi#ierului input.txt la fi!ierul output.txt.


user@host:~$ cat input.txt >> output.txt

Redirec!ionarea a nimic c!tre un fi"ier existent este acela"i lucru cu "tergerea
con!inutului acelui fi"ier:

user@host:~$ > fisier.txt

Acest proces este numit trunchiere (truncating). Acela!i tip de redirec!ionare, de data aceasta
c!tre un fi"ier inexistent, va crea un nou fi"ier, gol, cu numele pe care l-a!i introdus n
comanda de redirec!ionare:

user@host:~$ > fisier_nou.txt

De fapt, > nu reprezint! direc"ionarea a nimic, ci reprezint! direc"ionarea ie!irii standard,
STDOUT, c!tre un fi"ier. Ad!ugarea lui 1 n fa#!, ob#innd 1> este acela"i lucru cu >. De
exemplu, 1> fisier.txt este acela!i lucru cu > fisier.txt.

Redirec!ionarea erorilor

Redirec!ionarea ie!irii standard de eroare, STDERR, se face cu 2>. Acest lucru este
util atunci cnd nu dorim ca mesajele de eroare s! umple ecranul. Urm!toarea comand!
redirec!ioneaz" ie!irea de eroare standard la un fi!ier. n mod normal, eroarea ar fi fost afi!at"
la ie!irea standard, adic" pe ecran.

user@host:~$ rm Dir 2> eroare.txt
user@host:~$ cat eroare.txt

Eroarea a fost generat! de faptul c! un director nu poate fi "ters cu rm f!r! op"iunea
r. Pentru a redirec!iona att ie"irea standard ct "i ie"irea de eroare standar c!tre acela"i fi"ier,
se folose!te 2>&1.
user@host:~$ find / -maxdept=1 > hier.txt 2&>1

Ordinea n care se face redirec!ionarea este important". De exemplu, comanda

user@host:~$ ls > list.txt 2&>1

direc!ioneaz" att ie#irea standard ct #i ie#irea de eroare standard n fi#ierul list.txt, n
timp ce comanda

user@host:~$ ls 2&>1 > list.txt

direc!ioneaz" numai ie#irea standard c"tre list.txt, deoarece ie!irea de eroare standard a
fost direc!ionat" c"tre ie#irea standard nainte ca aceasta din urm" s" fie redirec!ionat" c"tre
fi!ier.

Redirec!ionarea intr"rii standard

Redirec!ionarea intr"rii standard se face cu simbolul < (prescurtare de la 0<).

user@host:~$ echo -e "unu \ndoi" > fisier.txt
user@host:~$ cat fisier.txt
unu
doi

user@host:~$ tr '[:lower:]' '[:upper:]' < fisier.txt
UNU
DOI
Simbolul << reprezint! o modalitate prin care putem introduce informa"iei pn! cnd se
ntlne!te o anumit" secven#" (de obicei EOF End Of File). Delimitatorul EOF poate fi scris
ad literam sau poate fi apelat folosind combina!ia de taste Ctrl+D.
user@host:~$ cat << EOF > fisier.txt
> one
> two
> three
> EOF
user@host:~$ cat fisier.txt
one
two
three

user@host:~$ cat << sfarsit > fisier.txt
> unu
> doi
> trei
> sfarsit
user@host:~$ cat fisier.txt
unu
doi
trei

Pentru a furniza unei comenzi ca intrare, direct un !ir de caractere, se folose!te simbolul <<<.

user@host:~$ base64 <<< calculatoare
Y2FsY3VsYXRvYXJlCg==
user@host:~$ base64 -d <<< Y2FsY3VsYXRvYXJlCg==
calculatoare
1.1.4. Conectarea proceselor
O singur! comand! poate satisface un proces simplu, dar e posibil ca un proces mai
complex s! aib! nevoie de mai multe comenzi. Poate avem nevoie s! folosim datele de ie"ire
ale unei comenzi ca date de intrare pentru alt! comand!. Evident, putem memora ie"irile
primei comenzi ntr-un fi!ier temporar !i putem folosi fi!ierul temporar ca intrare pentru
urm!toarea comand!. De exemplu, seria de comenzi

user@host:~$ ls > temp.txt
user@host:~$ wc -w < temp.txt

redirec!ioneaz" ie!irea standard a comenzii ls n fi!ierul temporar temp.txt, apoi folose!te
temp.txt ca intrare pentru comanda care calculeaz! "i afi"eaz! num!rul de cuvinte dintr-un
fi!ier. Interpretorul de comenzi permite ob!inerea aceluia"i rezultat f#r# s# fie nevoie de
fi!iere temporare, prin intermediul operatorului |(pipe).

user@host:~$ ls | wc -w

Putem conecta mai multe comenzi:


user@host:~$ date; ps ef | awk '{print $1}'|sort|uniq| wc -l
1.1.5. Drepturi de acces
n Linux, mecanismul standard de control al accesului la fi!iere !i directoare se
bazeaz! pe drepturi de acces la nivel de utilizator "i grup. Fiecare fi"ier "i director are
permisiuni de acces care indic! cine, "i n ce mod (doar citire, citire/scriere, etc.), le poate
accesa. De exemplu, pe baza acestor permisiuni sistemul de operare poate interzice unor
utilizatori accesul la fi!ierele altui utilizator. Cu toate acestea, sunt situa"ii n care este nevoie
s! partaj!m fi"iere. De exemplu, un grup de programatori care lucreaz! la acela"i proiect
trebuie s! acceseze acelea"i fi"iere. n acest caz, to#i programatorii respectivi pot fi aloca#i
unui grup creat cu drepturi de acces asupra fi!ierelor din proiect.
n mod obi!nuit, un utilizator apar"ine unui singur grup. Totu!i, un utilizator poate fi
membru al mai multor grupuri. Din perspectiva permisiunilor de acces, n sistem sunt trei
tipuri de utilizatori: posesorul (owner), grupul (group) !i to"i ceilal"i (others).
Sistemele de operare Linux, ca !i Unix, asociaz! fi"ierelor "i directoarelor trei tipuri
de drepturi de acces: citire (r), scriere (w) !i execu"ie (x). Atributul de citire d# acces de citire,
atributul de scriere permite scrierea n fi!ier sau director, atributul de execu"ie este necesar la
execu!ia unui fi!ier. Din motive evidente, permisiunea de execu"ie trebuie utilizat# cu fi!iere
binare sau scripturi care con!in cod executabil sau comenzi.
Deoarece sunt trei tipuri de utilizatori, fiecare cu trei tipuri de permisiuni, sistemul
folose!te 9 bi"i. Pentru vizualizarea drepturilor de acces proprii unui fi!ier putem folosi
comanda ls cu op!iunea -l (long).

user@host:~$ ls -l
drwxr-x--- 3 ubuntu users 4096 2011-08-05 10:29 Documents
-rw-r--r-- 1 ubuntu users 1501 2011-08-12 14:50 fisier.txt

Fiecare linie din listing con!ine urm"toarea informa!ie (de la stnga la dreapta):
Prima coloan! afi"eaz! tipul "i drepturile de acces pentru fiecare fi"ier.
o Primul caracter reprezint! tipul fi"ierului. Caracterul d arat! c! Documents
este un director. Fi!ierele obi!nuite se identific" prin caracterul (liniu!").
o Urm!toarele trei caractere (rwx) reprezint! drepturile de acces pentru
utilizatorul ubuntu, care este de!in"torul directorului. Se observ" ca
utilizatorul are toate drepturile.
o Urm!toarele trei caractere (r-x) reprezint! drepturile de acces pentru
utilizatorii care fac parte din grupul users. Se observ! c! este prezent
dreptul de citire !i execu"ie, dar lipse!te dreptul de scriere.
o Urm!toarele trei caractere (---) reprezint! drepturile de acces pentru
utilizatorii care nu sunt ubuntu !i nici nu fac parte din grupul users.
Ace!ti utilizatori nu au niciun drept.
ntregul din a doua coloan! arat! num!rul de leg!turi. Pentru un director, num!rul de
leg!turi este num!rul de subdirectoare pe care le con!ine, inclusiv . !i .. . Pentru un
fi!ier, leg"tura poate apare n cazurile n care partaj"m fi!ierul cu alt utilizator aflat n
grupul nostru, ns! pentru cele mai multe fi"iere num!rul de leg!turi este 1.
Urm!toarea coloan! arat! posesorul fi"ierului. De obicei, posesorul este persoana care
l-a creat.
Urm!toarea coloan! arat! grupul care are acces la fi"ier.
Urm!torul num!r arat! m!rimea fi"ierului n octe#i (caractere). n cazul nostru,
m!rimea fi"ierului fisier.txt este de 1501 de caractere.
Urm!toarele dou! coloane arat! data "i ora la care a fost creat sau modificat ultima
oar! fi"ierul.

Ultima coloan! arat! numele fi"ierului.
Pentru un director, dreptul de citire sau scriere are aceea!i semnifica"ie ca la fi!ierele
obi!nuite: ne permite s! citim con"inutul acestuia, respectiv, ne d! posibilitatea s! scriem n
directorul respectiv (de ex., putem crea un subdirector). Dreptul de execu!ie a fost ns"
redefinit. Un director cu drept de execu!ie nseamn" c" poate fi utilizat ca director curent
(putem utiliza cd Documents, de exemplu). Cu toate acestea este posibil s! nu putem citi
sau scrie n acel director. De exemplu, comanda ls nu va lista fi!ierele din director dac" nu
ave!i dreptul de execu!ie, dar dac" #ti!i numele fi#ierului, pute!i ob!ine detalii despre el sau s!-
l deschide!i cu un editor de text.
Comanda care modific! drepturile de acces este chmod (change mode). Cel care
poate determina drepturile de acces pentru un fi!ier este posesorul acestuia sau utilizatorul
root. Exist! dou! moduri de reprezentare a drepturilor: numeric sau simbolic.
n form! numeric!, pentru fiecare entitate exist! o cifr! n baza 8 care descrie
drepturile, cte un bit pentru fiecare drept. Se scrie 1 pe pozi!ia dreptului activ "i 0 pe pozi!ia
celui inactiv. Prin aceast! metod!, drepturile reprezentate pe 9 bi"i pot lua valori ntre 000 #i
777. Prin aceast! procedur!, drepturile de acces ale directorului Documents din exemplul
anterior (rwx r-x ---) sunt reprezentate n binar ca 111 101 000, echivalent n octal cu
755. Similar, drepturile fi!ierului fisier.txt, rw- r-- r--, pot fi exprimate n octal ca 644.
Deoarere acest mod specific! drepturile exacte pe care le va avea un fi"ier, se nume"te mod de
specificare absolut.

Sistemul de numera!ie octal (baza 8), cu simboluri de la 0 la 7, este folosit de obicei
ca modalitate de exprimare a numerelor binare ntr-o form! compact!, asemenea sistemului
hexazecimal. Numerele n octal sunt convertite n/din binar n acela!i mod ca numerele
hexazecimale, numai c! grup!m cte trei bi"i, nu patru. Fa"! de sistemul hexazecimal, are
avantajul c! nu folose"te digi#i alfabetici. Totu"i, r!spndirea octetului ca unitate de memorie
fundamental! a dus la sc!derea importan"ei sistemului de numera!ie octal.

n form! simbolic!, drepturile "i entit!#ile sunt exprimate prin ini#iala lor. Folosite
mpreun! cu expresii de control al modului, acestea pot defini drepturile de acces. n
majoritatea cazurilor, drepturile de acces sunt setate n func!ie de drepturile curente. De
exemplu, po!i ad"uga dreptul de scriere sau deselecta dreptul de execu!ie la drepturile deja
existente ale unui grup. Expresiile de control constau din trei cmpuri, !i au forma
<entitate><operator><permisiune>. Valorile acestor cmpuri sunt date mai jos.
Tabelul 1.5 Drepturile de acces n Linux
Cmp Valoare Descriere
Entitate
u Utilizator (user)
g Grupul posesorului (group)
o To!i ceilal!i care nu sunt n grup (others)
a To!i utilizatorii (all)
Operator
+ Adaug! permisiune
- Anuleaz! permisiune
= Seteaz! permisiune
Permisiune
r Seteaz! dreptul de citire
w Seteaz! dreptul de scriere
x Seteaz! dreptul de execu"ie
u Seteaz! conform permisiunilor curente ale utilizatorului
g Seteaz! conform permisiunilor curente ale grupului
o Seteaz! conform permisiunilor curente ale tuturor celorlal"i


Formatul instruc!iunii chmod este

user@host:~$ chmod mod_de_acces fi"ier

Modul de acces poate fi exprimat numeric sau simbolic. Iat! cteva exemple.
Comanda
user@host:~$ chmod 660 fisier.txt

schimb! drepturile de acces ale fi"ierului fi!ier.txt n rw- rw- ---. Acest lucru nseamn!
c! numai proprietarul "i grupul din care face parte proprietarul vor putea citi sau scrie fi!ierul;
to!i ceilal!i utilizatori din sistem nu-l vor putea accesa. Dac! dori"i s! le permite"i acestora din
urm! s! citeasc! fi"ierul, folosi#i comanda

user@host:~$ chmod o+r fisier.txt

Pentru a modifica permisiunile tuturor fi!ierelor !i subdirectoarelor unui director, se folose!te
op!iunea -R (recursive). De exemplu, pentru directorul Documents, comanda

user@host:~$ chmod -R 764 Documents

schimb! recursiv permisiunile tuturor fi"ierelor "i directoarelor ("i subdirectoarelor acestora)
din Documents.

Variabila umask

La crearea unui fi!ier sau director sunt aplicate anumite permisiuni implicite,
determinate de variabila umask. Variabila umask specific! permisiunile care se aplic! n mod
implicit. Valoarea acesteia se afl! n fi"ierul /etc/login.defs iar pentru majoritatea
distribu!iilor este 022. Valoarea curent! poate fi afi"at! cu comanda umask. De!i valoarea
este aceea!i att pentru fi!iere ct !i pentru directoare, permisiunile asupra fi!ierelor se
calculeaz! diferit fa"! de cele ale directoarelor. Pentru fi!iere, se scade valoarea umask din
666, iar pentru directoare se scade valoarea umask din 777. A!adar, permisiunile implicite
pentru fi!iere sunt 644, iar pentru directoare 755.
Valorile 666 !i 777 reprezint" valorile umask maxime pentru fi!iere, respectiv
directoare. Valoarea maxim! difer! deoarece se consider! c! pentru fi!iere drepturi de
execu!ie trebuie s" de!in" numai fi#ierele de comenzi (scripturile) #i binarele, fi#ierele
obi!nuite trebuie s! de"in! numai drepturi de citire !i scriere. Directoarele au nevoie de
permisiuni de execu!ie pentru a putea lista con!inutul lor, a"adar pot avea permisiunile 777.
Dac! se dore"te ca nimeni altcineva din sistem s! nu poat! citi fi"ierele din directorul
personal se poate configura valoarea umask la 007 editnd fi!ierul ~/.profile sau
~/.bashrc. Pentru ca valoarea s! fie activ! trebuie s! for"a"i citirea fi#ierelor de
configura!ie bash, dnd comanda source .bashrc.
Ubuntu are o politic! mai special!. Directoarele create n directorul personal cu mkdir
au permisiunile implicite 755, iar fi!ierele create cu touch au implicit permisiunile 664 chiar
dac! varibaila umask implicit! este 022. Acest lucru se datoreaz! unei alte set!ri,
USERGROUPS_ENAB = yes, prezente tot n fi!ierul /etc/login.defs care permite
variabilei umask s! aib! valoarea 002 pentru utilizatorii obi!nui"i dac# identificatorul de
utilizator este acela!i cu identificatorul de grup, iar numele de utilizator este acela!i cu
numele grupului principal (acest lucru este implicit).

Permisiuni avansate

Dac! se dore"te ca utilizatorii s! nu poat! "terge fi"iere care nu le apar!in n calitate
de posesor se poate seta bitul sticky pe acel director. Bitul sticky este afi!at n aceea!i loca"ie

cu permisiunea de execu!ie pentru to!i ceilal!i din sistem "i este reprezentat de litera t
(semnificnd faptul c! "i x este prezent acolo) sau cu T (cnd x nu este prezent).

user@host:~$ chmod 1775 /lab2/
user@host:~$ ls ld /lab2
drwxrwxr-t 2 root root 4096 Feb 7 17:38 /project

Bitul sticky este configurat implicit pe directorul /tmp.

user@host:~$ ls ld /tmp
drwxrwxrwt 6 root root 4096 2009-06-04 19:02 /tmp

Dac! dorim s! ne asigur!m c! toate fi"ierele care vor fi create ntr-un director apar!in
grupului setat pentru acel director folosim bitul de setgid. Bitul setgid este afi!at n acela!i loc
cu bitul de execu!ie de la permisiunile de grup "i este reprezentat de un s (cnd x este
prezent) sau S (cnd x nu este prezent). Dup! cum arat! exemplul de mai jos, chiar dac!
utilizatorul student nu apar!ine grupului proiect, fi"ierele create de student n /lab2 vor
apar!ine grupului proiect din moment ce este setat bitul setgid.

user@host:~$ sudo groupadd lab2
user@host:~$ chown student:proiect /lab2
user@host:~$ chmod 2775 /lab2/
user@host:~$ touch /lab2/fisier.txt
user@host:~$ ls ld /lab2/
drwxrwsr-x 2 student proiect 4096 Feb 7 17:45 /lab2/

user@host:~$ ls l /lab2/
total 4
-rw-r--r-- 1 student proiect 0 Feb 7 17:45 fisier.txt

Aplicat la un fi!ier executabil, bitul setgid va permite execu!ia acestuia cu
permisiunile grupului configurat pentru acel fi!ier n loc de permisiunile grupului care l
lanseaz! n execu"ie.
n schimb, dac! dorim s! execut!m un executabil cu permisiunile proprietarului s!u,
nu cu cele ale utilizatorului care l lanseaz! n execu"ie, set!m bitul setuid. Acest lucru
nseamn! c! dac! un utilizator execut! un program care apar"ine utilizatorului root, !i bitul
setuid este setat pentru acel program, atunci programul ruleaz! ca root. Acest lucru poate fi
periculos, dar cteodat! este util chiar din punctul de vedere al securit!"ii. De exemplu,
parolele sunt stocate n fi!ierul /etc/shadow, care are numai drepturi de citire din partea root-
ului.

user@host:~$ ls l /etc/shadow
-r-------- 1 root root 1260 Jan 21 07:49 /etc/shadow

Modificarea propriei parole de c!tre un utilizator obi"nuit nseamn! actualizarea acestui fi"ier.
Acest lucru este posibil pentru c! binarul /usr/bin/passwd va fi executat cu drepturi de root, nu
cu drepturile utilizatorului care l lanseaz! n execu"ie; altfel spus, are setat bitul setuid.
1.1.6. Instalarea pachetelor n Ubuntu
n Linux, programele pot fi instalate direct din surse (ceea ce presupune compilarea
local! a acestora) sau prin intermediul unor pachete. Pachetele con"in, de obicei, programe
sub form! binar!, astfel nct instalarea se face rapid "i nu necesit! compilare. Pachetele mai
complexe utilizeaz! conceptul de dependin"e. Dependin"ele sunt pachete suplimentare

necesare func!ion"rii corecte a pachetului principal. De exemplu, pachetul gcc, care instaleaz!
n sistem compilatorul de C, depinde de pachetul cpp care con!ine preprocesorul, de pachetul
binutils, care con!ine asamblorul "i editorul de leg#turi, de pachetul libc6-dev, care con!ine
libr!riile C standard, etc.. Pentru a putea compila un program, gcc are nevoie de toate
dependin!ele. De aceea, n afar" de fi#ierele asociate programului, un pachet con!ine #i un set
de metainforma!ii, precum versiunea, descrierea, "i dependin!ele sale. Acestea sunt folosite de
c!tre sistemul de gestiune a pachetelor. Sistemul de gestiune a pachetelor pune la dispozi!ie
toate uneltele necesare instal!rii (inclusiv instalarea automat! a dependin"elor), dezinstal!rii
sau actualiz!rii pachelor de care are nevoie cineva la un moment dat.
Pachetele specifice sistemului Ubuntu au extensia .deb !i de obicei se g"sesc n
arhive accesibile prin Internet.

Managerul de pachete

Managerul de pachete n Ubuntu este dpkg. Poate instala, dezinstala !i crea pachete,
dar, spre deosebire de alte managere de pachete, nu le poate desc!rca de pe Internet !i instala
automat !i nici nu rezolv" dependin#ele acestora. dpkg lucreaz! numai cu pachete desc!rcate
de utilizator pe sistemul local sau cu pachete deja instalate. Cteva func!ionalit"!i:
afi!area tuturor pachetelor instalate n sistem:

user@host:~$ dpkg -l

n func!ie de num"rul de pachete instalate n sistem, comanda dinainte poate genera o
cantitate mare de informa!ii. Putem verifica dac" un anumit pachet este instalat prin
conectarea ie!irii standard la grep cu operatorul |:

user@host:~$ dpkg -l | grep gnome-terminal

Pachetul gnome-terminal poate fi nlocuit cu orice nume de pachet, parte a unui nume de
pachet sau alte expresii regulate.
listarea fi!ierelor care apar"in unui pachet instalat pe sistem:

user@host:~$ dpkg -L bash

afi!area pachetului care con"ine un anumit fi!ier. n acest caz !tim fi!ierul, dar nu !tim
din care pachet provine.

user@host:~$ dpkg -S /etc/host.conf

Rezultatul arat! c! fi"iserul apar#ine pachetului base-files. Totu!i, multe fi!iere generate
automat n timpul procesului de instalare al pachetelor, chiar dac! se g!sesc pe sistemul de
fi!iere, nu pot fi detectate de dpkg -S.
Instalarea unui pachet .deb, desc!rcat local de administrator:

user@host:~$ sudo dpkg -i zip_2.32-1_i386.deb

dezinstalarea unui pachet:

user@host:~$ sudo dpkg -r zip

Dezinstalarea unui pachet cu dpkg nu este recomandat! "i trebuie evitat!. dpkg nu
rezolv! dependin"e #i poate l!sa sistemul ntr-o stare inconsistent!. Exemplul dezinstaleaz!
pachetul zip, dar orice alt pachet care depinde de el va r!mne instalat "i poate s! nu mai
func!ioneze corect. Cel mai bine este s" se foloseasc" un manager de pachete.


Sistemul de administrare al pachetelor

Sistemul de gestionare al pachetelor, APT (Advanced Package Tool), este un front-
end peste dpkg care permite interogarea arhivelor de pachete, verificarea dependin!elor,
desc!rcarea automat! a pachetelor, instalarea unor pachete noi, dezinstalarea pachetelor,
actualizarea pachetelor existente, actualizarea listei de indexuri !i chiar actualizarea ntregului
sistem. Comanda apt-get este un utilitar n linie de comand! pentru sistemul de gestionare
al pachetelor. apt-get dispune de pagini de manual excelente, n care sunt descrise toate
func!ionalit!"ile amintite mai sus.
n general, la prima utilizare a apt-get trebuie s! ob"ine"i o list! cu indexurile
pachetelor disponibile. Lista de indexuri este o baz! de date cu pachetele disponibile n
arhivele definite n fi!ierul /etc/apt/sources.list. Pentru actualizarea listei locale de indexuri
(semnalizeaz! modific!ri ap!rute recent n arhive), se d! comanda :

user@host:~$ sudo apt-get update

Dup! aceasta, pute"i actualiza sistemul:

user@host:~$ sudo apt-get upgrade

Instalarea unor pachete noi se face cu urm!toarea comand!:

user@host:~$ sudo apt-get install mc

Dezinstalarea pachetelor este un proces la fel de simplu. Pentru a renu!a la pachetul mc,
instalat n exemplul anterior, scriem:

user@host:~$ sudo apt-get remove mc
1.1.7. Editoare de text
Editoarele de text sunt utilitare esen!iale pentru to!i cei care lucreaz" cu sisteme de
operare tip Unix, fie ei ingineri sau programatori de sistem, ori dezvoltatori de aplica!ii. Este
foarte important s! st!pni"i cel pu"in un editor care lucreaz! n mod text. Deprinderea unui
astfel de editor de text este foarte important! n contextul n care pe viitor s-ar putea s! fi"i
nevoi!i s" scrie!i scripturi, s" dezvolta!i programe de sistem sau site-uri web. St!pnirea unui
editor care poate fi folosit n lucrul de la distan!", pe alte sisteme, f"r" a fi nevoie de mediu
grafic instalat pe server sau pe sta!ia de lucru, mbun"t"!e#te enorm productivitatea. n ce ne
prive!te, pn" la nceputul urm"torului capitol trebuie s" v" obi!nui#i s" lucra#i cu unul din
editoarele prezentate n sec!iunile urm"toare, deoarece va fi necesar s" edita!i fi#ierele surs"
ale programelor n limbaj de asamblare.
Vim
vi este un editor de text care se g!se"te n majoritatea sistemelor Unix. Prima
versiune a fost dezvoltat! la Universitatea Berkeley n anul 1980. Vim este acronimul lui Vi
Improved, o variant! extins! a lui vi, creat! de Bram Moolenaar n 1991. vim include toate
caracteristicile vi, plus multe altele noi, destinate s! ajute utilizatorul n procesul de editare al
codului surs!. Pachetul care con"ine editorul se nume#te chiar vim.
n vim, comenzile sunt introduse numai prin intermediul tastaturii, ceea ce nseamn!
c! putem "ine minile pe tastatur! #i ochii pe ecran, n loc s! mut!m repetat mna pe mouse.
Cei care nu consider! introducerea comenzilor de la tastatur! un avantaj, pot instala gvim, o
versiune grafic! a lui vim. Gvim asigur! integrarea cu mouse-ul, prezint! meniuri "i bar! de

derulare.
vim este o unealt! puternic! "i dispune de un manual cuprinz!tor. Manualul poate fi
activat din interiorul editorului prin comanda :help (man nu con!ine foarte multe
informa!ii). n continuare vom prezenta numai comenzile principale, care v" permit s"
ncepe!i s" lucra!i cu vim.
Deschiderea unui fi!ier se realizeaz" prin comanda vim fisier.txt. Dac!
fi!ierul nu exista nc", va fi creat. Aten#ie, creat nseamn" c" a fost selectat" o zon" temporar"
de memorie (buffer) care va re!ine textul introdus de noi pn" la salvarea lui pe disc. Dac"
nchidem fi!ierul f"r" s" salv"m datele pe disc, am pierdut tot ce am introdus n fi!ier, inclusiv
denumirea. Numai salvarea datelor duce la crearea fisier.txt pe disc. Din perspectiva interfe!ei,
bufferul este zona n care apare textul n curs de editare. Ecranul vim con!ine un buffer "i o
linie de comand! aflat! n partea de jos a acestuia. n linia de comand! sunt afi"ate informa#ii
de stare !i pot fi introduse comenzi.
vim opereaz! n mai multe moduri de lucru, ceea ce nseamn! c! editorul se
comport! diferit, n func"ie de modul de lucru n care se afl!. n aceast! prezentare vom lucra
n dou! moduri: comand! "i editare. n mod comand!, tot ce tast!m este interpretat de editor
ca o comand!. Exemple de astfel de comenzi sunt: salveaz! fi"ierul, p!r!se"te editorul, mut!
cursorul, !terge, caut!, nlocuie"te, selecteaz! por#iuni de text, trece editorul n mod inserare.
Modul editare ne permite s! introducem text.
Acest! dualitate de operare nseamn! c! orice tast! poate reprezenta o comand! sau
un caracter. De exemplu, tasta i (insert), introdus! n mod comand!, comut! editorul n
modul editare, n modul editare este pur !i simplu caracterul i.
Modul editare este indicat prin cuvntul INSERT afi!at pe linia de jos a
terminalului. n zona bufferului, liniile libere sunt indicate prin caracterul ~ (tilda). n acest
moment putem introduce text.
Salvarea fi!ierului nseamn" o comand", a!adar, comut"m n mod comand" ap"snd
tasta ESC. Putem ie!i din editor cu urm"toarele comenzi:

ZZ salveaz! bufferul pe disc "i ie"i
:x - salveaz! bufferul pe disc !i ie!i (la fel ca ZZ)
:wq salveaz! bufferul pe disc "i ie"i (la fel ca ZZ)
:q ie!i din editor (func"ioneaz# numai dac# modific#rile sunt salvate)
:q! - ie!i din editor f"r" s" salvezi bufferul pe disc

Cu urm!toarele comenzi putem scrie bufferul pe disc.

:w - salveaz! bufferul n fi"ierul curent (fisier.txt)
:w output.txt - salveaz! bufferul n fi"ierul output.txt; nu rescrie fi!ierul n caz c"
acesta exist!
:w! output.txt - salveaz! bufferul n fi"ierul output.txt; rescrie fi!ierul dac" exist".

Prima comand! salveaz! modific!rile n fi"ierul dat ca argument. A doua "i a treia comand!
ne permite s! salv!m bufferul ntr-un fi!ier nou. Pentru a afla informa"ii suplimentare despre
comanda :w, putem folosi :help :w. Implicit, ecranul va fi mp!r"it n jum!tate, cu partea
superioar! afi"nd informa#ii de ajutor. nchiderea noii ferestre de face cu :q.
Navigarea prin text se face de regul! cu tastele s!ge"i. Dar pentru c! este incomod s!
mut!m mna frecvent n col"ul din dreapta jos al tastaturii se pot folosi tastele h, l, k, j (un
caracter la stnga, dreapta, sus, jos). n plus, Space deplaseaz! cursorul cu un caracter la
dreapta !i Return pozi!ioneaz" cursorul la nceputul liniei urm"toare. Alte comenzi care pot
deplasa cursorul sunt:

G - pozi!ioneaz" cursorul la ultima linie a documentului
gg - pozi!ionaz" cursorul la prima linie a documentului

^ - pozi!ioneaz" cursorul la nceputul liniei curente
$ - pozi!ioneaz" cursorul la sfr#itul liniei curente
w - pozi!ioneaz" cursorul un cuvnt nainte
b - pozi!ioneaz" cursorul un cuvnt napoi
fx - s!ri la urm!toarea apari"ie a caracterului x pe linia curent!
Fx - s!ri la precedenta apari"ie a caracterului x pe linia curent!
% - s!ri la paranteza care corespunde celei de sub cursor.

De asemenea, n mod comand! putem modifica textul:

x - !terge caracterul sub care este pozi"ionat cursorul
X - !terge caracterul dinaintea cursorului
dG - !terge de la linia curent" pn" la sfr!itul fi!ierului
dfx - !terge tot textul ncepnd cu pozi!ia curent" pn" la urm"toarea apari!ei a
caracterului x
dd - !terge linia curent"
dw - !terge urm"torul cuvnt
D - !terge restul liniei curente
u - anuleaz! ultima comand!
U - anuleaz! toate modific!rile f!cute pe ultima linie editat!
r - nlocuie!te caracterul curent cu cel introdus

Cnd !tergi ceva cu x, d (delete), sau alt! comand!, textul este salvat ntr-o memorie
temporar!. l po"i realipi cu p (paste, de!i termenul tehnic n vi este put). Comanda p are
semnifica!ii diferite, n func!ie de elementele de text "terse. Folosit# dup# dw (delete word):

p - plaseaz! textul dup! cursor
P - plaseaz! textul nainte de cursor

Folosit dup! dd:

p - plaseaz! textul sub linia curent!
P - plaseaz! textul deasupra liniei curente

Modificarea unui cuvnt sau a unei p!r"i de cuvnt (de la cursor pn! la sfr#itul cuvntului)
se face prin pozi!ionarea cursorului n locul de nceput "i tastarea comenzii cw (change word).
Editorul trece automat n mod editare. Comanda cw este o comand! compus! din alte dou!
comenzi; n acest caz, din al!turarea comenzilor c (change) !i w (word). Alte exemple:

c$ - schimb! ncepnd cu pozi"ia curent! pn! la sfr#itul liniei
c^ - schimb! ncepnd cu pozi"ia curent! pn! la nceputul liniei
4cw - schimb! urm!toarele 4 cuvinte
5dd - !terge urm"toarele 5 linii
3x - !terge urm"toarele 3 caractere
3X - !terge 3 caractere din fa"a cursorului
2G - pozi!ioneaz" cursorul la a doua linie a documentului

Copierea f!r! "tergere se face cu y (yank). Nu afecteaz! textul, dar poate fi folosit n
conjunc!ie cu p. n acest caz, p se comport! la fel ca n cazul lui d.

yw - copiaz! urm!torul cuvnt
yy - copiaz! linia curent!

3yy - copiaz! urm!toarele trei linii

Comanda de nlocuire r (replace) plaseaz! vim n mod editare. Caracterul tastat va nlocui
caracterul curent, dup! care editorul revine automat n mod comand!. Pe lng! comanda r,
vim trece n mod editare !i cu i (insert), a (append) sau o (open). n aceste cazuri, textul va
fi introdus ncepnd cu prima pozi!ie nainte de cursor, prima pozi!ie dup" cursor, sau la
nceputul unei linii noi, creat! imediat sub linia curent!.
Pentru a c!uta nainte ntr-un text, se folose!te comanda /. De exemplu, /text caut!
!irul text de la pozi!ia curent" a cursorului c"tre sfr#itul fi#ierului. C"utarea napoi se face
cu ? n loc de / . De exemplu, ?text caut! de la pozi"ia curent! a cursorului c!tre nceputul
fi!ierului.
Ultima comand! discutat! este cea de substitu"ie, s (substitute). Permite nlocuirea
unor p!r"i de text.

:[linii] s/text_vechi/text_nou/op#iune

Vechiul text este nlocuit cu cel nou n limita liniilor specificate de domeniul op!ional [linii].
Domeniul este specificat n format de la, pn! la. Dac! nu este dat un domeniu, schimb!rile
apar numai pe linia curent!, considerat! implicit. Cmpul op#iune modific! comanda. De
obicei se folose!te caracterul g, care nseamn! substitu"ie global!. Comanda

:s/test/text

nlocuie!te cu text prima apari"ie a cuvntului test n linia curent#. Dac# dore!ti s# nlocuie!ti
toate apari!iile din linia curent", folose!ti op"iunea g

:s/test/text/g
Comanda

:1,10s/test/text

nlocuie!te prima apari"ie a lui test n fiecare din cele 10 linii specificate. Ca s! schimbi toate
apari!iile lui text n aceste linii, adaugi op!iunea g la sfr!it.
Am acoperit numai comenzile de baz!. vim are cteva comenzi foarte puternice !i
sofisticate.
4
O modalitate de studiu elegant! const! n parcurgerea tutorialului vimtutor.
Este un tutorial de treizeci de minute care v! nva"! n opt exerci"ii u#oare cele mai ntlnite
comenzi vim. Nu pute!i nv"!a totul despre vim ntr-o jum!tate de or!, dar ve"i cunoa#te
destule comenzi de uz general. Tutorialul poate fi pornit prin introducerea comenzii
vimtutor. Ea va face o copie a fi!ierului tutore, a!a c" l pute#i edita f"r" a v" fi team" c"
distruge!i originalul.
GNU Emacs
GNU Emacs a fost creat de Richard Stallman, prima versiune func!ional" ap"rnd n
1985. Emacs nu este doar un editor de text. Din Emacs se pot compila, executa !i depana
programe, se poate citi e-mailul, !tiri, se poate juca tetris. Extensiile Emacs sunt scrise n
limbajul Lisp.
Pachetul emacs23-nox con!ine varianta text, emacs23 varianta grafic!. Lansarea
n execu!ie se face prin comanda emacs fisier.txt, unde fisier.txt este numele fi!ierului
pe care dorim s! l edit!m. Dac! nu exist!, el va fi creat.
Ecranul Emacs este alc!tuit din mai multe ferestre de lucru numite buffere. Bufferul
n care lucreaz! utilizatorul este bufferul curent. Editorul poate lucra cu mai multe fi!iere

4
ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf

simultan, fiecare aflat ntr-un buffer diferit. Bufferul este afi!at ntr-o fereastr!, fiecare
fereastr! con"ine n partea inferioar! o linie de stare (mode line) care indic! informa"ii utile
despre buffer: dac! a fost modificat, linia "i coloana curent!, etc.. Ecranul con"ine #i un a#a zis
minibuffer, practic o zon! n care editorul raporteaz! rezultatele comenzilor, combina"iile de
taste ap!sate par"ial, etc.. Marginea superioar! a ecranului g!zduie#te meniul.
Emacs folose!te dou" taste speciale. Acestea se folosesc numai n combina!ie cu alte
taste: Control (Ctrl) !i Meta (Alt). n documenta!ii ntlnim nota!iile C pentru
Control !i M pentru Meta. Codul generat de tasta Meta mpreun! cu alt! tast! se poate
ob!ine prin ap"sarea tastei ESC, apoi tasta respectiv!. Din acest motiv, tasta ESC se mai
nume!te !i metafy.
Orice comand! poate fi apelat! printr-un nume simbolic. Comenzile Emacs sunt
apelate cu combina!iile de taste C-<char> sau M-<char>, care nseamn! s! "ii ap!sat
Ctrl sau Alt n timp ce tastezi caracterul <char>. De exemplu, C-f nseamn!: "ine ap!sat
Ctrl !i tasteaz" f.
O combina!ie de taste implicit", ce poate genera probleme, este C-h, care activeaz!
paginle de ajutor. Din nefericire, pe majoritatea sistemelor, C-h este !i codul pentru comanda
de !tergere caracter (Backspace). Comportamentul ini"ial se poate modifica prin crearea n
directorul personal a unui fi!ier numit .emacs (un fi!ier citit ntotdeauna la pornire de Emacs)
care s! con"in! urm!toarea linie:

(global-set-key "\C-h"'backward-delete-char-untabify);

n acest caz, manualul poate fi acesat cu M-x help, sau pentru un tutorial comprehensiv M-
x help-with-tutorial.
Unele comenzi nu dispun de combina!ie de taste. Pentru apelul unei asemenea
comenzi se tasteaz! M-x nume_comand!. Pentru completarea numelui se poate utiliza
tasta Tab. n acest caz, numele complet al comenzii va fi afi!at n minibuffer.
O comand! des folosit! este C-x, care este o comand! prefix, adic! este ntotdeauna
urmat! de alt! combina"ie de taste. Majoritatea comenzilor care ncep cu C- se refer! la
unit!"i de text (litere, rnduri). Toate comenzile care ncep cu M- se refer! la unit!"i de limb!
(cuvinte, fraze).
Comenzile de baz! pentru navigarea n buffer: C-f, C-b, C-p, C-n (un caracter la
dreapta, stnga, sus, jos). Cteva posibilit!"i de navigare n incremente mai mari:

C-a - salt la nceputul liniei
C-e - salt la sfr!itul liniei
M-f - un cuvnt nainte (dreapta)
M-b - un cuvnt napoi (stnga)
M-a - salt la nceputul frazei
M-e - salt la sfr!itul frazei
M-< - salt la nceputul bufferului
M-> - salt la sfr!itul bufferului
M-v - salt la fereastra precedent!
C-v - salt la fereastra urm!toare

Cea mai simpl! modalitate de "tergere "i restaurare este s! mergi la nceputul textului !i s"
ape!i combina"ia C-k. Apoi te deplasezi la destina!ie "i ape"i C-y. Dac! face"i o gre#eal!, C-
x u anuleaz! efectul ultimei comenzi (Emacs accept! mai multe niveluri de anulare). O alt!
modalitate de a !terge o parte de text este s" mergi la nceputul textului !i s" ape!i C-Space
(acest lucru seteaz! un punct de referin"! numit! mark). Apoi deplasezi cursorul la sfr!itul
textului care trebuie !ters !i ape!i C-w. Textul este realipit n locul potrivit cu C-y.
C-w !terge con"inutul unei regiuni (cut). Regiunea este zona delimitat! de pozi"ia
curent! a cursorului "i punctul de referin#!. Multe comenzi opereaz! numai asupra textului

cuprins ntr-o regiune. De exemplu, M-w copiaz! regiunea f!r! s! o "tearg! (copy). Emacs
ofer! cteva comenzi care pot stabili regiunea prin mutarea cursorului !i a punctului de
referin!" n mod corespunz"tor.

C-Space - seteaz! punctul de referin"!
C-x h - selecteaz! tot textul din buffer (select all)
M-h - selecteaz! paragraful curent

Pentru a copia !i restaura un text, !terge"i textul "int# cum am precizat mai sus, !i
utiliza!i C-y de dou! ori (o dat! pentru a restaura textul original, o dat! pentru a crea copia).

C-d - !terge caracterul curent
C-k - !terge pn" la sfr!itul liniei curente
C-y - restaureaz! ultimul text "ters
M-y - restaureaz! ultimul text din bufferul de "tergere
M-d - !terge cuvntul urm"tor
M-k - !terge pn" la sfr!itul frazei
C-x u - anuleaz! efectul ultimei comenzi

C!utarea incremental! nainte "i napoi, utilizeaz! C-s, respectiv C-r. Ap!sarea unei noi
combina!ii C-s sau C-r va repeta opera!iunea. La g"sirea textului dorit, pentru a anula
opera!ia "i a reveni la pozi!ia de la care a nceput c#utarea, ap#sa!i Enter sau C-g. n
general, C-g va anula orice comand! Emacs aflat! n lucru.
Ca s! nlocuie"ti un text, se folose"te M-x replace-string (este indicat s!
modifici .emacs astfel nct comanda s! r!spund! la combina"ia C-x r). M-% interogheaz!
utilizatorul dac! dore!te s" fac" modificarea pentru fiecare text care se potrive!te c"ut"rii.
Pentru a deschide dou! ferestre, ape"i C-x 2, pentru mp!r"irea ecranului pe orizontal!, sau
C-x 3, pentru aranjare vertical!. C-x 1 readuce utilizatorul n fereastra 1. C-x o mut!
cursorul ntre ferestre. C-x k !terge con"inutul bufferului curent !i nchide fereastra.
Alte comenzi utile:

C-x C-f - caut! un fi"ier
C-x f - caut! un cuvnt
C-x s - salveaz! con"inutul bufferului
C-x C-c - iese din Emacs
C-x C-b - listeaz! toate bufferele
C-x b - selecteaz! un buffer
C-x C-w - salveaz! bufferul curent cu alt nume
C-x d - apeleaz! managerul de fi"iere
C-x k - nchide fereastra
M-/ - completeaz! automat cuvntul
M-c - modific! cuvntul n caractere mari
M-l - modific! cuvntul n caractere mici

O caracteristic! foarte important! a editorului Emacs const! n posibilitatea de integrare cu
alte unelte utile. Nu numai c! Emacs le poate rula din cadrul s!u, dar te ajut! s! le "i folose"ti
mai eficient.
M-x shell porne!te interpretorul de comenzi n bufferul numit *shell* sau comut"
la acest buffer dac! deja exist!. Cu ajutorul C-u M-x shell putem utiliza un buffer cu
nume diferit.
M-x grep invoc! grep "i afi"eaz! rezultatele ntr-un buffer nou.
M-x ediff compar! dou! fi"iere "i eviden#iaz! diferen#ele.

M-x dired deschide managerul de fi!iere.
M-x man afi!eaz" paginile manual pentru programul dorit.
M-x gdb execut! depanatorul GNU GDB ntr-un buffer nou. n acel buffer putem
folosi linia de comanda (gdb) n mod obi!nuit. Mai mult, Emacs ne permite s" set"m puncte
de ntrerupere !i indic" linia activ" din procesul de execu#ie direct n bufferul surs". De
asemenea, poate afi!a punctele de ntrerupere, stiva !i variabilele locale simultan sau fiecare
n propria fereastr!.

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