Sunteți pe pagina 1din 7

10/15/2008

Cuprins

• Generalităţi
• Comenzi pentru fişiere şi cataloage
4. Comenzi UNIX • Comenzi pentru operaţii asupra proceselor
• Comenzi de informare şi administrare
• Comenzi pentru prelucrarea fişierelor text
• Comezi pentru operaţii asupra perifericelor
• Comenzi diverse

4.1. Generalităţi 4.2.1. Comenzi pentru operaţii asupra cataloagelor (1)


• Comenzile reprezintă interfaţa utilizatorului cu SO şi sunt programe • Afişarea numelui catalogului curent:
care se lansează în execuţie cu un program special, interpretorul de $ pwd
/home/staff/ionel/test
comenzi • Afişarea conţinutului unui catalog:
• Există diferite interpretoare de comenzi: sh, csh(C-shell), ksh (Korn ]
ls [opt][nume fisiere/cataloage
shell), bash (born again shell), tcsh, zsh, etc. exemple:
• Interpretoarele se deosebesc prin facilităţile de programare şi de $ ls

interactivitate oferite bin charint.c dc_command_line.c dce.c

• Sintaxa generală a unei comenzi UNIX: $ ls -l


total 20

comandă optiuni parametri drwxr-xr-x


-rw-r--r--
2
1
ionel
ionel
staff
staff
4096
92
Oct
Jul
17 09:40 bin
24 2002 charint.c

unde: -rw-r--r--
-rw-r--r--
1
1
ionel
ionel
staff
staff
3956
4738
Jul
Jul
26 2002 dc_command_line.c
26 2002 dce.c

comandă – numele fişierului executabil care conţine programul $ ls -ali test

optiuni – particularizează modul de execuţie a comenzii total 28


1237895 drwxr-xr-x 3 ionel staff 4096 Oct 17 09:40 .

parametri – indică obiectele asupra cărora se execută comanda 32577 drwx--x--x


1661491 drwxr-xr-x
30
2
ionel
ionel
staff
staff
4096
4096
Sep
Oct
28 13:55 ..
17 09:40 bin

• Majoritatea comenzilor oferă ajutor dacă sunt apelate eronat. Ex.: 1237896 -rw-r--r--
1237900 -rw-r--r--
1
1
ionel
ionel
staff
staff
92
3956
Jul
Jul
24 2002 charint.c
26 2002 dc_command_line.c

rm 1237898 -rw-r--r-- 1 ionel staff 4738 Jul 26 2002 dce.c

produce: • Schimbarea catalogului curent


syntax: rm –[rf] file(s) cd [ nume catalog]

1
10/15/2008

4.2.2. Comenzi pentru operaţii cu fişiere(1)


Comenzi pentru operaţii asupra cataloagelor (2)
• Listarea conţinutului unui fişier:
cat [optiuni] [nume-fisier]
• Ştergerea unei / unor intrări de catalog Opţiuni:
rm [optiuni] nume_de_intrări -n precede fiecare linie cu numărul de ordine
Opţiuni: -s substituie linii goale consecutive cu una singură
-i utilizatorul este întrebat înainte de ştergere -v afişează în formă vizibilă şi caracterele netipăribile
-r sau –R ştergere recursivă Altă comandă de afişare: more
Pentru specificarea mai multor intrări se pot folosi expresii regulate. • Copierea unui fişier:
M t
Metacaractere:t * ? […] \m cp [optiuni] nume1 nume2
Caz special: ştergerea fişierelor ascunse nume1 şi nume2 pot fi denumiri de fişiere sau de directoare; rezultatul
Obs.: fişierul fizic se şterge numai când numărul de legături ajunge 0 comenzii depinde de natura numelor
• Ştergerea unui catalog: Dacă ambele nume sunt directoare, trebuie să fie prezentă opţiunea –R
rmdir [optiuni] nume_catalog sau –r (copiere recursivă), în nume2 se copiază subarborele cu
nume1 ca rădăcină
• Crearea unui catalog:
mkdir [-p] nume_catalog Altă opţiune: -i cere confirmare de la utilizator dacă s-ar suprascrie un
fişier
Comanda creează fişier fizic nou

Comenzi pentru operaţii cu fişiere(2) 4.3. Comenzi pentru operaţii asupra proceselor(1)
• Listarea proceselor active în sistem:
• Schimbarea numelui (poziţiei) unui fişier: ps [optiuni]
mv [optiuni] sursă destinatie Exemplu fără opţiuni:
Dacă destinatie este director se creează acolo o intrare cu numele sursă $ ps
PID TTY TIME CMD
Comanda nu poate transfera între partiţii
20154 pts/3 00:00:00 bash
Pentru evitarea suprascrierii destinaţiei se foloseşte opţiunea -i 4569 pts/3 00:00:00 ps
• Crearea unei noi legături pentru un fişier: Opţiunile (şi modul de afişare) diferă între versiunile de UNIX. Principalele opţiuni la Linux sunt:
ln [–fs] nume-cale [legătură] -a afişează informaţii despre toate procesele din sistem
-l determină o afişare mai extinsă ( cu mai multe informaţii)
sau: -u afişare extinsă, dar diferită de –l.
ln –fs
fs nume-cale
nume cale ... catalog -e afişează şi ambianţa de execuţie
Prima formă fără legătură creează în directorul curent o intrare cu numele Exemple:
ultimei componente din nume-cale $ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
A doua formă creează în catalog intrări cu numele date de ultimele 100 S 2000 22769 22748 0 69 0 - 606 wait4 pts/0 00:00:00 bash
componente din lista de nume-cale 000 R 2000 22810 22769 0 76 0 - 749 - pts/0 00:00:00 ps
Opţiunea –s creează legături simbolice, care sunt fişiere text, cu conţinut nume-
cale şi pot traversa partiţii (sisteme de fişiere) $ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Fără –s nu se creează fişier fizic nou, doar legături ionel 22769 0.6 0.5 2424 1312 pts/0 S 14:24 0:00 -bash
Opţiunea –f permite superutilizatorului să creeze legături fixe (fără –s) spre ionel 22819 0.0 0.2 2548 692 pts/0 R 14:24 0:00 ps -u
directoare

2
10/15/2008

Comenzi pentru operaţii asupra proceselor(2) Comenzi pentru operaţii asupra proceselor(3)

• Terminarea forţată a execuţiei unui proces: • Listarea dinamică a proceselor din sistem – comanda top
kill [optiuni] [pid]...
Argumentul pid este obligatoriu, cu excepţia cazului când se foloseşte opţiunea –l
Comanda trimite un semnal, identificat prin valoarea opţiunii, proceselor specificate prin lista de pid
5:23pm up 17 days, 3:07, 1 user, load average: 0.08, 0.12, 0.07
Semnalele posibile: 105 processes: 104 sleeping, 1 running, 0 zombie, 0 stopped
$ kill -l CPU0 states: 0.1% user, 0.1% system, 0.0% nice, 99.3% idle
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL CPU1 states: 0.1% user, 1.2% system, 0.0% nice, 98.1% idle
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE Mem: 255684K av, 252040K used, 3644K free, 0K shrd, 21796K buff
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 Swap: 1054728K av, 195728K used, 859000K free 47836K cached
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 6110 ionel 19 0 1076 1076 824 R 0.3 0.4 0:00 top
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 10 root 10 0 0 0 0 SW 0.1 0.0 1:31 kupdated
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 11 root 14 0 0 0 0 SW 0.1 0.0 44:20 kjournald
30) SIGPWR 31) SIGSYS 151 root 11 0 0 0 0 SW 0.1 0.0 29:55 kjournald
• Listarea activităţii diverşilor utilizatori: 686 named 14 0 38792 35M 1152 S 0.1 14.2 73:37 named
687 named 11 0 38792 35M 1152 S 0.1 14.2 73:16 named
w [optiuni] [utilizator]
1 root 8 0 472 436 412 S 0.0 0.1 0:31 init
Exemplu: 2 root 9 0 0 0 0 SW 0.0 0.0 0:18 keventd
$ w 3 root 19 19 0 0 0 SWN 0.0 0.0 0:28 ksoftirqd_CPU0
8:12am up 10 day(s), 21 min(s), 2 users, load average: 0.09, 0.09, 0.11 4 root 19 19 0 0 0 SWN 0.0 0.0 0:25 ksoftirqd_CPU1
User tty login@ idle JCPU PCPU what 5 root 9 0 0 0 0 SW 0.0 0.0 23:50 kswapd
jdays pts/3 Fri 1pm 14:14 8 pine
ijurca2 pts/1 8:12am w

Comenzi de informare şi administrare(2)


4.4. Comenzi de informare şi administrare(1)
• Identitatea calculatoarelor din reţea:

• Afişarea datei şi orei curente: $ hostname


$ date bigfoot
Sat Oct 20 17:31:37 EEST 2007
$ hostid
Forma date yymmddhhmm este permisă numai superutilizatorului
e2c10d0c
• Afişarea utilizatorilor aflaţi momentan în sesiune: $ domainname
$ who
jdays pts/3 Oct 19 13:34 (131.171.55.175) (none)
ijurca2 pts/2 Oct 20 10:34 (dyn-89.136.42.126.tm.upcnet.ro)
abardi pts/1 Oct 20 09:42 (c-68-34-51-42.hsd1.md.comcast.net)
sau • Comenzile mount/umount
users
jdays ijurca2 abardi newuser
• Afişarea utilizatorilor recenţi ai sistemului: Ca şi comandă de informare:
$ last -3 console $ mount
system console Wed Oct 10 07:58 - 08:28 (00:29) /dev/hda2 on / type ext3 (rw)
root console Wed Feb 28 08:27 - 08:30 (00:02)
root console Wed Feb 28 08:10 - 08:11 (00:01)
none on /proc type proc (rw)
$ last -3 none on /dev/pts type devpts (rw,gid=5,mode=620)
tsands pts/4 208-59-122-24.c3 Sat Oct 20 10:38 still logged in /dev/hda7 on /home/staff type ext3 (rw,quota,grpquota)
chgpass pts/4 208-59-122-24.c3 Sat Oct 20 10:37 - 10:37 (00:00)
newuser pts/4 208-59-122-24.c3 Sat Oct 20 10:36 - 10:36 (00:00) /dev/hdc2 on /home/stud type ext3 (rw,quota,grpquota)
$ last -2 reboot /dev/hda6 on /opt type ext3 (rw)
reboot system boot Wed Oct 10 07:51
reboot system boot Wed Feb 28 08:24 Comanda cu argumente:
mount [-fnrsvw] [-t vfstype] [-o options] device dir
poate fi folosită numai de superutilizator. device trebuie să fie numele unei partiţii, iar dir este un
nume de director
Comanda: umount [-dflnrv] dir | device [...] este rezervată tot superutilizatorului.

3
10/15/2008

Comenzi de informare şi administrare(3) Comenzi de informare şi administrare(4)


• Afişarea spaţiului liber/ocupat într-un catalog
du [–s] [–a] [nume-fisier…]
-a generează câte o linie pentru fiecare fişier
/ -s afişează numai totalul general
Fără opţiuni se generează totalul numai pentru directoare
Fără argumente se consideră directorul curent
Spaţiul unui fişier cu legături multiple e luat în considerare o singură dată
Exemplu:
etc usr home $ ls -li test
total 28
/ 1661491 drwxr-xr-x 2 ionel staff 4096 Oct 17 09:40 bin
1237896 -rw-r--r-- 1 ionel staff 92 Jul 24 2002 charint.c
1237900 -rw-r--r-- 1 ionel staff 3956 Jul 26 2002 commandline.c
1237898 -rw-r--r-- 2 ionel staff 4738 Jul 26 2002 dce.c
mountt /dev/sd0h
/d / d0h /home
/h 1237898 -rw-r--r-- 2 ionel staff 4738 Jul 26 2002 dcelink.c
etc usr home $ du -a test
4 test/charint.c
4 test/bin
/ 8
4
test/dce.c
test/commandline.c
24 test
• Afişarea spaţiului liber/ocupat într-un sistem de fişiere:
df [-a] [-i] [-t type] [filesystem …] [filename…]
Exemplu:
staff stud guests $ df
staff stud guests Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda2 3028108 672648 2201640 24% /
/dev/hda7 16128636 7938340 8190296 50% /home/staff
/dev/hdc2 34269232 8526844 25742388 25% /home/stud
/dev/hda6 2016016 118752 1876784 6% /opt

Comenzi de informare şi administrare(5) 4.5. Comenzi pentru prelucrarea fişierelor text(1)

• Afişarea primelor linii dintr-un fişier:


• Controlul drepturilor de acces la un fişier: head [-n] [filename ...]
-n precizează numărul de linii afişate (implicit 10)
chmod [–fR] mode filename Dacă sunt mai multe fişiere, numele fiecăruia e precedat de:
Modul se poate specifica numeric sau simbolic. === > filename < ===
Numeric: 3 cifre octale, pentru 3 categorii de utilizatori. A patra cifră octală (se scrie prima) corespunde
cu setuid, setgid, sticky. Ex.: 755 este echivalent cu rwxr-xr-x, iar 4644 este echivalent cu • Afişarea ultimei porţiuni dintr-un fişier:
rwSr—r– adică are poziţionat setuid. tail +|-number[lbc][rf][filename]
Pentru modul simbolic: Se referă întotdeauna la un singur fişier
[cine] op drept [opt drept ...] Cu semnul + poziţia de început a afişării se ia relativ la începutul fişierului
cine este o combinaţie de u g o a Opţiunea
pţ f ((follow)) duce comanda în ciclu infinit,, arată modificarea ultimei p
părţi
ţ a fişierului
ş
op poate fi: + - = l b c indică unitatea de măsură: linie, bloc, caracter
drept poate fi: r w x s(setuid) t(sticky) r determină afişarea în ordine inversă (începe cu ultima linie) – nu este acceptată în toate distribuţiile
Opţiunile: -R recursiv, -f forţează, adică suprimă mesajele de eroare când nu se poate schimba • Determinarea numărului de linii, cuvinte şi caractere dintr-un fişier:
modul
wc [–lwc] [filename ...]
Exemplu:
exemplu:
-rw-r--r-- 1 ionel staff 92 Jul 24 2002 charint.c
$ wc *.c
după: 6 16 92 charint.c
chmod u+s charint.c 218 552 3956 dc-command-line.c
devine: 239 617 4738 dce.c
-rwSr--r-- 1 ionel staff 92 Jul 24 2002 charint.c
239 617 4738 dcelink.c
702 1802 13524 total
• Modificarea proprietarului unui fişier (permisă numai superutilizatorului) :
chown [–fHR] owner[ group] filename ...

4
10/15/2008

Comenzi pentru prelucrarea fişierelor text(2) Editoare pentru fişiere text(1)


• Comanda sed
• Sortarea conţinutului fişierelor text: sed [–n] [–e] command file(s)
sed [–n] –f scriptfile file(s)
sed este prescurtat de la “stream editor”; nu este interactiv; primeşte operaţia (command) în linia de
sort [–bdfiMnr] [–tc] [sort-field] [–cmu] [–o output-file] comandă şi fişierul asupra căruia se execută
[–T directory] [–y kmem] [–z recsz] [filename ...] Rezultatul se trimite implicit în fişierul standard de ieşire
Forma sortată (în sens crescător) este afişată implicit în fişierul standard de -n suprimă ieşirea; se afişează numai liniile specificate cu comanda p
intrare, fişierul prelucrat nu se modifică. Opţiunea –o permite specificarea -e precizează că următorul argument este o comandă; se foloseşte când se specifică mai multe operaţii
altui fişier de ieşire în aceeaşi linie
-f următorul argument este numele unui fişier care conţine comenzi de editare
Sortarea se face folosind implicit toate caracterele liniei. De obicei liniile sunt Comenzile de editare au sintaxa:
organizate în câmpuri, opţiunea –t permite specificarea caracterului [address[,address]][!]command [arguments]
separator de câmp (c) (c), implicit fiind spaţiile albe.
albe Prin sort field se indică
sort-field Fiecare comandă se aplică pe rând fiecărei linii selectate din fişierul dat ca intrare
după ce câmp se face sortarea. Este un număr întreg precedat de +(câmpul Dacă lipseşte partea de adresă, se selectează toate liniile
de început) sau – (câmpul de sfârşit) Adresele se specifică prin tipare. Exemple:
Opţiunea –n cere ca valoarea câmpului să fie interpretată numeric, nu ca şir de 1, 30 toate liniile de la 1 la 30
caractere /^$/ toate liniile goale
Opţiunea –r determină sortarea în ordine descrescătoare 1, /^$/ liniile de la începutul fişierului până la prima goală
/SAVE/! liniile care nu conţin SAVE
Opţiunea –u determină reţinerea în rezultat a unei singure linii dintre mai multe Comanda cea mai utilizată: substituţia, cu sintaxa:
identice s/pattern/replacement/[flags]
Exemplu: sortarea fişierului de parole după valoarea numerică a UID: Pt. pattern se folosesc expresii regulate în care * redă orice şir, iar . orice caracter. Fanioane:
# sort –t: +2n -3 –o newpasswd /etc/passwd g (global) se aplică substituţia la toate apariţile tiparului în linia curentă
n înlocuieşte a n-a apariţie a tiparului
p tipăreşte linia dacă s-a produs o înlocuire

Căutarea de tipare şi editarea de rapoarte – awk


Editoare pentru fişiere text(2) (1)
Exemple de comenzi s: • awk este un editor programabil care poate interpreta o secvenţă (script) de comenzi de
sed s/Unix/UNIX/g czi.tex editare. Sintaxa:
sed s/^$/”Linie goala”/ fisier.txt awk [-f progfile] [-F c] [ ' prog '] [filename...]
Alte comenzi ale sed: Un program awk conţine o secvenţă principală care se aplică fiecărei linii din fişierul text şi,
eventual, două rutine care se execută una înainte de prelucrarea unui fişier text şi
d ştergerea liniilor adresate cealaltă după terminarea prelucrării
a\ adăugarea de text după o linie Progamul se specifică fie într-un fişier cu numele dat prin opţiunea –f, fie direct în linia de
i\ inserarea de text în faţa unei linii comandă, între apostroafe
O instrucţiune de program are forma:
• Comanda grep
tipar {procedura}
grep
g p [options]regexp
p g p [file(s)]
Pentru tipar se pot folosi formele:
Sintaxa expresiilor regulate este la fel ca şi la sed /expresie regulată/
Se afişează în fişierul standard de ieşire liniile care conţin un şir ce corespunde expresie relatională
expresiei regulate expresie de coresp. de tipare
Opţiuni: BEGIN
-c se afişează numai numărul liniilor ce corespund tiparului END
-i ignoră deosebirea între litere mari şi mici la căutarea după tipar procedura constă din una sau mai multe comenzi, funcţii sau atribuiri de variabile,
-v afişează liniile ce nu corespund expresiei regulate separate de ; sau newline
Există construcţii pentru controlul fluxului comenzilor:
-n afişează liniile însoţite de numărul de ordine în fişier if(condition) command [else] [command]
Exemplu tipic: while ( condition ) command
do body while expr
ps aux | grep netscape for (i=lower; i<=upper; i++) command
Există variante mai extinse ale comenzii: egrep şi fgrep for (item in array) command

5
10/15/2008

Căutarea de tipare şi editarea de rapoarte – awk


4.6. Comenzi pentru operaţii asupra perifericelor(1)
(2)
• Conversia şi copierea fişierelor cu diferite formate:
Se pot introduce comentarii în programe, prin linii care încep cu #
dd [option=value]
Liniile din fişierele prelucrate se consideră că au structură identică, constând din câmpuri if=name specificarea sursei (fişier de intrare)
separate prin caracterele specificate în opţiunea –F (implicit sunt spaţiile albe)
of=name specificarea fişierului de ieşire
Câmpurile pot fi referite în forma: $1 primul, $2 al doilea, etc. $0 desemnează întreaga ibs=n dimensiunea de bloc la intrare
linie obs=n dimensiunea de bloc la ieşire
awk dispune de o serie de variabile interne predefinite, între care: files=n copie n fişiere de intrare (pt. benzi)
FS separatorii de câmpuri count=n copie numai n înregistrări din intrare
NF numărul de câmpuri Se poate folosi şi cp în anumite situaţii, ex.:
NR numărul de ordine al liniei curente cp zImage /dev/fd0
FILENAME numele fişierului curent • Arhivarea şi restaurarea fişierelor
tar [-] c|d|r|t|u|x[bBefFhilmopvwxXzZ014578] [tarfile] [blocksize] [exclude-
Câteva funcţii predefinite: file] [-I include-file] filename … -C directory filename …
print printf getline close(file) Operaţii (funcţii, acţiuni):
Exemple: c creează o nouă arhivă
a) Numărarea liniilor goale dintr-un text: d verifică diferenţele între arhivă şi un sistem de fişiere
/^$/ { print x+=1 } r adaugă fişiere la sfârşitul arhivei
b) Numărarea liniilor goale cu afişare numai la final: t listează conţinutul arhivei
u actualizează arhiva (adaugă fişiere care sunt mai noi decât în arhivă)
/^$/ { ++x}
x extrage fişierele din arhivă
END { print x } Câteva opţiuni(modificatori de acţiune):
c) Tipărirea în ordine inversă a câmpurilor: f argumentul următor este numele arhivei
{ for ( i= NF; i>0; --i) print $i } v verbose – se afişează numele fiecărui fişier prelucrat
Există variante mai avansate ale comenzii: nawk şi gawk, care permit, între altele, lucrul w wait – aşteaptă confirmare de la utilizator pentru fiecare acţiune
cu tablouri asociative z produce şi comprimarea / decomprimarea cu gzip

Comenzi pentru operaţii asupra perifericelor(2) 4.7. Comenzi diverse(1)


Exemple de utilizare a tar: • Comprimarea/decomprimarea fişierelor
a) Crearea unei arhive comprimate cu fişierele sursă C din directorul curent: compress [-cvf] [-b bits] [filename ...]
tar cvzf tarCz *.c uncompress [-cv] [filename ...]
b) Extragerea în directorul curent a fişierelor dintr-o arhivă comprimată: zcat [filename ...]
tar xvzf tarCz La comprimare fişierele date se înlocuiesc cu fişiere cu acelaşi nume şi sufix .Z (cu –c nu
se afectează fişierele originale, rezultatul se trimite în fişierul standard de ieşire –
• Crearea unui sistem de fişiere acelaşi efect îl are zcat)
mkfs [-V] [-t type] [fs-options] filesys [blocks] Factorul de comprimare este controlat prin –b, cu valori între 9 şi 16 (implicit 16)
-V verbose (este implicită) afişează detalii despre sistemul de fişiere creat Comenzi de comprimare/decomprimare mai perfecţionate: gzip/gunzip,
-t specifică tipul de sistem de fişiere creat bzip2/bunzip2
Posibile opţiuni: • Căutarea fişierelor după nume
-N numărul de noduri index dorit find pathname-list expression
-b dimensiunea de bloc dorită Comanda caută recursiv pornind de la fiecare nume de cale din pathname-list fişiere
blocks dimensiunea dorită pentru sistemul de fişiere(implicit toată partiţia) care corespund cu expression. Nu se traversează legăturile simbolice. Exemple
filesys este denumirea partiţiei pe care se creează sistemul pentru expression:
Exemplu: crearea pe un disc flexibil a unui sistem de fişiere de tipul ext2 cu blocuri de -name filename are valoarea true dacă argumentul fişier curent corespunde cu
2kocteţi, cu numai 64 i-noduri şi 550 blocuri: filename. Pot fi folosite nume generice între apostroafe.
mkfs –b 2048 –N 64 –t ext2 /dev/fd0 550 -perm onum este true dacă drepturile de acces la fişier corespund cu numărul octal onum.
• Verificarea unui sistem de fişiere -type c este true dacă tipul fişierului este cel specificat de caracterul c (poate fi: f d
b c p s).
fsck [ -sACVRTNP ] [ -t fstype ] filesys [ ... ] [--] [ fsck-
options] -exec command true dacă valoarea returnată de command este 0. Comanda se termină
cu \; frecvent în comandă se foloseşte argumentul curent, indicat prin { }. Ex.:
Situaţie de inconsistenţă: cădere de sistem înainte de actualizarea i-nodului la ştergerea
unei intrări de director (i-nodul se actualizează după ştergere!) find . -name ‘*.o’ –exec rm {}\;

6
10/15/2008

Comenzi diverse(2)
• Evaluarea expresiilor
expr arg1 operator arg2 [operator arg3 ... ]
Rezultatul este scris în fişierul standard de ieşire
Fiecare atom din expresie trebuie separat de alţi atomi prin spaţiu
Operatorii apar ca simboluri infix sau cuvinte cheie prefix. Parantezele trebuie citate,
pentru a interzice shell-ului evaluarea lor
Argumentele sunt numere sau şiruri de caractere. Uneori pentru şiruri trebuie aplicate
mecanismele de citare
Codul de retur al comenzii: 0 dacă valoarea expresiei este nenulă, 1 pentru expresie nulă
şi 2 când expresia nu e validă
Operatori aritmetici: + - * / %
Operatori
p relaţionali:
ţ = != > >= < <=
Operatori logici: | & : (pt. : arg2 se caută ca tipar în arg1; rezultatul e nr. de caractere
care corespund tiparului; dacă tiparul e încadrat de paranteze rezultatul e şirul care
corespunde )
Exemple ( se consideră implementarea din bash):
$ expr 5 + 10 / 2 dă rezultatul 10
$ expr \( 5 + 10 \) / 2 dă rezultatul 7
$ i=`expr $i + 1` valoarea variabilei de mediu i este incrementată cu 1
$ expr $i + 5 \> 10 dacă i este 3, dă valoarea 0 (false)
$ v=program.c
$ expr "$v" : '.*‘ are rezultatul 9
$ expr "$v" : ‘\(.*\)‘ are rezultatul program.c
$ expr "$v" : '\([a-z]*\)‘ are rezultatul program

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