Sunteți pe pagina 1din 32

Capitolul 6 – Comenzi Linux

6. Comenzi Linux
Pentru o mai bună înţelegere a comenzilor şi a ceea ce urmează, dorim să vă reamintim
asemănarea dintre comezile din DOS/windows şi Linux.
Scopul comenzilor DOS Linux Exemple de comenzi în Linux
Copiera fişierelor copy cp cp thisfile.txt /home/thisdirectory
Mutarea fişierelor move mv mv thisfile.txt /home/thisdirectory
Listarea fişierelor dir ls Ls
Curăţarea ecranului cls clear Clear
Modificarea datei din date date Date
calculator
Inchiderea unei ferestre exit exit Exit
deschise sub windows
Ştergerea fişierului del rm rm thisfile.txt
Ecou afişat pe ecarn echo echo echo this message
Editarea textului cu un editor edit joe (a) joe thisfile.txt
simplu
Compararea conţinutului a 2 fc diff diff file1 file2
fişiere
Găsirea unui şir de caractere find grep grep this word or phrase thisfile.txt
într-un fişier
Formatarea unei dischete format a: mke2fs /sbin/mke2fs /dev/fd0 (/dev/fd0
(Unitatea sau este echivalentul dischetei A sub
discheta a:) Linux
mformat (b)
Ajutor (Help, F1) Command /? man (c) man command
Crearea unui director mkdir mkdir mkdir director
Rularea conţinutului unui more less (d) less thisfile.txt
fişier
Redenumirea unui fişier ren mv mv thisfile.txt thatfile.txt (e)
Ne arată unde ne aflăm în chdir pwd pwd
sistemul de fişiere (calea
absolută spre directorul
curent)
Schimbarea directorului (calea cd pathname cd pathname cd directory/directory
absolută)
Schimbarea directorului cu o cd .. cd .. cd ..
cale relativă
Afişarea orei exacte time date date
Valoarea RAM-ului în lucru şi mem free free
liber

1
Partea I – Linux
Observaţii:
Joe este unul din multele editoare simple din linux, alte editoare sunt emacs, vi.
Aceste comezi formatează o dischetă pentru a putea fi folosită în sistemul dos/windows
Ajutorul la unele comezi poate fi apelat şi cu comandă info
Se mai poate folosi şi comandă combinată de genul cat | more nume fişier pentru a afişa pe ecrane
conţinutul unui fişier
Comanda mv se foloseşte în două ipostaze: pentru mutare şi pentru redenumire de fişier
Aceste comenzi sunt baza pentru orice persoană care doreşte să înceapă să lucreze în linux!

6.1. Comenzi de bază generale


În continuare vom încerca să introducem comenzi noi şi să detaliem ce am scris până acum.
cat [opţiuni] fişiere
Concatenează şi/sau afişează fişiere.
Opţiuni:
-s nu afişează mesaje de inexistenţă fişier;
-v tipăreşte caracterele de control (^caracter);
-w operaţiile de ieşire se fac fără tampon;
Exemplu:
cat f1
afişează conţinutul lui f1 pe ecran;
cat f1 f2 f3
concatenează fişierele f1, f2, f3 şi afişează la terminal rezultatul.

cc [opţiuni] fişier(e).[c|s|o]
Compilatorul programelor C.
- Lansează în execuţie compilatorul limbajului C;
- Primeşte ca intrare unul sau mai multe fişiere sursă C (.c), asamblare (.s) sau obiect (.o);
Opţiuni:
-c Compilare simplă, fără a genera executabil, produce fişiere obiect;
-o Fiş_exec Generează fişierul executabil fiş_exec; dacă lipseşte această opţiune, se va genera
executabil cu numele a.out;
-f Compilare cu opţiune de virgulă mobilă;
-lm Legarea bibliotecii matematice;

cd
Comanda cd schimbă poziţia Dvs în sistem la un anumit director în care doriţi să intraţi: ex.
cd /usr/local - schimbarea poziţiei în directorul /usr/local
Doar tastând comanda cd puteţi reintra în directorul Dvs. (home)
cd .. - va ridica la un rând superior în ierarhia directoarelor
exemplu:
Iniţial suntem în /home/user/smith
Dăm comanda cd ..
Vom fi teleportaţi în directorul /home/user

2
Capitolul 6 – Comenzi Linux
cd / - ne duce direct în directorul rădăcină
exemplu:
Iniţial suntem în /home/user/smith
Dăm comandă cd /
Vom fi teleportaţi în directorul /

clear
Şterge ecranul.

cmp [opţiuni] f1 f2
Compară două fişiere.
Opţiuni:
-l afişează numărul şi valoarea în octal pentru fiecare diferenţă întâlnită;
-s rezultatul este dat printr-un cod numeric (0-identice, 1-diferite, 2-eroare)

cp
Comanda cp copiază un fişier. Se poate copia un fişier într-un director şi în acelaşi timp îl poţi
redenumi.
Comanda cp poate fi folosită să copieze un director în altul:
cp -r /root/mail /usr/local
copiază directorul mail în directorul /usr/local.

date [mmddhhmm[yy]]
Afişează/setează data curentă pentru ceasul încorporat.
Opţiuni:
mm – luna, 2 cifre; dd – ziua, două cifre; hh – ora, două cifre; mm – minutul, două cifre; yy –
anul, două cifre

diff [-e] f1 f2
Afişează diferenţele de conţinut dintre două fişiere.

dmesg
Această comandă va afişa pe ecranul monitorului toate mesajele care apar în momentul când
pornim calculatorul.
Pentru a putea vizualiza toate mesajele folosiţi comanda dmesg | more

du [listaarg] [listanume]
Afişează informatii despre disc.

echo [listaarg]
Afişare mesaj pe ecran.

3
Partea I – Linux
Exemplu:
echo Intalnire cu Bill Gates la ora 8, peste jumatate de ora
Observaţie: am putea folosi această comandă pentru a afişa mesajul de la exemplul pentru
comanda at;

exec
Comanda exec execută un fişier sau un script binar. De exemplu,
exec /etc/sysconfig/network-scripts/ifup ppp0
porneşte o sesiune internet.
Notă: este mai uşoară execuţia acestei comezi decât să facem două operaţii cum ar fi:
cd /etc/sysconfig/network-scripts/
./ifup ppp0.

file lista_fişiere
Determină tipul unui fişier.

grep
Comanda grep ne ajută să găsim ceea ce căutăm într-un fişier … detaliile comezii le găsiţi mai
jos.

id
Afişează numărul şi numele de utilizatori şi grup.

kill [-signr] idproc


„Ucide” procese care au scăpat de sub control
Opţiuni:
-signr: nr. semnal
Observaţie: idproc se poate afla cu comanda „ps -a”.

less
Comandă less vă dă posibilitatea să afişati conţinutul unui fişier şi vă mai dă posibilitatea de a rula
conţinutul lui dacă este mai lung decât o pagină de ecran.

ln
Comandă ln crează un link al unui director sau al unui dispozitiv către un alt director sau un alt
dispozitiv. Amintiţi-vă de sistemul windows când faceţi un shortcut la un director, la un fişier, la
unitatea de dischetă, sau la unitatea de harddisk. Cel mai bine se foloseste acest lucru făcând un link
simbolic către un director de pe una din partiţiile Linux.
Să zicem că ne aflăm în directorul / root şi că vă este groază să tot tastaţi comandă ls
usr/local/myfiles pentru a vizualiza ce se află în acest director. Atunci daţi următoarea comandă:
ln -s /usr/local/myfiles myfiles

4
Capitolul 6 – Comenzi Linux
Acum aveţi un link simbolic numit myfiles in directorul Dvs de bază spre directorul
/usr/local/myfiles. Dacă tastaţi myfiles, linkul vă va duce direct la directorul înscris în linkul
simbolic. Dacă doriţi să copiaţi ceva în directoul /usr/local/myfiles este mai simplu să folosiţi
comandă mv testdownload.tar.gz myfiles. Veţi vedea cât timp câştigati prin acest procedeu.

ls
Ne arată conţinutul unui director.
Opţiuni:
ls -l
Ne arată ce ezistă într-un director în format lung (ne arată de cine aparţin fişierele, data
când au fost create şi altele)
ls -a
Ne arată ceea ce conţine un director, dar pe lângă fişierele obişnuite ne arată şi fişierele
ascunse cum ar fi .bash_history
Opţiuni:
-d: afişează numai directoarele din directorul curent;
-i: afişează nr. de inod;
-s: afişează numărul de blocuri pentru fiecare fişier;
-t: fişierele sunt sortate după data ultimei actualizări;
-u: se consideră data ultimului acces în locul datei ultimei actualizări, pentru opţiunile –t sau -
l;
-r: inversează ordinea de sortare;
Aceste prime două comenzi sunt cel mai adesea folosite de către fiecare persoană. Pe lângă aceste
8 opţiuni, mai există încă 18.

logout
Comanda logout vă scoate din sistem, şi permite altui utilizator să se logheze, pe acelaşî terminal.

make
make [makefile] – construieşte aplicaţia pe baza fişierului de configuraţie „makefile”;
Sintaxa:
make [opţiuni][-f makefile][macrodef...][fişiere_tinta]
Opţiuni:
-n Se afişează liniile de comandă, dar nu se execută;
-t Actualizarea fişierelor ţintă;
-p Afişare macrodefiniţii;
-f Precede numele unui fişier de descriere (tip makefile);

mkdir
Comandă mkdir realizează un director sub linux
Comandă mkdir realizează un fişier oriunde pe harddisk, dacă aveţi şi drepturile necesare de
realizare a lui:
mkdir /etc/sysconfig/testdir

5
Partea I – Linux

more
Comanda more face exact acelaşi lucru ca şi less, doar că nu ne lasă să rulam fişierul afişat decât
într-o singură direcţie, aceea fiind în jos, şi nu apăsând orice tastă, ci doar tasta ENTER.
Comandă more mai poate fi folosită în combinaţii cu oricare comandă de afişare din linux cu
precizarea că între cele două comenzi să se pună semnul | (pipe):
Exemplu:
cat test | more
Se afişează conţinutul fişierului test până când se intrerupe pagina. Pentru a putea vedea ce scrie
pe următoarea pagină vom fi nevoiţi să apăsăm o tastă de pe tastatură.

mount
Sistemul de fişier în linux este încărcat şi se poate accesa după cum scrie în fişierul /etc/fstab. dacă
aveţi posibilitatea, vă puteţi uita la conţinutul fişierului, dacă nu, îl afişăm mai jos (seamănă cu al
dvs.):

/dev/hde2 / ext3 defaults 1 1


none /dev/pts devpts gid=5,mode=620 0 0
/dev/hde3 /home ext3 defaults,nodev,nosuid,noexec 1 2
/dev/hde5 /home/admin ext3 defaults,nodev,nosuid,noexec 1 2
/dev/hde6 /home/cadre ext3 defaults,nodev,nosuid,noexec 1 2
/dev/hde7 /home/diverse ext3 defaults,nodev,nosuid,noexec 1 2
/dev/hde11 /home/ftp ext3 defaults,nodev,nosuid,noexec 1 2
none /proc proc defaults 0 0
/dev/hde8 /var ext3 defaults,nodev,nosuid,noexec 1 2
/dev/hde9 /var/spool/mail ext3 defaults,nodev,nosuid,noexec 1 2
/dev/hde10 /var/spool/squid ext3 defaults,nodev,nosuid,noexec 1 2
/dev/hde1 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

Veţi vedea sistemul de fişiere care este montat la pornirea sistemului, care dealtfel este încărcat ca
şi unitatea floppy, sau unitatea cdrom.
Cum pot vizualiza informaţia de pe un cdrom dacă acesta nu este montat? Ei bine, el trebuie
montat şi asta se face cu comandă:
mount /dev/cdrom / mnt/cdrom
Cum pot citi informaţia de pe o dischetă? Înainte de a putea citi ce avem pe un fişier, trebuie să
încărcăm în memorie acel floppy, ceea ce se face cu comandă:
mount /dev/fd0 /mnt/floppy
Cum pot citi informaţia de pe o dischetă dos? Înainte de a putea citi ce avem pe un fişier, trebuie
să încărcăm în memorie acel floppy, ceea ce se face cu comandă:
mount -t msdos /dev/fd0 /mnt/floppy
Toate aceste comenzi accesează fişierul /etc/fstab pentru a vedea cum trebuie încărcate fiecare
dintre accesorii. Dacă citiţi cu atenţie fişierul /etc/fstab veţi vedea că sistemul de fişiere este încărcat
cu anumite opţiuni. De exemplu cdromul nu este încărcat la bootarea calculatorului şi este încărcat
cu opţiunea readonly. Vă rog să notaţi că directoarele /mnt/floppy şi /mnt/cdrom sunt făcute din

6
Capitolul 6 – Comenzi Linux
oficiu şi tot din oficiu poartă aceste nume. Dacă doriţi să montaţi/încărcaţi sistemul Dvs win98,
urmaţi vă rog următorii paşi:
mkdir /mnt/vfat
Pentru a-l putea încărca oricând doriţi Dvs, tastaţi:
mount -t vfat /dev/hda1 /mnt/vfat
unde
hda1 este prima partiţie a harddiskului Dvs unde este instalat windows 98, hda2 este a doua
partiţie, hdb1 este prima partiţie a celui de al doilea harddisk
La urma urmei, toate acestea pot fi adăugate în fişierul /etc/fstab pentru ca noi să trebuiască să
tastăm doar o parte din comandă şi anume:
/mnt/vfat
Vă recomandăm să nu editaţi fişierul /etc/fstab aiurea, doar dacă sunteţi sigur că ceea ce faceţi este
bine. O metodă simplă de modificare a fişierului cu pricina este să folosiţi comada linuxconf care ar
trebui să fie instalată în sistemul Dvs după ce aţi instalat Linux.
Dacă lucraţi în interfaţa grafică a sistemului Linux s-ar putea să ajungeţi la concluzia că linuxconf
nu funcţionează. Pentru aceasta există o altă comandă care se numeşte:
usermount

mv
Comanda mv mută un fişier într-un director
mv test test2
Mută fişierul test în acelaşi director, sub numele test2. Remarcaţi că acest lucru face exact ceea ce
face comanda de redenumire din dos sau windows.

mv test /home/user/john
Mută fişierul test în directorul /home/user/john

pwd
Comanda pwd afişează calea absolută spre directorul curent.

ps
Comanda ps vă afişează procesele curente care rulează şi numarul lor de id.
ps –avx
Afişează toate procesele ce rulează pe server la un moment dat

rm
Comanda rm şterge un fişier şi poate fi folosită să şteargă şi un director
rm -rf /root
Şterge totul în directorul /root fără a vă întreba dacă doriţi totuşi acest lucru.
Vă recomandăm să nu faceţi acest lucru dacă nu doriţi să reinstalaţi sistemul de la bun început

7
Partea I – Linux
shutdown
Comanda shutdown ne ajută să oprim sistemul de operare înainte de a stinge calculatorul. Această
comandă ne dă posibilitatea de a restarta sistemul.
Opţiuni:
Reporneşte calculatorul imediat:
shutdown -r now
Reporneşte calculatorul la ora 9:30:
shutdown -r 09:30
Pregăteşte sistemul pentru a-l putea opri:
shutdown -h now
Pentru a opri calculatorul, trebuie ieşit din linux, ceea ce este posibil numai după ce toate
modulele din linux au fost închise şi oprite.

sort [lista_fişiere] – sortare lexicografică (de obicei, sortează liniile unui fişîer text).
Exemplu:
cat membri.txt | sort | more
tstty [opt] – se conectează pe un port serial (COM, sub DOS)
Opţiuni:
-parmb activează detecţia de paritate
-parodd setează paritate impară
-(1200 2400 4800 9600 )

touch
Comanda touch crează un fişier gol.
touch test
Crează un fişier care poartă numele test şi care este gol, şi poate fi editat cu ajutorul comenzii joe
test

top
top este un program şi nu o comandă, dar poate fi privit ca un program foarte important. Pentru a
activa programul scrieţi pe linia de comandă: top, urmat de apăsarea tastei ENTER. Astfel veţi
putea vedea cât se foloseşte dintr-un program, cât se foloseşte din procesor şi aşa mai departe.
Pentru a întrerupe programul apasaţi tasta q.

who
Comandă who afişează pe ecran toţi utilizatorii care sunt legaţi pe server. Probabil că vă veţi vedea
şi numele pe ecran.

8
Capitolul 6 – Comenzi Linux
6.2. Unele chestii importante despre redirecţionare şi pipe
6.2.1. Operatorul pipe („|”)
Leagă ieşirea unei comenzi la intrarea alteia, de exemplu „cat lucrare.txt | more” afişează pe
ecran conţinutul fişierului lucrare.txt; dacă lungimea textului depăşeşte lungimea ecranului,
comanda more opreşte afişarea după fiecare ecran plin.

6.2.2. Operatorul de redirecţionare („>”)


Puteţi redirecţiona ieşirea unei comenzi spre un alt dispozitiv decât ecranul, de pildă într-un fişier.
Ca exemplu, comanda:
ls –al > test
nu va afişa nimic pe ecran, ci va scrie lista în fişierul test. Dacă folosiţi „>>”, fişierul nu va fi
suprascris, ci i se vor ataşa la capăt noile date.
Comenzile Linux sunt extrem de puternice şi pot fi folosite să manipuleze fişiere într-un mod
aparte decât cele din DOS. Un astfel de exemplu ar putea fi un fişier care să conţină agenda Dvs de
telefon, numită agenda, iar Dvs să puteţi lista acest fişier în foarte multe feluri. Cum putem, de
exemplu, să scoatem în evidenţă înregistrarea 212 şi nu 908.
Este simplu: tastaţi
cat agenda | grep 212
Această comandă afişează înregistrarea cu nr 212.
Pentru a redirecţiona această înregistrare într-un fişier vă rugăm să tastaţi următoarea linie:
cat agenda| grep 212 > agenda212
Această comandă va crea un fişier nou care va conţine doar înregistrarea nr. 212. Pentru a printa
înregistrarea 212 având în vedere ca aţi setat imprimanta corect, tastaţi următoarele:
cat account | grep 212 > lp
Rezultatul ar trebui să apară la imprimantă.
Pentru a adauga alte înregistrări fişierului dvs. nou creat - agenda212 - va trebui să tastaţi
următoarea linie:
cat accounts | grep 609 >> accounts212
Astfel am adăugat înregistrarea 609 la fişierul anterior creat.
Aceaste combinaţii de comezi sunt un lucru extrem de apreciat de către oricare utilizator al
sistemului de operare Linux.
De exemplu comanda:
ls > test
introduce ceea ce se listează cu comandă ls în fişierul test pentru a putea fi vizualizat în linişte
după terminarea operaţiei. Aceste comezi se fac dacă rezultatul depăşeşte lungumea unui ecran de
monitor. Concluziile se trag mai uşor dacă avem întreg rezultatul la dispoziţie.

6.3. Comanda grep


grep [-[[AB] ]num ] [ -[CEFGVBchilnsvwx] ] [-e] sablon | -fnume-scenariu ] [lista_fişiere]
Grep - caută un anumit şir de caractere într-un fişier sau în mai multe fişiere şi afişează la ieşirea
standard rezultatul.
Opţiuni:

9
Partea I – Linux
-c (count) - afişează numai numărul de linii care se potrivesc cu şablonul
-h (hide) - nu afişează numele fişierului
-i (ignore case) - nu face diferenţă între literele mari şi cele mici la căutare
-l - afişează numai numele fişierelor care conţin şirul căutat (nu şi liniile din aceste fişiere)
-n - afişează liniile care se potrivesc şablonului precedat de numărul de ordine relativ la începutul
fiecărui fişier
-s - nu afişează nimic, se foloseşte atunci când ne interesează dacă s-a găsit sau nu, cel puţin o
potrivire, întoarce 0 - dacă a găsit
1 - dacă nu a găsit
2 - eroare
-v - afişează liniile care nu conţin şirul dat
-w - afişează liniile în care şirul căutat este un cuvânt întreg
-e - se foloseşte dacă vrem ca şablonul să înceapă cu "-"
Şablonul este o expresie regulară.

6.4. Expresii regulate


Expresia regulată este o secvenţă de caractere în care unele caractere au seminficaţie specială. Cu
caracterul "\" se evită semnificaţia specială a unui caracter, "..." evită orice caracter mai puţin $ şi
'...' iar cu '...' se evită orice caracter.
Caractere cu semnificaţie specială:
1) "." - orice caracter
2) [sir_caractere] - orice caracter din şirul de caractere
[c1 - c2] - orice caracter cuprins între caracterele c1 şi c2 în ordine
lexicografică
[^ sir_caractere] - negaţia lui [sir_caractere]
3) "^" - dacă e primul caracter din şablon semnifică început de linie
Exemplu:
$grep ^if fis1 fis2
Afişează liniile din fis1 şi fis2 care încep cu if.

$grep if fis1 fis2


Afişează toate liniile din fis1 şi fis2 care conţin secvenţa "if".
4) "$" - dacă e ultimul caracter din şablon semnifică sfârşit de linie
Exemplu:
$grep fi$ fis1 fis2
Afişează liniile din fis1 şi fis2 care se termină cu fi.

5) \< - semnifică început de cuvânt (un cuvânt este format din litere, cifre
sau -, orice alt caracter este considerat separator)
6) \> - semnifică sfârşit de cuvânt
7) * - repetă caracterul anterior interpretat ca expresie regulară de cite ori vrem noi
8) \{n\} - unde n este un număr între 0 şi 255

10
Capitolul 6 – Comenzi Linux
repetă expresia anterioară de exact n ori
9) \{n,\} - repetă expresia regulată anterioară de cel puţin n ori
10)\{n,m\} - repetă expresia regulată anterioară de cel puţin n ori şi de cel mult m ori
11)\( expr-regulara\) <=> expr-regulată
12)\n - unde n este între 0 şi 512
\n înlocuieşte un şir cu care s-a înlocuit cea de-a n-a expresie regulară aflată între
paranteze
Exemplu:
grep '^\(.*\) \(.*\) \1$' fis1
Afişează toate liniile care încep şi se termină cu acelaşi cuvânt, separatorul fiind spaţiu şi conţin
mai mult de două cuvinte.

6.5. Comanda awk


awk [ -f fişier-scenariu ] [ -Fc ] [ scenariu ] [ variabila=valoare ... ] [ nume fişiere...]
awk - este filtru pentru fişiere text, rezultatul îl afişează la ieşirea standard.
Scenariul este format din linii de forma:
conditie { instructiuni}
awk tratează pe rând câte o linie din fişierele de intrare şi,pentru fiecare,execută instrucţiunile
când condiţia ia valoare de adevăr. Dacă condiţia lipseşte, se execută instrucţiunile pentru toate
liniile din fişiere.
Condiţia - este o expresie logică construită cu operatorii din sintaxa C: ||, &&, !, (), operanzii pot
să fie expresii aritmetice, expresii relaţionale, constante şi variabile. Variabilele nu trebuie să fie
declarate, ele se iniţializează automat (tipul lor se deduce din context). Pentru variabilele de tip şir
de caractere, există doar operator de concatenare (spaţiu), există variabile de tip tablou a caror indici
pot să fie numerici sau şir de caractere.

6.5.1. Condiţii predefinite


BEGIN este adevărată înainte de prima linie din primul fişier
END este adevărată după ultima linie din ultimul fişier

6.5.2. Variabile predefinite


NF - numărul de cuvânte din linia curentă
NR - numărul de ordine al liniei curente (începe de la 1)
FS - separatorul de câmpuri
FILENAME - numele fişierului curent care este tratat
OFS - separator de câmpuri la ieşire (implicit este spaţiu)
ORS - separator de inregistrări la ieşire (implicit este linie nouă)
Accesarea câmpurilor se face cu $1, $2 ...$i, $(i+1), $NF, întreaga linie se referă cu $0

6.5.3. Funcţii predefinite


length(sir) - lungime şir; length <=> length($0)
substr(s,p,n) - subşirul lui s care începe la poziţia p şi este de lungime n
index(s1,s2) - întoarce poziţia la care s2 apare în s1 (0 altfel)
sprintf(format, arg1,..) - întoarce ca rezultat şirul pe care printf l-ar tipări

11
Partea I – Linux
split(s,a,c) - unde s este şir, a este tablou şi c un caracter care împarte şirul s în
câmpuri, considerând ca separator caracterul c, sau dacă c lipseşte, separatorul implicit FS şi le dă
ca valoare elementelor tabloului a.

6.5.4. Instrucţiuni
variabila = expresie
instrucţiunile if, for, while ca şi în C
mai există şi for (i în nume-tablou) instrucţiune - i ia ca valori
indicii tabloului şi se execută instrucţiunea
separator de instrucţiuni ;
separator de linie }
(continuarea unei linii se face cu caracterul \ pe ultima poziţie din linie)
print lista-expresii [ > nume-fis] - afişează la ieşirea standard valoarea
expresiilor separate prin OFS şi la sfârşit de linie pune ORS dacă
nu există > nume-fis, dacă există >nume-fis atunci scrierea se face
în fişierul specificat.

6.5.5. Exemple awk


1. Să se afişeze dintr-un fişier primul cuvânt din fiecare linie
a) fără fişier scenariu
awk '{ print $1}' nume_fis
b) cu fişier scenariu
fis-s : {print $1}
awk -f fis-s nume_fis
2. Să se afişeze dintr-un fişier liniile mai lungi de 5 caractere, afişarea linilor să se facă în ordine
inversă.
a) scenariu fără fişier
awk 'length>5 {x[i++]=$0} \
END { for(j=i; j>0 ; j--) print x[j]}' nume_fis
b) scenariu cu fişier
fis-s : length>5 {x[i++]=$0}
END { for(j=i; j>0 ; j--) print x[j]}
awk -f fis-s nume_fis

6.6. Comanda sed


sed [-n] [-g] [-e scenariu ] [-f fişier_scenariu ] [ lista_fişiere ] ...
Se prelucrează fişiere interpretate ca şi text, conform unui scenariu sed. Se prelucrează linie cu
linie folosind un buffer temporar şi se afişează bufferul temporar la ieşirea standard (dacă nu se
foloseşte opţiunea -n).
Un scenariu sed este format din linii de forma
condiţie instrucţiune

6.6.1. Condiţii
conditie vidă - adevărată pentru toate liniile din fişier

12
Capitolul 6 – Comenzi Linux
un numar n - adevărată pentru linia cu numărul de ordine egal cu n (liniile se numerotează
cumulat în lista de fişiere)
$ - condiţie adevărată pentru ultima linie din fişier
/expresie regulara/ - condiţie adevărată pentru liniile care conţin cel puţin un subşir care se
potriveşte cu expresia regulară
expr1,expr2 - adevarată pentru liniile aflate între linia care se potriveşte cu expr1 şi linia care se
potriveşte cu expr2

6.6.2. Exemplu
$sed 1,10 instrucţiune fis1
execută instrucţiune asupra liniilor de la 1 la 10
$sed 10,$ instrucţiune fis1 fis2
execută instrucţiune asupra liniilor de la 10 la sfârşitul
fişierului obţinut prin concatenarea lui fis1 cu fis2

6.6.3. Instrucţiuni
1) p - afişează bufferul temporar la ieşirea standard
Exemplu
$sed p fis1
afişează fiecare linie de două ori
$sed -n p fis1
afişează fiecare linie o dată
2) d - şterge zona temporară
3) i\<ENTER> - are ca parametru un text (dat pe liniile următoare în
fişierul scenariu) pe care îl afişează la ieşirea standard
Exemplu
fis-s:
i\
ttttt\
11111
$sed -f fis-s fis1
4) a\<ENTER> - analog cu \i dar afişează după prelucrarea fiecărei linii
5) y/sir1/sir2 - unde sir1 şi sir2 au lungimi egale
realizează o translatare înlocuind caracterele din fişierele
de intrare care se găsesc în sir1 cu caracterele
corespunzătoare din sir2
6) s/expresie_regulara/sir/[flaguri] - înlocuieşte prima apariţie a unui şir
care se potriveşte cu expresia regulară cu şirul "sir"
flaguri: - dacă lipseşte, se înlocuieşte numai prima apariţie
- dacă este un număr n între 1 şi 512 se înlocuieşte exact a n-a apariţie
- dacă este "g" înlocuieşte toate apariţiile din linii
- dacă este "p" afişează bufferul tampon la ieşire dacă s-a produs vreo modificare
în linia respectivă

13
Partea I – Linux
6.6.4. Exemple sed
1. Se cere să se elimine toate secvenţele <cifra><litera><cifra> dintr-un fişier.

$sed 's/[0-9][a-z,A-Z][0-9]//g' fis1

2. Să se înlocuiască ultimul cuvânt din fiecare linie cu primul cuvânt.


Cuvântele conţin doar litere şi cifre şi sunt separate prin spaţiu.

$sed "s/\(^[a-z,0-9]*\)\(.*\)\( [a-z,0-9]*$\)/\1\2 \1/g" fis1

Observaţie: Parametrii din linia de comandă se utilizează cu $1, $2, .. $n şi se pot folosi cu
comanda shift.

6.7. Editorul de text vi


6.7.1. Pornire vi
vi porneşte editorul
vi fişier deschide sau crează un fişier
vi +18 fişier deschide fişierul la linia 18
vi +/"Un sir" fişier deschide fişierul la apariţia şirului „Un sir”
vi -r fişier reface (recover) fişierul
vi + fişier deschide şi afişează ultima parte a fişierului

6.7.2. Tipuri de comenzi vi


O comandă vi are structura generală:
[nr1]operator[nr2]obiect
operator şi obiect sunt desemnaţi prin câte o literă, iar nr1 şi nr2 sunt factori de repetiţie a
acestora. În absenţa factorilor de repetiţie, aceştia sunt consideraţi de valoare 1. Comanda se
execută de nr1*nr2 ori. De exemplu, comanda dw (delete word) are operatorul d şi obiectul w. Dacă
se dă una dintre comenzile:
5d3w 3d5w 15dw
efectul este acelaşi: ştergerea a 15 cuvinte.
Comanda
.
(punct) înseamnă repetarea comenzii precedente.

6.7.3. Şiruri de căutare


Unele comenzi pretind existenţa unor "şiruri de căutare".
Aceste şiruri de căutare sunt "expresii regulare", ca cele de la grep, ed sau shell. Pe lângă şiruri
obişnuite de caractere, aici pot apărea o serie de caractere cu semnificaţie specială.
Acestea sunt:
^ început de linie
$ sfârşit de linie

14
Capitolul 6 – Comenzi Linux
. înlocuieşte un singur caracter (unul singur)
\c evită înţelesul special al unui caracter c
\< început de cuvânt
\> sfîrşit de cuvânt
[sir] unul dintre caracterele din şir
[^sir] unul dintre caracterele care nu este în şir
* caracterul precedent se va repeta (>=0)
Şirul de căutare se specifică în urma caracterului
/ (pentru căutare înainte) sau
? (căutare înapoi)

6.7.4. Moduri de lucru


Există trei MODURI DE LUCRU

6.7.4.1. Comandă
activată când se dă comanda ":" (două puncte). Prin aceasta devin disponibile comenzile în mod
linie ale editorului ex.

6.7.4.2. Inserare
activată prin una dintre comenzile a, A, i, I, o, O. Ieşirea din modul de înserare se face tastând
ESC.

6.7.4.3. Linie curentă


valabilă în toate celelalte cazuri.

6.7.5. Setări ale editorului


:set afişează starea curentă a setărilor
:set nu evidenţiază numerotarea liniilor
:set nonu ascunde numerotarea liniilor
:set ai indentare automată; revenirea la un nivel inferior de indentare se face tastând
CTRL-d
:set noai anularea indentării
:set sw=n n indică cu câte poziţii se întoarce spre stânga, la un nivel de indentare inferior,
la CTRL-d
:set shiftwidth=n identic cu sw=n
:set wm=n n indică numărul de caractere libere în partea dreaptă după care se trece automat
pe linia următoare
:set identic cu wm=n
wrapmargin=n
:set sm validează execuţia comenzii "%" (procent) care indică, poziţionat pe o
paranteză, care este paranteza pereche

15
Partea I – Linux

:set showmatch identică cu sm


:set nosm anulează efectul lui sm
:set bf şterge de pe ecran caracterele de control suplimentare (CTRL-A etc.)
:set beautify identică cu bf
:set nobf anulează efectul lui bf

6.7.6. Mutări cursor


h mută stânga
j mută jos
k mută sus
l mută dreapta
w mută dreapta un cuvânt
W mută dreapta un cuvânt peste punctuaţie
b mută stânga un cuvânt
B mută stânga un cuvânt peste punctuaţie
RETURN mută jos o linie
BACKSPACE mută stânga un caracter
SPATIU mută dreapta un caracter
H mută la început de ecran
M mută la mijloc de ecran
L mută la sfârşit de ecran
CTRL-F scroll un ecran în sus
CTRL-D scroll o jumătate de ecran în sus
CTRL-B scroll un ecran în jos
CTRL-U scroll o jumătate de ecran în jos
^ (căciuliţa) la început de linie
$ la sfârşit de linie
z-RETURN linia curentă la început de ecran
z. linia curentă la mijlocul ecranului
z- linia curentă ultima de pe ecran

6.7.7. Inserări caractere şi linii


a înserare la dreapta cursorului
A înserare la sfârşitul liniei
i înserare la stânga cursorului
I înserare la început de linie
o înserează o linie sub cursor
O înserează o linie deasupra cursorului

6.7.8. Schimbări în text


cw schimbă cuvânt

16
Capitolul 6 – Comenzi Linux
cc schimbă linie
s înlocuieşte şirul de sub cursor cu cel specificat
r înlocuieşte caracterul de sub cursor cu un caracter nou tastat, după care rămâne în
mod linie curentă
R înlocuieşte caracterele nou tastate rămânând în mod înserare
r-RETURN rupe linia de la cursor
j reuneşte (join) linia curentă cu următoarea
xp inversează următoarele două caractere
~ (tilda) inversează litera mare <--> litera mică
u anulează comanda precedentă
U anulează schimbările din linie
:u anulează precedenta comandă asupra liniei

6.7.8.1. Ştergeri de text


x şterge caracterul curent
X şterge caracterul din stânga celui curent
dw şterge cuvânt dreapta
dd şterge linia curentă
D şterge de la caracterul curent până la sfirşitul liniei

6.7.8.2. Copieri şi mutări


yy marchează sau şterge linie
Y marchează sau şterge linie
dd şterge linia curentă
p pune linia marcată sau ştearsă sub cea curentă
P pune linia marcată sau ştearsă deasupra celei curente
:1,2 co 3 copiază liniile 1-2 după linia 3
:4,5 m 6 mută liniile 4-5 după linia 6

6.7.8.3. Găsirea unei linii


G mergi la ultima linie a fişierului
21G mergi la linia 21

6.7.8.4. Căutări şî înlocuiri


/şir/ caută după şir
?şir? caută înapoi după şir
n caută următor (precedent) şir
:g/şircăutat/s//şirinlocuitor/gc căutare şi înlocuire, cu confirmare

6.7.9. Ştergere ecran


CTRL-L ştergere ecran

6.7.10. Inserare fişier în fişier


:r fişier înserează fişierul după cursor

17
Partea I – Linux
:34 r fişier înserează fişier după linia 34

6.7.11. Salvări şi ieşiri


:w salvează (scrie buffer)
:w fişier scrie bufferul în fişier
:wq salvează şi ieşi din vi
:ZZ salvează şi ieşi din vi
:q! ieşire fără salvare în mod necondiţionat
:q ieşire fără salvare dacă nu s-au făcut modificări

6.8. Editorul de text joe


Joe este foarte asemănător cu editorul de text WORDSTAR.
joe numefiş – editor cu comenzi compatibile WordStar.

6.8.1. Comenzi
CTRL K-H: help
CTRL K-U: început de fişier (top of file)
CTRL K-V: sfârşit de fişier (end of file)
CTRL K-B: început bloc (begin bloc)
CTRL K-K: sfârşit bloc (end bloc)
CTRL K-M: mai mult (more)
CTRL K-C: copiere (copy)
CTRL K-W: scriere fişier (write file)
CTRL K-R: citire fişier (read file)

6.9. Comunicarea între utilizatori


Sistemul LINUX fiind un sistem multiuser şi având facilităţile de interconectare în reţea
încorporate oferă o serie de utilitare pentru comunicarea între utilizatori - utilizatori ce pot fi ataşaţi
la aceeaşi maşină sau la maşini diferite din reţea.

6.9.1. Comanda who


- afişează utilizatorii care lucrează în momentul lansării comenzii

6.9.2. Comanda write


- permite dialogul în timp real între doi utilizatori ai aceluiaşi sistem
Sintaxa:
write <nume-utilizator>
După ce fiecare din cei doi utilizatori au lansat write ceea ce se introduce de la tastatură se va afişa
pe ambele ecrane. Din acest motiv este necesară o "disciplină" a conversaţiei prin această comandă.
De exemplu, un utilizator nu introduce nimic până când celălalt nu a "încheiat" ceea ce avea de
transmis. De comun acord cei doi utilizatori stabilesc un caracter/cuvânt care să indice terminarea
unui mesaj.
Încheierea conversaţiei se poate face cu CTRL-D.

18
Capitolul 6 – Comenzi Linux
6.9.3. Comanda talk
- permite dialogul între doi utilizatori aflaţi la distanţă unul de celălalt.
Sintaxa:
talk gazda!utilizator
talk gazda.utilizator gazda = calculatorul pe care lucrează
talk gazda:utilizator utilizator
talk utilizator@gazda
În timpul conversaţiei ecranul se împarte în două, într-o parte se afişează mesajele unui utilizator
în cealaltă mesajele celuilalt.
Terminarea conversaţiei se face prin CTRL-C dat de oricare dintre utilizatori.

6.9.4. Comanda mesg


- permite inhibarea sau activarea recepţiei mesajelor de la alţi utilizatori
Sintaxa:
mesg
- afişează starea curentă a opţiunii mesg
mesg yes
- activează recepţia de mesaje
mesg no
- inhibă recepţia mesajelor

6.9.6. Comanda mail


Această comandă este una din comenzile oferite de LINUX pentru gestiunea a ceea ce se numeşte
"poşta electronică". Fiecare utilizator are o "cutie poştală" păstrată pe calculatorul pe care are un
cont. Adresa de poştă electronica a unui utilizator se compune din
nume-utilizator@adresa-nod
Exemple:
uni-cluj@pi-bucuresti.th-darmstadt.de
boier@cs.purdue.edu

6.9.6.1. Transmiterea de mesaje


Exemplu:
$ mail john@ux1.cso.uiu
Subject: cluj
Dear John
I'm waiting for your answer....
Sincerely yours
~.
$
Pentru transmisie mesaj se apelează:
mail <adresa-utilizator>
se introduce subiectul scrisorii după care se introduce textul scrisorii
încheiat de secvenţa:
~.

19
Partea I – Linux
În interiorul mesajului se poate introduce un fişier text cu ajutorul comenzii:
~r <nume-fişier>
Observaţie: cu ~r nu se ataşează fişierul, ci i se copiază conţinutul direct în corpul mesajului.

6.9.6.2. Citirea poştei


Se face cu comanda mailx (sau mail) fără nici un parametru. Ca rezultat se
va afisa lista mesajelor din cutia poştală.
în faţa fiecărui mesaj se va afla unul din caracterele:
N - mesaj nou venit
U - mesaj ce nu a fost încă citit
P - mesaj marcat pentru păstrare în sesiunea curentă
<spatiu>- mesaj citit şi păstrat dintr-o sesiune anterioară
Prompterul utilitarului mail diferă de la o implementare la alta.
Exemple:
mx? &
Există mai multe grupuri de comenzi ce pot fi date la acest prompter:
a) De citire
= afişarea numărului mesajului curent
help lista comenzilor
? idem
next afişează mesajul următor
headers afişează lista antetelor mesajelor
b) De editare
e editează mesajul curent
delete şterge mesajul curent
undelete anulează ultima ştergere
c) De salvare
save <lista-de-comenzi> <nume-fişier> salvează mesajele indicate cu ştergerea acestora din cutia
poştală (mbox)
copy <lista-de-comenzi> <nume-fişier> salvează mesajele indicate cu păstrarea acestora în cutia
poştală (mbox)
d) De răspuns
Reply mesaj răspunde mesajului
reply mesaj răspunde mesajului inclusiv celorlalţi destinatari
mail lista-utilizatori transmite o scrisoare utilizatorilor specificaţi
e) De terminare
quit terminare cu salvarea mesajelor citite
exit terminare fără modificare

6.10. Transferul de fişiere FTP (File Transfer Protocol)


De multe ori utilizatorul doreşte să aibă o copie proprie a unor fişiere pe dischetă sau pe
calculatorul pe care lucrează. Pentru o astfel de copiere se foloseşte instrumentul ftp, denumit astfel

20
Capitolul 6 – Comenzi Linux
după protocolul pe care îl utilizează (FTP- File Transfer Protocol), adică un protocol de transfer de
fişiere.

Acest protocol este o parte din pachetul de protocoale TCP/IP. Este foarte utilizat pentru
transferul de fişiere între calculatoare aflate într-o reţea eterogenă (calculatoare ce rulează sub
sistem LINUX împreună cu calculatoare ce rulează DOS, Windows). Pe calculatoarele sub LINUX
programul care realizează practic comunicaţia pentru transfer de fişiere este o parte a sistemului de
operare şi se încarcă în faza de iniţializare a sistemului. Pentru calculatoarele ce rulează
DOS/Windows există mai multe produse care oferă acest protocol (şi altele). Cele mai cunoscute
sunt:
NCSA Telnet = programul pe care noi îl folosim în primul rând pentru conectarea calculatoarelor
din reţelele Linux/Windows
FTP PC/TCP al firmei FTP Software = programul pe care noi îl folosim în primul rând pentru
conectarea calculatoarelor din reţelele Windows-Windows, Linux – Windows, Linux – Linux

6.10.1. Deschiderea unei sesiuni de lucru ftp


Pentru folosirea instrumentului ftp trebuie mai întâi să se indice maşina cu care se doreşte să se
schimbe fişiere. Vom referi această maşină prin "maşina de la distanţă". Maşina curentă, pe care ne
aflăm în momentul în care am lansat ftp, o vom numi în cele ce urmează prin "maşina locală".
Prin comanda:
ftp <nume-maşina-de-la-distanţă>
se lansează programul ftp şi se realizează conectarea la maşina de la distanţă. După realizarea
acestei conectări utilizatorul va trebui să introducă numele de login şi parola (password).
Exemplu: conectarea utilizatorului mpopescu pe maşina nessie.cs.ubbcluj.ro, de pe o maşină
oarecare (locală) se face astfel:
c:\>ftp nessie.cs.ubbcluj.ro
Connected to nessie.cs.ubbcluj.ro.
220 nessie FTP server ready.
Name (nessie:mpopescu): mpopescu
331 Password required for mpopescu.
Password:
(introduceţi parola pe care o are utilizatorul, pe ecran nu va
apărea nimic scris, după care apăsaţi tasta ENTER)
230 User mpopescu logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Dacă din cauza unei erori de introducere se obţine un mesaj de tipul "login incorrect" fie se poate
ieşi din ftp cu comanda bye şi se încearcă o nouă conectare, fie se introduce comanda user urmată
de numele de login pentru a restarta procesul de conectare. Se va solicita din nou parola, sesiunea
continuând ca mai sus.
Conexiunea poate deveni imposibilă şi din cauze subiective (introducerea greşită a numelui
calculatorului de la distanţă), sau din cauze obiective (a avut loc o oprire a acestuia). Apar astfel
mesaje precum "unknown host", "host unreachable", "host not responding", "connection timed out".
în aceste cazuri se încearcă conectarea din nou imediat sau după un timp.
După acceptare de către sistemul de la distanţă a numelui de conectare şi a parolei, utilizatorul
poate să înceapă transferul de fişiere. Instrumentul ftp poate transfera fişiere în ambele direcţii,

21
Partea I – Linux
putând aduce fişiere de pe maşina de la distanţă pe maşina de pe care s-a conectat (cu comanda get)
şi putând pune fişiere pe maşina de la distanţă de pe maşina de pe care s-a conectat (cu comanda
put).
Comenzile get şi put au următoarea sintaxă:
ftp>get <fişier sursă> [fişier destinaţie]
ftp>put <fişier sursă> [fişier destinaţie]
unde <fişier sursă> este numele fişierului existent (care se doreşte a fi copiat) şi <fişier destinaţie>
este numele copiei nou create. Dacă numele fişierului destinaţie lipseşte, se consideră acelaşi cu
numele fişierului sursă.
Exemplu : după deschiderea sesiunii ftp, după cum am arătat mai sus, utilizatorul mpopescu poate
să transfere fişierul text1.txt de pe nessie (maşina de la distanţă), pe maşina locală cu comanda:
ftp>get text1.txt
Dacă doreşte transferul de pe maşina locală pe nessie a fişierului news.doc trebuie să introducă
comanda:
ftp>put news.doc
După fiecare transfer programul comunică ce a transferat, cât de mare a fost cantitatea de date
transferată şi rata medie de transfer.

6.10.2. Exploatarea cu ftp a unei maşini aflate la distanţă


Listarea conţinutului unui director de pe maşina de la distanţă se face cu comenzile:
ftp>ls <nume director>
ftp>dir <nume director>
Trecerea dintr-un director în altul pe maşina de la distanţă se face cu comanda:
ftp>cd <nume director>
Listarea conţinutului unui director de pe maşina locală se face cu comenzile:
ftp>!ls <nume director>
ftp>!dir <nume director>
Trecerea dintr-un director în altul pe maşina locală se face cu comanda:
ftp>lcd <nume director>
Observaţie: cu excepţia schimbării de director, toate comenzile cu "!" în faţă se referă şi se
execută pe maşina locală.
Dacă se doreşte transferul fişierelor pe dischetă, într-un anumit director, trebuie dată comanda:
ftp>lcd a:<nume director>
înainte de comenzile get sau put, în caz contrar toate transferurile fiind făcute pe hard disk în
directorul local (iniţial cel din care s-a lansat ftp).

6.10.3. Terminarea sesiunii ftp


Pentru terminarea unei sesiuni ftp se dă comanda:
ftp> bye

6.10.4. Exemple complete de copiere pe dischetă a unui mesaj mail


Folosim programul "pine" (despre comandă şi programul pine veţi afla mai multe în capitolul 7-8)
pentru a scoate mesajul cu subiectul "test" din folderul INBOX şi a-l pune într-un fişier în directorul
curent (directorul de pe maşina de la distanţă) cu numele "test.msg":

22
Capitolul 6 – Comenzi Linux
Succesiunea de comenzi va fi următoarea:
$pine
Apare meniul principal:
? HELP - Get help using Pine
C COMPOSE MESSAGE - Compose and send a message
I FOLDER INDEX - View messages în current folder
L FOLDER LIST - Select a folder to view
A ADDRESS BOOK - Update address book
S SETUP - Configure or update Pine
Q QUIT - Exit the Pine program
Se tastează "L" sau se selectează linia încadrată <CR>
Apare lista de foldere:
INBOX sent-mail saved-messages
Se selectează cuvântul "INBOX" <CR>
Apare lista de mesaje existente:
+ N 4 Oct 12 To: Mihai POPESCU (639) test
Se selectează mesajul cu subiectul "test" şi se tastează "E" pe linia de jos în video invers
apare mesajul
EXPORT: (copy message) to file în home directory:
Se introduce numele fişierului în care se va face copia, în cazul nostru se introduce "test.meg"
Din acest moment în directorul curent (cel de pe maşina de la distanţă din care s-a lansat "pine"
există fişierul "test.msg". Aceasta se poate, constata ieşind din "pine" prin tastarea caracterului "Q"
după care se introduce de la cursor comanda "ls".
Pentru transferul acestui fişier pe dischetă după ce se închide conexiunea cu comanda "exit" sau
"<ALT> X" se deschide o sesiune ftp pe maşina de pe care dorim să copiem fişierul. Să
presupunem că această maşină este hera.
Vom copia fişierul „test.msg” pe dischetă în directorul „exemplu” cu numele „local.txt” cu
următoarea succesiune de comenzi:
$ftp hera
Apare
Connected to hera.ubbcluj.ro.
Name (hera:mpopescu):
Se va introduce numele de login (numele de cont)
Apare
331 Password required for mpopescu.
Password:
Se va introduce parola
Va apare
230 User mpopescu logged in.
ftp>
Se vor da comenzile:
ftp> lcd a:\exemplu
ftp> get test.msg local.txt
Se va închide sesiunea ftp cu comandă:

23
Partea I – Linux
ftp> bye
Va apare
221 Goodbye.
Şi acuma, ce se întâmplă dacă dăm comanda
ftp>?
Dupa afişarea mesajelor referitoare la realizarea conexiunii (se poate cere numele de utilizator şi
eventual parola acestuia), se afişează prompterul specific aplicaţiei:
ftp>
La acest prompter se pot da comenzi. În continuare menţionăm cele mai importante:
get <nume-fişier> [<fişier-local>] transferă fişierul <nume-fişier> de pe maşina-gazdă pe
maşina locală sub numele <fişier-local>
put <fişier-local> [<nume-fişier>] transferă fişierul <fişier-local> de pe maşina locală pe
maşina gazdă sub numele <nume-fişier>
send <fişier-local> [<nume-fişier>] transferă fişierul <fişier-local> de pe maşina locală pe
maşina-gazdă sub numele <nume-fişier>
dir <director-la-distanţă> afişează conţinutul directorului curent de pe maşina pe care
s-a realizat conexiunea
ldir <director-local> afişează conţinutul directorului curent de pe maşina locală
ls afişează conţinutul directorului curent de pe maşina de la
distanţă
lls afişează conţinutul directorului curent de pe maşina locală
cd <director-la-distanţă> schimbă directorul curent pe maşina de la distanţă
lcd <director-local> schimbă directorul curent pe maşina locală
help [comandă] informaţii despre una sau despre toate comenzile lui ftp
bye termină sesiunea
close termină sesiunea şi se întoarce la prompterul înterpretorului
de comenzi
delete <fişier-la-distanţă> şterge <fişier-la-distanţă> aflat pe maşina gazdă
open <gazda> se foloseşte dacă nu s-a deschis o conexiune anterior (s-a
apelat ftp fără numele maşinii gazdă în linia de comandă)

6.10.5. Exerciţii
Obţineţi informaţii despre comenzile:
put, get, mget, mput, help, bye, close, delete, cd.
Explicaţi cum faceţi acest lucru!

6.11. Arhivare
tar [opt] [listfis]
Coamnda tar „lipeşte” mai multe fiîsere la un loc, într-un fişîer arhivă. Nu se face compresia
datelor.
Opţiuni:
-z :compress / uncompress
-r :adauga fis la sf. arhivei

24
Capitolul 6 – Comenzi Linux
-c :scrie la inc.
-x extrage
-t listează conţ. arh.
-v afiş. operaţie
-f specif. nume arhiv. ca fişier următ.
Exemplu:
Arhivare:
tar -c fis1 fis2 -f fisarhiva
Extracţie:
tar -x -f fisarhiva
gzip numearhivă
Comanda gzip face compresia datelor, dar poate lucra cu un singur fişier, nu cu o colecţie de
fişiere. Dacă dorim comprimarea mai multor fişîere într-o singură arhivă, trebuie să le „lipim” cu
tar, apoi să comprimăm cu gzip fişierul rezultat.
Creează arhive .gz; dezarhivare cu opţiunea -d.
Exemplu:
gzip nf
Creează arhiva nf.gz.

6.12. Rularea programelor: multitasking şi sesiuni


Pentru a rula un program, scrieţi-i numele şi apăsaţi Enter, exact cum o făceaţi în DOS. Dacă
programul este în directorul curent, programul va fi rulat. Excepţie: spre deosebire de DOS, în
Linux un program localizat în directorul curent nu va rula decât dacă directorul este inclus în
PATH. Dacă numele fişierului este program , pentru a-l rula tastaţi ./program.
Fiind un sistem multitasking, în Linux se pot rula mai multe programe simultan (de acum le vom
numi procese). Puteţi rula un proces (în foreground) în timp ce altele sunt rulate în fundal (în
background). Mai mult, în Linux puteţi avea mai multe sesiuni (e ca şi cum aţi avea mai multe
calculatoare la un loc!).
Pentru a trece de la o sesiune la alta:
ALT-F1, ALT-F2...
Pentru a deschide o sesiune nouă fără să o părăsiţi pe cea curentă:
$ su -<nume_login>
Exemplu:
Pentru a deschide o sesiune cu drepturi de root:
$ su -root
Pentru a inchide sesiunea curenta:
$ exit
Exemplul de mai sus este referinţa pentru deschiderea contului de root. Acest exemplu va fi foarte
des folosit în exemple din capitolele viitoare!
Pentru a rula un proces (în foreground):
$ nume_program [-switch] [parameteri] [< input] [> output]
Pentru a rula un proces în fundal (background):

25
Partea I – Linux
$ nume_program [-switch][parameteri][< input][> output] & [1] 123
Shell-ul identifică procesul cu un număr de job (ex: [1] ) şi cu PID (număr de identificare al
procesului) (ex: 123)
Pentru a vedea o listă cu procesele pornite şi numărul PID:
$ps -a
Pentru a opri un proces:
$ kill <PID>
Uneori procesele pot fi oprite doar cu una din comenzile:
$ kill -15 <PID>
$ kill -9 <PID>
Shell-ul vă permite să opriţi, definitiv sau temporar, un proces, să-l "trimiteţi" în background, să-l
"aduceţi" din background în foreground. În această situaţie procesele sunt numite job-uri.
Pentru a vedea numărul job-urilor:
$ jobs
Aici job-urile sunt identificate după numărul lor, nu după PID.
Pentru a opri un proces ce rulează în foreground se foloseşte combinaţia de taste (nu dă rezultat
întotdeauna):
CTRL-C
Pentru a opri temporar un proces ce rulează în foreground :
CTRL-Z
Pentru a trimite un proces oprit temporar în fundal (background) (va deveni job):
$ bg <job>
Pentru a aduce un job în foreground:
$ fg <job>
Pentru a opri un job:
$ kill <%job>
unde <job> poate fi: 1, 2, 3, 4,...
Folosind aceste comenzi puteţi arhiva fişiere, puteţi formata un disk, puteţi dezarhiva, toate în
acelaşi timp, iar prompterul va fi tot la dispoziţia dvs pentru a introduce alte comenzi. Incearcaţi
acest lucru în Windows, doar pentru a vedea diferenţa de performanţă. Linux are un mod mai
"inteligent" de a folosi resursele sistemului.

6.13. Rularea programelor pe calculatoare la distanţă


Pentru a rula un program pe un calculator aflat la distanţă (remote computer) al cărui IP este, de
exemplu, remote.qcomputer.edu.
$ telnet remote.computer.edu
Atenţie! Trebuie să aveţi un cont pe acel calculator!
După logare, puteţi porni programul dorit. Dacă sunteţi în X (interfaţa grafică), puteţi rula chiar o
aplicaţie X.
De exemplu:

26
Capitolul 6 – Comenzi Linux
remote.freenet.edu este calculatorul aflat la distanţă, iar local.linux.box este maşina dvs Linux.
Pentru a rula de pe local.linux.box un program X aflat pe remote.freenet.edu trebuie să porniţi
interfaţa X, după care porniţi xterm sau rxvt sau alt emulator de terminal şi tastaţi:
$ xhost +remote.freenet.edu
$ telnet remote.freenet.edu
după logare, tastaţi, la terminalul calculatorului de la distanţă:
$ DISPLAY=local.linux.box:0.0
$ nume_program &
În loc de DISPLAY=local.linux.box:0.0 se poate pune setenv DISPLAY local.linux.box:0.0.
Depinde de shell-ul calculatorului remote.
Acum programul nume_program va porni pe remote.freenet.edu şi va fi afişat pe monitorul
calculatorului dvs.
Observaţie: Nu încercaţi acest lucru pe o conexiune dial-up pentru că este prea lentă pentru a fi
utilizabilă!

6.14. Am nevoie de Windows!


„Echivalentul” Windows-ului este sistemul grafic X11. Diferenţele sunt însă foarte mari:
a. interfaţa Windows arată şi se comportă la fel pe toate calculatoarele în timp ce X11 este mult
mai configurabil. Pentru Windows au apărut câteva programe care modifică interfaţa grafică
(Desktop X, Window Blinds , Talisman) dar, cu toate că prin folosirea lor interfaţa grafică este mai
atrăgătoare, în general sunt mari consumatoare de resurse şi incompatibile cu anumite aplicaţii.
Pentru X11 aspectul general este dat de o componentă numită window manager. La ora actuală
există o mulţime de window managere (foarte configurabile) şi de aceea e greu să găsiţi două
sisteme Linux cu acelaşi aspect al interfeţei grafice. Alegerea window managerului depinde numai
de preferinţele utilizatorului. Cele mai răspândite sunt: fvwm2, afterstep, blackbox, xfce,
enlightenment, icewm, window maker (uşor de configurat, se pot adăuga teme şi folosesc destul de
puţină memorie ram), Gnome şi KDE (la fel de uşor de utilizat ca şi Windows-ul, aspect grafic
îmbogăţit cu numeroase teme; cerinţele hardware sunt pe măsură).
b. aplicaţiile X sunt scrise folosind biblioteci speciale ("widget sets"). Datorită numărului mare de
biblioteci disponibile, aplicaţiile pot arăta diferit. Unele folosesc bibliotecile Athena (au aspect 2D;
ex: xdvi, xman, xcalc), Motiv (ex: netscape), altele folosesc Tcl/Tk, XForms, Qt (pe care se bazează
KDE), Gtk (Gnome)...
c. "drag and drop" este utilizabil doar în aplicaţiile care-l suportă.
d. dacă nu ai un mouse cu 3 butoane, prin apăsarea celor două este emulat al treilea buton, funcţie
care aduce noi opţiuni utile.
Pentru a economisi memorie, ar fi mai bine ca aplicaţiile să folosească aceleaşi biblioteci, lucru
greu de realizat în practică. Astfel au apărut proiectele Gnome şi K Desktop Environment care
înglobează aplicaţii bazate pe bibliotecile gtk, respectiv Qt (aplicaţiile se comportă şi conlucrează
coerent şi au acelaşi aspect grafic).

6.16. Optimizarea sistemului


6.16.1. Fişiere de iniţializare a sistemului
În DOS, două fişiere importante sunt autoexec.bat şi config.sys, folosite în timpul procesului de
boot pentru iniţializarea sistemului, setarea variabilelor sistem (ex: PATH şi FILES) sau pentru
lansarea unor programe. În Linux există mai multe fişiere de iniţializare pe care nu e bine să le
modificaţi decât dacă sunteţi bine documentat. Iată două din fişierele de iniţializare:

27
Partea I – Linux
/etc/inittab
/etc/rc.d/*
Observaţie: NU le modificaţi decât dacă ştiţi exact ce aveţi de făcut !
Dacă vreţi să setaţi $PATH şi alte variabile de sistem, să schimbaţi mesajele de login, pre-login,
post-login sau să porniţi automat un program (startup :-) trebuie să aruncaţi o privire în fişierele
următoare:
/etc/issue seteaza mesajul pre-login
/etc/motd setează mesajul post-login
/etc/profile setează $PATH şi alte variabile
/etc/bashrc setează alias-uri şi funcţii
/home/user_1/.bashrc setează alias-urile şi funcţiile utilizatorului user_1
/home/user_1/.bash_profile setează mediul şi porneşte programe
/home/user_1/.profile setează mediul şi porneşte programe
Exemplu:
Iată conţinutul posibil al fişierului .profile
# acesta este un comentariu
echo Mediu:
printenv | less # echivalentul comenzii SET din DOS
alias d='ls -l' # uşor de înţeles ce este alias
alias up='cd..'
echo "Calea este "$PATH
echo "Astăzi este `date`"
echo "Hello, "$LOGNAME
# ce urmează este o funcţie shell
ctgz() # listează conţinutul unei arhive .tar.gz
{
for file în $*
do
gzip -dc ${file} | tar tf –
done
}
# sfârşitul fişierului .profile
$PATH şi $LOGNAME sunt variabile de sistem. Pentru mai multe informaţii consultaţi manualul
bash (man bash).

6.16.2. Fişiere de iniţializare a programelor


În Linux aproape totul poate fi modificat pentru a servi mai bine nevoilor proprii. Majoritatea
programelor au unul sau mai multe fişiere de iniţializare care pot fi modificate. De obicei un fişier
de iniţializare are forma: .nume_programrc şi se găseşte în directorul dvs home. Primele pe care le
veţi putea modifica sunt:
.inputrc folosit de bash
.xinitrc folosit de startx pentru a iniţializa X Window System
.fvwm2rc folosit de window manager-ul fvwm2
.Xdefault folosit de emulatorul de terminal rxvt
Lista poate continua. Înainte de a face modificări este recomandat să vă uitati şi prin manualul
programului.

28
Capitolul 6 – Comenzi Linux
6.16.3. Mesaje kernel
Logaţi-vă ca root şi analizaţi fişierele /var/adm/messages sau /var/log/messages pentru a vedea
mesajele transmise de kernel, inclusiv cele din timpul boot-ării. Poate fi folosită comanda dmesg.

6.16. Ce e bine să stiţi?


6.16.1. Utilizarea tar & gzip
În UNIX/Linux există un număr mare de aplicaţii destinate arhivării şi comprimării fişierelor. Cel
mai folosit pentru a arhiva (NU a comprima!) este tar.
Pentru a face o arhivă nouă:
$ tar -cvf <nume_arhiva.tar> <fisier> [fisier...]
Pentru a extrage fişiere dintr-o arhivă:
$ tar -xpvf <nume_arhiva.tar> [fisier...]
Pentru a lista conţinutul unei arhive:
$ tar -tf <nume_arhiva.tar> | less
Fişierele le puteţi comprima cu compress, care este atât de bătrân (vine din era UNIX) încât nu
mai este folosit, sau se foloseşte cu mult mai performantul gzip.
Pentru a comprima un fişier:
$ gzip <fisier>
sau
$ compress <file>
Fişierele cu extensia .gz sunt comprimate cu gzip, iar cele cu extensia .Z cu compress.
Pentru a decomprima:
$ gzip -d <fisier.gz>
sau
$ compress -d <fisier.Z>
Fişierele cu extensia .tar.gz sau .tgz (arhivate cu tar şi comprimate cu gzip) sunt răspândite în
lumea Linux la fel ca arhivele zip în lumea Windows.
Pentru a lista conţinutul unei arhive .tar.gz:
$ gzip -dc <fisier.tar.gz> | tar tf -| less
sau
$ tar -ztf <fisier.tar.gz> | less
De asemenea sunt disponibile în Linux şi unace, rar/unrar, zip/unzip şi bzip2 (care este folosit din
ce în ce mai des).

6.16.2. Instalarea aplicaţiilor


Cel care instalează/dezinstalează programe este administratorul sistemului (root). Unele aplicaţii
linux sunt distribuite ca arhive .tar.gz sau .tgz special pregătite pentru a putea fi decomprimate prin
comanda:
$ gzip -dc <fisier.tar.gz> |tar xvf –
sau
$ tar -zxf <fisier.tar.gz>

29
Partea I – Linux
Fişierele vor fi decomprimate în directoarele care vor fi create automat.
Utilizatorii de Slackware pot folosi pentru instalarea aplicaţiilor programul pkgtool. Un alt tip de
ahive sunt cele deb, prezente în toate distribuţiile Debian. Unul dintre cele mai bune programe de
instalare a aplicaţiilor este rpm (folosit pentru instalarea aplicaţiilor gata compilate), prezent în
majoritatea distribuţiilor Linux datorită celor de la Red Hat. Combinat cu un program „front end”
(ex: gnorpm , kpackage), arhivele .rpm devin uşor de folosit, lucru care vă va face viaţa mai uşoară.

6.17. Concluzii
Aceasta este doar o introducere în Linux, deci cunoştinţele acumulate sunt minime. Pentru a putea
stăpâni pe deplin sistemul, este nevoie de exerciţiu sau poate de câteva capitole citite în plus. Un
sfat bun ar fi să instalaţi cât mai multe aplicaţii şi să începeţi să lucraţi intens cu ele.

6.18. Exerciţii
- Listaţi conţinutul lui /dev, pe mai multe ecrane, folosind ls şi more. Apoi listaţi
conţinutul aceluiaşi subdirector, dar nu pe ecran, ci în fişierul lista, care va fi creat în
subdirectorul tmp din rădăcină. Afişaţi pe ecran conţinutul lui lista, folosind cat, more şi
apoi less.
- Copiaţi fişierul /etc/mtab în /tmp, cu numele nemontat. Listaţi conţinutul lui nemontat
pe ecran, apoi adăugaţi-i conţinutul la sfârşitul fişierului lista. Afişaţi lista pe ecran.
- Creaţi subdirectorul dirmeu, dirmeu2 şi dirmeu3 în /tmp, cu o singură utilizare a
comenzii de creare directoare. Mai creaţi şi un subdirector cu numele „dirmeu dirmeu2
dirmeu3”, incluzând şi spaţiile în nume. Listaţi conţinutul subdirectorului /tmp.
Atenţie: când un fişier are în nume spaţii, includeţi numele fişierului între ghilimele, pentru că
sistemul nu poate şti dacă este vorba de un singur nume cu spaţii sau mai multe nume
separate cu spaţii. Aproape orice comandă Unix poate lucra cu nume cu spaţii.
- Ştergeţi subdirectoarele dirmeu2, dirmeu3 şi „dirmeu dirmeu2 dirmeu3”, cu o
singură comandă. Mutaţi fişierele lista şi nemontat în directorul dirmeu. Intraţi în
dirmeu. Redenumiţi lista în „fisierul meu drag . de acasa”; includeţi spaţiile şi punctul
în nume! Listaţi conţinutul subdirectorului. Ştergeţi fişierul „fisierul meu drag . de
acasa”.
Observaţie: s-ar putea ca muLinux să nu vă permită redenumirea fişierului în „fisierul meu
drag . de acasa”. În acest caz, şi redenumiţi-l „listamea”. S-ar putea să trebuiască să-l creaţi
din nou înainte.
- Montaţi o dischetă în /mnt. Comparaţi conţinutul lui /etc/mtab şi nemontat din
/tmp/dirmeu întâi cu cmp, apoi cu diff. Observaţi diferenţele. Copiaţi /etc/mtab în
/tmp/dirmeu sub numele montat. Demontaţi discheta. Listaţi conţinutul directorului
/tmp/dirmeu. Ar trebui să aveţi fişierele nemontat şi montat acolo. Ştergeţi ecranul.
Observaţie: este posibil să nu funcţioneze comanda „diff” sub muLinux. Rămâneţi la „cmp”.
- Încercaţi să determinaţi tipul fişierului nemontat cu comanda file.
- Mai creaţi o copie a fişierului nemontat, cu numele fis. Folosind grep, căutaţi secvenţa
de text „rw” în toate fişierele din subdirectorul curent. Căutaţi acum secvenţa „fd0”.
Observaţi rezultatele. Ştergeţi fis.
- Fiind în subdirectorul dirmeu, daţi comanda „cat montat nemontat | sort > sortat”. Ce
face această comandă? Dar dacă omiteţi „> sortat” de la sfârşit? Afişaţi conţinutul lui
sortat. Ştergeţi fişierul sortat.
- Căutaţi în subdirectorul /tmp toate fişierele ale căror nume se termină în „ontat”.
Folosiţi comanda find.

30
Capitolul 6 – Comenzi Linux
- Căutaţi din nou, folosind comanda „find /tmp -name *ontat | grep nemontat”.
Explicaţi ce s-a afişat. Încercaţi aceeaşi comandă, înlocuind „*” cu „?”, sau lăsând doar
„ontat”, fără asterisc sau semnul întrebării. Folosiţi din nou această comandă,
redirectând ieşirea într-un fişier cu numele test. Afişaţi conţinutul lui test.
Observaţie: este posibil ca „find” din muLinux să se comporte puţin diferit faţă de „find” din
RedHat Linux 7.2.
- Arhivaţi cu tar fişierele nemontat şi montat în arhiva arhiva. Apoi comprimaţi cu gzip.
Creaţi un subdirector d. Mutaţi acolo arhiva şi decomprimaţi, apoi dezarhivaţi. Verificaţi
dacă fişierele sunt acolo.
- Ştergeţi toate fişierele din /tmp/dirmeu. Ştergeţi şi subdirectorul dirmeu.
- Afişaţi estimarea mărimii subdirectorului tmp cu comanda „du -h /tmp”. Ce efect are
opţiunea „-h”? Aflaţi cu info sau man.
Observaţie:se poate ca varianta de „du” de sub muLinux să nu suporte opţiunea „-h”, şi să nu
aibă nici pagină de informaţii sau manual. Încercaţi opţiunea „-k”.
- Porniţi Midnight Commander. Treceţi pe alt terminal, de exemplu terminalul 2 (apăsaţi
Alt-F2 simultan, intraţi cu login şi parola). Afişaţi utilizatorii din sistem cu comanda
adecvată.
Observaţie: dacă nu aveţi „Midnight Commander” instalat, porniţi in locul lui un „find / -
name abracadabra”. Această comandă va ţine Linux ocupat o vreme, deoarece el încearcă să
caute fişierul „abracadabra” recursiv în toate subdirectoarele din rădăcină.
- Afişaţi lista proceselor dvs. de pe toate terminalele. Observaţi codul (id-ul) procesului
Midnight Commander. Ucideţi-l fără milă, eventual cu opţiunea „-9” Treceţi pe
terminalul anterior (unde aţi pornit Midnight Commander); observaţi ecranul.
- Afişaţi spaţiul liber de pe sistemul de fişiere hda1. Folosiţi opţiunea -h. Încercaţi şi fără
nici o opţiune.

31
Partea I – Linux

32

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