Cuprins
1 Shell-ul bash 1
Lucrul cu sistemul de fişiere 2
2 Căi de acces 2
3 Afişarea şi schimbarea directorului curent 3
4 Crearea şi ştergerea directoarelor. Crearea fişierelor 3
4.1 mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.2 rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.3 touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.4 Crearea fişierelor text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.5 cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5 Comanda ls 5
6 Copierea şi mutarea fişierelor şi directoarelor 5
6.1 cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
6.2 mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.3 Legături simbolice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.4 Comanda find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7 Comanda chmod 7
Câteva comenzi de procesare a textelor 8
8 wc 8
9 head 9
10 tail 9
11 cut 9
12 sort 10
13 tr 10
14 sed 11
15 grep 11
1 Shell-ul bash
Un shell este o aplicaţie interactivă ce facilitează interacţiunea utilizatorului cu sistemul de
operare. Există două tipuri de shell-uri: GUI (graphical user interface) şi CLI (command line
interface).
1
Un shell CLI primeşte comenzi de la intrarea standard, ı̂n terminal, le interpretează şi apoi
afişează rezultatul la ieşirea standard (implicit).
În Linux, shell-ul implicit este bash (Bourne Again Shell). El dispune de un manual ce poate
fi accesat la
[Link]
Shell-ul primeste o linie de caractere de la utilizator şi:
interpreteaza comanda identificand numele si argumentele.
cauta numele in directoarele aferente variabilei de mediu $PATH (ex. directorul /bin).
daca nu gaseste comanda se afiseaza un mesaj de eroare.
daca este gasit executabilul corespunzator, shell-ul creeaza un proces cu imaginea acel
executabil.
Daca este dat explicit directorul sursa al comenzii, nu se mai face cautarea in $PATH.
cat timp ruleaza (un proces creat de shell pentru) o comanda, shell-ull este blocat, cu
exceptia cazului cand comanda este pornita direct in background (&).
Comanda which <comanda> afiseaza locaţia utilitarului corespunzator comenzii date.
Observaţia 1. În bash spaţiul este delimitator pentru argumente. Pentru folosirea spaţiului
ı̂n numele unui fişier, de exemplu, acesta trebuie escapat prin apostrofuri sau ghilimele.
2 Căi de acces
Sistemul de operare Linux organizează fişierele şi directoarele sunt organizate ı̂ntr-o structură
arborescentă, numită sistemul de fişiere. Acest arbore orientat are ca rădăcină un director
special ”/” (numit root) şi două fişiere (sau directoare) sunt legate printr-o muchie dacă unul
este conţinut ı̂n celălalt.
Orice fişier poate fi localizat ı̂n arbore prin drumul de la rădăcină calea absolută de acces
a unui fişier reprezintă drumul de la rădăcina ”/” pâna la el. Acest drum se numeşte calea
absolută a fişierelor.
De exemplu, directorul Desktop al utilizatorului u1 are calea absolută de acces:
/home/u1/Desktop
(Desktop este subdirector al directorului u1, care este subdirector al lui home, care este
subdirector al lui root), iar terminalul BASH este localizat prin calea
/bin/bash
Căile de acces pot deveni destul de lungi şi astfel sunt, câteodată anevoios de folosit. Putem
simplifica situaţia folosind căi relative. De exemplu, dacă directorul curent este
/home/u1/Desktop
şi dir este un subdirector al său, pentru al accesa este suficient să folosim doar numele său dir
(terminalul bash va completa automat cu restul căii de acces până la el ). Dacă f1 este un fişier
al lui dir, el poate fi accesat (din Desktop), folosind calea de acces
dir1/f1
2
Observaţia 2. Directorul ∼ este directorul home al utilizatorului curent. De obicei, are
forma:
/home/util curent
Directorul curent este reprezentat şi prin ”.”
Directorul părinte al directorului curent este reprezentat prin ”..”
Putem să ı̂nlănţuim mai multe simboluri ”..”. De exemplu,
../..
indică părintele părintelui directorului curent.
Observaţia 3. Pentru toate comenzile următoare, prin nume-dir vom ı̂nţelege calea relativă
(la directorul curent al shell-ului) sau absolută de acces către directorul nume-dir.
3 Afişarea şi schimbarea directorului curent
Pentru a afişa directorul curent se poate folosi comanda
user@station :∼$ pwd
Calea de acces este stocată ı̂n variabila de mediu PWD.
Pentru a schimba directorul curent se foloseşte comanda
user@station :∼$ cd nume - dir
4 Crearea şi ştergerea directoarelor. Crearea fişierelor
4.1 mkdir
Pentru a crea un director folosim comanda
user@station :∼$ mkdir nume - dir
Important. Implicit, mkdir va crea directorul doar dacă locaţia ı̂n care se creează există.
Dacă vrem să creăm lanţuri de directoare trebuie adăugată opţiunea -p.
De exemplu, dacă directorul curent este /home/username/Desktop şi vrem să creăm un
subdirector dir2 al directorului dir pe Desktop folosim comanda
user@station :∼$ mkdir dir / dir2
dacă directorul dir există deja şi
user@station :∼$ mkdir -p dir / dir2
dacă dir nu există (sau nu suntem siguri de existenţa sa).
Cu aceeaşi comandă mkdir pot fi create mai multe directoare, delimitându-le prin spaţii.
De exemplu, comanda
user@station :∼$ mkdir -p dir1 dir2 / dir3
efectuează următoarele operaţii:
creează directorul dir1 ı̂n directorul curent.
creează directorul dir3 ı̂n directorul ./dir2. Dacă dir2 nu există apriori, el este creat.
3
4.2 rm
Pentru a şterge fişiere şi/sau directoare folosim
user@station :∼$ rm nume
Comanda acceptă mai multe argumente, ce trebuie separate prin spaţii.
Important. Implicit, rm nu va şterge directoarele nevide şi nici nu va cere confirmare de
ştergere. Pentru astfel de operaţii se pot folosi opţiunile următoare:
-r va şterge (recursiv) conţinutul unui director (inclusiv subdirectoarele şi conţinutul lor).
-i va efectua ştergerea interactiv (va necesita confirmare pentru fiecare fişier/director).
-f va şterge fişiere nu au permisiunea de scriere activată.0
Exemplul 4. Dacă file1 este un fişier şi dir1 este un director, ambele ı̂n directorul curent,
putem scrie următoarele comenzi:
1 user@station :∼$ rm file1
2 user@station :∼$ rm dir1
3 user@station :∼$ rm -r dir1
- Linia 1 va şterge fişierul file1.
- Linia 2 va genera un mesaj de eraore
rm : cannot remove ’ dir1 ’: Is a directory
- Linia 3 va şterge recursiv (depth-first) tot conţinutul directorului dir1.
4.3 touch
Pentru crearea unui fişier nul se poate folosi comanda
user@station :∼$ touch nume - fisier
Aceasta updateaza data ultimei accesari daca fisierul exista. Dacă fişierul nu există, co-
mandatouch creează un fişier nul.
4.4 Crearea fişierelor text
Cea mai simplă metodă pentru crearea unui fişier text este dată de editoarele text. Interfeţele
grafice GNOME şi KDE folosesc utilitarele gedit, respectiv kate.
Există ı̂nsă şi editoare direct din linia de comandă: vim, nano, sau pico. Acestea sunt
recomandate ı̂n lipsa unei interfeţe grafice.
4.5 cat
Comanda cat (concatenate) este un utilitar simplu de vizualizare a unui fişier text.
Mai precis, considerăm secvenţa:
1 user@station :∼$ cat file1
2 user@station :∼$ cat > file2
4
Linia 1 afişează conţinutul fişierului text file1, iar linia 2 va crea fişierul text file2 ce va
conţine un text introdus de la consolă. Dacă fişierul există, conţinutul vechi este suprascris.
Pentru ieşirea din modul consolă se poate folosi CTRL+D (sau CTRL+Z).
De exemplu,
user@station :∼$ cat > file1
ana are mere
CTRL + Z
creează fişierul file1 (ı̂n directorul curent) şi va scrie ı̂n el textul ”ana are mere”. Dacă file1
era creat dinainte, conţinutul vechi este suprascris.
Comanda cat dispune de următoarele opţiuni utile:
-n numerotează liniile fişierului.
-s suprimă liniile goale duplicate.
-E adaugă la finalul fiecărei linii caracterul ’$’.
5 Comanda ls
Comanda
user@station :∼$ ls director
afişează conţinutul directorului precizat.
Fără argument, ls afişează conţinutul directorului curent. Implicit, este afişată doar lista
fişierelor şi directoarelor din directorul precizat (fără a parcurge subdirectoarele).
Următoarele opţiuni pot fi utile:
-l afişează conţinutul directorului ı̂n format lung. Printre atributele afişate sunt: tipul
fişierelor (regular, directory, link), permisiuni de acces, dimensiune, date ultimei accesări.
-R afişează (recursiv) şi conţinutul subdirectoarelor conţinute.
-r inversează ordinea de afişare.
-S afişează conţinutul ı̂n ordinea dimensiuni (descrescătoare).
-t afişează conţinutul ı̂n ordinea datei.
-h afişează dimensiunile ı̂n format human readable, folosind prescurtările K, M, G etc.)
De exemplu,
user@station :∼$ ls - lhSr / home / u1 / Desktop
afişează conţinutul directorului Desktop ı̂n format lung, human readable, ı̂n ordinea crescătoare
a dimensiunilor.
6 Copierea şi mutarea fişierelor şi directoarelor
6.1 cp
Comanda
user@station :∼$ cp fisiere_directoare_sursa director_destinatie
5
copie fişierele (sau directoarele) sursă ı̂n directorul destinaţie.
Câteva opţiuni utile sunt:
-r copie (recursiv) si continutul subdirectoarelor din directorul (directoarele) sursă (este
necesară pentru copierea directoarelor).
-i realizează copierea interactivă (pentru fiecare fişier este cerută confirmare). Implicit,
cp va realiza copierea fără niciun mesaj pentru utilizator (ı̂n particular, va suprascrie fără
confirmare fişierele deja existente).
De exemplu,
cp f1 f2 / home
va copia fişierele f1 şi f2 din directorul curent ı̂n directorul /home, iar
cp -r / home / u1 / Desktop / home / ddd
va copia directorul Desktop ı̂n directorul ddd.
6.2 mv
Comanda
mv fisiere ( directoare ) _sursa director_destinatie
mută fişierele (sau directoarele) sursă ı̂n directorul destinaţie.
Opţiuni utile sunt:
-i cere confirmarea de mutare pentru fiecare fişier.
-v afişează detalii asupra operaţiilor făcute.
De exemplu,
mv f1 / home
mută fişierul f1 din directorul curent ı̂n directorul /home.
Comanda mv poate fi folosită pentru a redenumi un fişier. De exemplu,
mv / home / u1 / Desktop / f1 . txt / home / u1 / Desktop / g
redenumeşte fişierul [Link] cu numele g.
6.3 Legături simbolice
Comanda
ln -s fisier_sursa cale_acces_legatura
creează o legătură simbolică (shortcut) a fişierului (directorului) sursă. Pentru sursă e reco-
mandată folosirea căii absolute de acces.
De exemplu,
ln -s / home / u1 / Desktop / f1 . txt / home / u1
creează o legătură simbolică a fişierului [Link] din directorul Desktop ı̂n directorul /home/u1.
6
6.4 Comanda find
Comanda
find [ director ] [ optiuni ] [ expresie ]
caută ı̂n directorul dat toate fişierele care satisfac anumite criterii. Opţiuni utile sunt:
-name NUME va afişa toate fişierele care au (exact) numele NUME.
-iname NUME va afişa toate fişierele care au (exact) numele NUME, dar case insensi-
tive.
-type tip va afişa toate fişierele de tipul dat. Acesta din urmă poate fi l (link simbolic),
d (director), r (fişier obişnuit).
-size dim va afişa toate fişierele cu dimensiunea dată.
De exemplu, comanda
find - iname ’* jpg ’ - size +1 M
va afişa toate fişierele cu extensia .jpg ce au dimensiunea cel puţin 1MB.
Fişierele găsite de find pot fi procesate ulterior cu alte comenzi. Un astfel de mod de
ı̂nlănţuire este dat de opţiunea -exec.
De exemplu, comanda
find dir - type f - name ’a * ’ - exec rm {}\;
va şterge toate fişierele obişnuite al căror nume ı̂ncep cu ’a’.
7 Comanda chmod
Comanda
chmod permisiuni fisier
este folosită pentru modificarea permisiunilor de acces pentru fişiere.
Pentru fiecare fişier, Linux poate atribui trei permisiuni:
de citire r: fişiere poate fi deschis.
de scriere w: fişierul poate fi modificat.
de execuţie x: fişierul poate fi executat, de exemplu, un executabil sau un script.
Aceste permisiuni sunt atribuite utilizatorului proprietar (owner ), grupului owner-ului (group)
şi celorlalţi utilizatori (others).
Aceste permisiuni pot fi vizualizate folosind comanda ls -l. Caracterele 2-10 din listing
reprezintă permisiunile fişierelor. Primele trei reprezint’ă permisiunile proprietarului: r (read),
w (write), x (execute). Caracterul - indică absenţa permisiunii. Similar, următoarele trei
(caracterele 4-7) reprezină permisiunile grupului proprietarului, iar caracterele 8-10 permisiunile
celorlalţi utilizatori.
De exemplu, permisiunea rw- pentru proprietar arată că fişierul corespunzător poate fi
deschis şi editat dar nu este executabil. Similar, permisiunea r- - indică doar posibilitatea de
vizualizare a fişierului, fără editare.
Există două moduri de a stabili permisiunile: simbolic şi numeric. În modul simbolic,
acestea se stabilesc după formatul:userflags operator permisiuni unde
7
userflags poate fi u (user), g (group), others şi a (all).
operator poate fi + (adăugarea),- (elimanare) sau = (setare).
permisiuni pot fi r, w, x sau - (read, write, execute, not)
De exemplu,chmod u=rw- fisier setează permisiunea de citire şi scriere pentru fisier, iar
chmod a+x fisier va adăuga permisiunea de execuţie pentru toţi utilizatorii şi chmod go-wx fisier
elimină permisiunile de editare şi execuţie pentru toţi utilizatorii, cu excepţia proprietarului.
Modul numeric foloseşte reprezentarea octală a permisiunilor: 4 (read), 2 (write), 1 (exe-
cute), 0 (no permission). Permisiunile multiple se obţin adunănd valorile corespunzătoare.
De exemplu, chmod 644 fisier setează permisiunea de citire şi scriere (4+2) pentru proprietar,
iar pentru toţi ceilalţi utilizatori fişierul este read-only şi chmod 700 fisier setează permisiune
de citire, editare şi execuţie (4+2+1) pentru proprietar, iar toţi ceilalţi utilizatori nu au nicio
permisiune.
O opţiune utilă este -R, folosită pentru a seta recursiv permsiunile conţinutului unui direc-
tor.
Observaţie. Pentru directoare, permisiunile au o semnificaţie puţin diferită:
r - conţinutul directorului poate fi văzut.
w - directorul poate fi modificat (pot fi adăugate sau şterse fişiere).
x - directorul poate fi setat ca director curent (adică se se poate aplica comanda cd).
Câteva comenzi de procesare a textelor
8 wc
Comanda wc afiseaza numarul de linii, cuvinte şi caractere ale unui fişier text dat. Opţiuni
utile pot fi:
-w afişează doar numărul de cuvinte.
-l afişează doar numărul de linii
-c afişează doar numărul de octeţi.
-m afişează doar numărul de caractere.
-L afişează lungimea maximă a liniilor.
De exemplu,
wc -w file . txt
afiseaza numarul de cuvinte din fisierul [Link]. iar
maxlen = $ ( cat file | wc -L )
va atribui variabilei $maxlen lungimea maxima a liniilor fisierului file.
8
9 head
Comanda head afişează primele zece linii ale unui text dat (ca argument sau redirecţionat sau
prin pipe).
Următoarele opţiuni sunt utile:
-n +nr afişează primele nr linii ale unui fişier.
-n -nr afişează toate liniile cu excepţia ultimelor nr linii.
-q suprimă afişarea header-elor cu numele fişierelor (atunci când trunchiem mai multe
fişiere).
10 tail
Comanda tail afişează ultimele zece linii ale unui text dat (ca argument sau redirecţionat sau
prin pipe). Următoarele opţiuni sunt utile: Optiuni:
-n -nr afişează ultimele nr linii.
-n +nr afişează toate liniile ı̂ncepând cu linia nr.
-q suprimă afişarea header-elor cu numele fişierelor (atunci când trunchiem mai multe
fişiere).
11 cut
Comanda cut este un utilitar simplu ce poate tăia coloane delimitate printr-un singur caracter
dintr-un text. Opţiuni utile sunt:
-c nr afişeazâ caracterele de pe poziţia nr de pe fiecare linie.
-f nr afişează coloana nr din text. Delimitatorul de coloană este implicit caracterul TAB.
-d caracter setează delimitatorul de coloană cu valoarea dată. Se foloseşte ı̂n combinaţie
cu opţiunea -f.
-s elimină liniile care nu conţin delimitatorul de coloană.
–complement taie coloanele care nu satisfac criteriul de trunchiere.
De exemplu, in secvenă:
1 cut -c 1 -3 test
2 cut -f 2 ,5 test
3 cat test | cut -d ’␣ ’ -f 2 ,5
4 cut -- complement -d ’␣ ’ -f 2 ,5 test
va efectua următoarele operaţii:
Linia 1 afisează caracterele de pe poziţiile 1-3 de pe fiecare linie din fişierul test.
Linia 2 afişează coloanele 2 şi 5 din fişierul test (coloane delimitate prin TAB).
Linia 3 afişează coloanele 2 şi 5 din fişierul test (coloane delimitate prin spaţiu).
9
Linia 4 va afişa toate coloanele cu excepţia coloanelor 2 şi 5 din fişierul test (coloane
delimitate prin spaţiu).
Atenţie: Delimitatorul de coloană folosit de cut are un singur caracter, iar coloanele pot fi şi
vide. De exemplu, două caractere TAB consecutive vor delimita o coloană vidă.
12 sort
Comanda sort realizează sortarea unui text. Implicit, ea va sorta liniile ı̂n ordine alfabetică.
Opţiuni utile:
-r inversează ordinea de sortare (de exemplu, din alfabetic, ı̂n invers alfabetic).
-k nr efectează sortare (alfabetică) după coloana nr.
-n efectuează sortare numerică. De obicei, se combină cu opţiunea -k.
-t caracter setează delimitatorul de coloană cu valoarea dată (se utilizează ı̂n combinaţie
cu -f ).
De exemplu,
sort - k2 f . txt
va sorta fişierul [Link] după a doua coloană (delimitată prin whitespaces (spaţiu sau tab)), iar
sort - rnk4 f . txt
va sorta [Link] după a patra coloană, numeric, ı̂n ordine descrescătoare.
13 tr
Comanda tr este un utilitar simplu de substituţie. Mai precis,
tr car1 car2 < fisier
va parcurge fişierul dat şi va ı̂nlocui toate apariţiile caracterului car1 cu car2.
Comanda acceptă şi mai multe caractere de substituit. De exemplu,
tr ’ abc ’ ’ ABC ’
va transforma litera ’a’ ı̂n ’A’, ’b’ ı̂n ’B’ şi ’c’ ı̂n ’C’.
Mai mult, tr suportă şi clase de caractere:
[:upper:] litere mari
[:lower:] litere mici
[:digit:] cifre
[:alphanum:] caractere alfanumerice
[:punct:] semne de punctuaţie
Comanda tr poate fi folosită şi pentru a şterge caractere. Mai precis,
cat file | tr -d ’a ’
şterge caracterul ’a’ din fişierul file.
O altă opţiune utilă este ”-s”, ce suprimă duplicatele unui caracter (adică orice apariţie
dublată este ı̂nlocuită cu o singură copie).
10
14 sed
sed este un utilitar de editare a fişierelor text. El nu modifică (implicit) fişierul sursă dar
Comanda sed (stream editor) este utilitar avansat folosit pentru inserţia, ştergerea şi substituţia
de caractere.
Comanda
sed ’s/<msj1>/<msj2>/g’ fisier
substituie toate apariţiile ale msj1 prin msj2 din fisierul dat.
Comanda
sed ’<range>d’ fisier
sşterge liniile precizate de range.
Comanda
sed ’nr a msj’ fisier
inserează după linia nr o nouă linie cu textul msj.
Comanda
sed ’s/<msj1>/<msj2>/g’ fisier
substituie toate apariţiile ale msj1 prin msj2 din fisierul dat.
Comanda
sed ’<range>d’ fisier
sşterge liniile precizate de range.
Comanda
sed ’nr a msj’ fisier
inserează după linia nr o nouă linie cu textul msj.
15 grep
grep este un utilitar de căutare ı̂n fişiere text. Cel mai simplu mod de utilizare este:
grep ’ msj ’ fisier
va afişa toate liniile fişierului dat care conţin ’msj’
Căteva opţiuni utile sunt:
Opţiunea -v inversează match-ul: caută liniile care nu conţin patternul dat.
Opţiunea -c afişează numărul de linii care conţin un match.
Opţiunea -o afişează exact match-urile găsite, nu liniile ı̂ntregi pe care s-au găsit acestea.
Atăt grep cât şi sed permit utilizarea expresiilor regulate. Căteva din caracterele speciale
utilizate sunt:
11
Caracter Efect
. orice caracter
c? caracterul c cel mult o data.
c* caracterul c de oricate ori, posibil niciodata.
c+ caracterul c de oricate ori, cel putin o data.
ˆ inceput de linie.
$ final de linie.
[...] orice caracter din setul dat intre paranteze.
(...) caractere de grupare.
c{min,max} caracterul c de cel putin min ori si de cel mult max ori.
\ escapare.
Exemplul 5. ˆ#include - linii care ı̂ncep cu #include.
• [a-z]$ - linii care se termină cu o literă mică.
• [A-Z][a-z]+ - o litera mare urmată de cel puţin o literă mică.
• [0-9]{10} - sir de 10 cifre.
12