Cours Linux Abghour
Cours Linux Abghour
Cours Linux Abghour
mes d'exploitation :
mes d'exploitation :
-
-
introduction
introduction
-
-
Un systme d'exploitation (en anglais operating system, souvent abrg
en OS) assure des tches de liaison entre le matriel, l'utilisateur et les
applications (traitement de texte, jeu, ...).
Cest linterface entre lutilisateur et le matriel
Ses fonctions principales sont :
Contrle des ressources (allocation et gestion du CPU et de la mmoire)
Contrle des processus
Contrle des priphriques
Il contient des outils de gestion utilisables par les applications, tels que
la manipulation de fichiers, gestion dimpressions, date
N.ABGHOUR Systmes dexploitation : Linux
Les Syst
Les Syst
mes d'exploitation :
mes d'exploitation :
-
-
introduction
introduction
-
-
La communication avec le systme d'exploitation s'tablit par
l'intermdiaire d'un langage de commandes et un interprteur de
commandes, cela permet l'utilisateur de piloter les priphriques
en ignorant tout les caractristiques du matriel qu'il utilise, de la
gestion des adresses physiques...
N.ABGHOUR Systmes dexploitation : Linux
Exemples:
Unix, DOS, Windows, Mac OS, Linux, OS/2, BSD, ...
Architecture-type:
Dispositifs physiques
Langage machine
noyau
Interprteur de commandes, compilateur,
applications
(jeux, outils bureautiques, )
MATERIEL
SYSTEME
DEXPLOITATION
APPLICATIONS
Les syst
Les syst
mes d
mes d
exploitation:
exploitation:
-
-
introduction
introduction
-
-
N.ABGHOUR Systmes dexploitation : Linux
Classification des OS
Classification des OS
Systmes mono tches
Systmes multitches
Les systmes d'exploitation multitches permettent de partager le temps du
processeur entre plusieurs programmes, ainsi ceux-ci sembleront s'excuter
simultanment.
Pour raliser ce processus, les applications sont dcoupes en squence
d'instructions que l'on appelle tches ou processus. Ces tches seront tour
tour actives, en attente, suspendues ou dtruites, suivant la priorit qui
leur est associe ou bien squentiellement.
Le systme est dit temps partag lorsqu'un quota de temps est allou
chaque processus
N.ABGHOUR Systmes dexploitation : Linux
Classification des OS
Classification des OS
Systmes multi-processeurs
Ces systmes sont ncessairement multitches puisqu'on leur demande
d'une part de pouvoir excuter simultanment plusieurs applications, mais
surtout d'organiser leur excution sur les diffrents processeurs (qui
peuvent tre identiques ou non).
Ces systmes peuvent tre soit architecturs autour d'un processeur central
qui coordonne les autres processeurs, soit avec des processeurs
indpendants qui possdent chacun leur systme d'exploitation, ce qui leur
vaut de communiquer entre eux par l'intermdiaire de protocoles.
N.ABGHOUR Systmes dexploitation : Linux
Classification des OS
Classification des OS
Les types de systmes d'exploitation
On distingue plusieurs types de systmes d'exploitation, selon qu'ils sont capables de
grer simultanment des informations d'une longueur de 16 bits, 32 bits, 64 bits
X
X 32 bits MAC/OS X
X
X 32/64 bits Unix / Linux
X
X 32/64 bits WindowsXP
X
X 32 bits WindowsNT/2000
coopratif X 32 bits Windows95/98/Me
non premptif X 16/32 bits Windows3.1
X X 16 bits DOS
Multitche Mono-tche Multi-utilisateur Mono-utilisateur Codage Systme
N.ABGHOUR Systmes dexploitation : Linux
Linux: g
Linux: g
n
n
ralit
ralit
s
s
Unix est n aux laboratoires Bell (Filiale dATT) Developp en assembleur
partir de 1969 par Ken Thompson et Dennis Ritchie
En 1973, Unix est rcrit 90% en langage C (Cr pour loccasion par Brian
Kernighan)
Actuellement, Unix est un systme dexploitation des stations de travail et des
serveurs de base de donnes (utilis sur de plus en plus de platformes grce au
dveloppement des Unix libres
Fournisseurs : Digital Equipement, Hewlett Packard, IBM, Silicon Graphics, Sun
Microsystems + tous les Unix "libres" (Linux, OpenBSD, FreeBSD, ...)
Un consortium : X-Open
Deux standards : POSIX (IEEE), X-Open
Concurrents : Windows-NT, Windows-2000, Windows XP (Microsoft)
N.ABGHOUR Systmes dexploitation : Linux
Linux: on y va !
Linux: on y va !
Proprits
multi-tches
multi-utilisateurs
multi-postes
portable
Libre (et gratuit) !!
Ouverture/Fermeture dune session
Travailler sous Linux implique une connexion au systme
Login:
Identification de lutilisateur: login + mot-de-passe
droits accords par le super-utilisateur (root)
Logout:
NE PAS ETEINDRE une machine sauvagement
commande logoutdans la console
N.ABGHOUR Systmes dexploitation : Linux
Structure d'Unix
Structure d'Unix
Kernel
Shell
Applications
N.ABGHOUR Systmes dexploitation : Linux
Structure d'Unix
Structure d'Unix
Kernel (noyau) :
gestion du systme de fichier, du processeur,
de la mmoire centrale et des priphriques
Shell : interprteur de commande
(bash, ksh, csh, zsh, etc)
Applications :
rm, mv, Star Office, netscape, etc
N.ABGHOUR Systmes dexploitation : Linux
Arborescence UNIX
Arborescence UNIX
les fichiers sont organiss sous forme darborescence de rpertoires et
de fichiers.
Chaque rpertoire contient un lien vers :
lui-mme : dsign par un point .
son pre : dsign par deux points ..
N.ABGHOUR Systmes dexploitation : Linux
Arborescence UNIX
Arborescence UNIX
les fichiers sont organiss sous forme darborescence de rpertoires et
de fichiers.
Chaque rpertoire contient un lien vers :
lui-mme : dsign par un point .
son pre : dsign par deux points ..
N.ABGHOUR Systmes dexploitation : Linux
Arborescence UNIX
Arborescence UNIX
les fichiers sont organiss sous forme darborescence de rpertoires et
de fichiers.
Chaque rpertoire contient un lien vers :
lui-mme : dsign par un point .
son pre : dsign par deux points ..
N.ABGHOUR Systmes dexploitation : Linux
Arborescence UNIX
Arborescence UNIX
Chaque rpertoire contient un lien vers :
lui-mme : dsign par un point .
son pre : dsign par deux points ..
Le rpertoire racine / est un rpertoire
particulier puisque lui-mme . et son
pre .. le dsigne.
N.ABGHOUR Systmes dexploitation : Linux
Exemple d
Exemple d
arborescence UNIX
arborescence UNIX
N.ABGHOUR Systmes dexploitation : Linux
Exemple d
Exemple d
arborescence UNIX
arborescence UNIX
N.ABGHOUR Systmes dexploitation : Linux
Exemple d
Exemple d
arborescence UNIX
arborescence UNIX
Pour des raisons de lisibilit, on ne
reprsente en gnral pas . et ..
dans les dessins darborescence
(implicite).
N.ABGHOUR Systmes dexploitation : Linux
Manuel des commandes
Manuel des commandes
La liste des commandes nest pas exhaustive, seules les plus
courantes et les plus adaptes votre enseignement sont
prsentes.
De la mme faon, seules les options les plus courantes
seront indiques pour chaque commande.
Pour plus dinformation et de prcision sur les commandes nhsitez surtout
pas lire les pages de manuel associes en tapant la commande :
man nom de la commande
Pour plus dinformation et de prcision sur les commandes nhsitez surtout
pas lire les pages de manuel associes en tapant la commande :
man nom de la commande
man commande
N.ABGHOUR Systmes dexploitation : Linux
Commandes li
Commandes li
es
es
l
l
arborescence des
arborescence des
fichiers
fichiers
N.ABGHOUR Systmes dexploitation : Linux
D
D
placement dans l
placement dans l
arborescence
arborescence
La commande interne cd permet de changer de rpertoire courant.
La commande interne cd permet de changer de rpertoire courant.
cd
Afficher le nom du rpertoire de travail en cours (rpertoire courant).
Afficher le nom du rpertoire de travail en cours (rpertoire courant).
pwd
N.ABGHOUR Systmes dexploitation : Linux
Exemple : cd,
Exemple : cd,
pwd
pwd
$ pwd
/home/etu/toto
$ cd projets/gl
$ pwd
/home/etu/toto/projets/gl
$ cd ..
$ pwd
/home/etu/toto/projets
$ cd ../../../etu/toto
$ pwd
/home/etu/toto
$ cd /usr/bin
$pwd
/usr/bin
$ cd /.././../home/./etu/./..
$ pwd
/home
N.ABGHOUR Systmes dexploitation : Linux
Visualisation de l
Visualisation de l
arboresence
arboresence
:
:
ls
ls
La commande ls affiche tout dabord lensemble de ses arguments fichiers
autres que des rpertoires. Puis ls affiche lensemble des fichiers contenus
dans chaque rpertoire indiqu.
-R : Afficher rcursivement le contenu des sous-rpertoires.
-a : Afficher tous les fichiers des rpertoires, y compris les fichiers
commenant par un .
-i : Afficher le numro dindex (i-noeud) de chaque fichier gauche
de son nom.
-l : En plus du nom, afficher le type du fichier, les permissions daccs,
le nombre de liens physiques, le nom du propritaire et du groupe,
la taille en octets, et lhorodatage.
La commande ls affiche tout dabord lensemble de ses arguments fichiers
autres que des rpertoires. Puis ls affiche lensemble des fichiers contenus
dans chaque rpertoire indiqu.
- -R R : Afficher r : Afficher r cursivement le contenu des sous cursivement le contenu des sous- -r r pertoires. pertoires.
- -a a : Afficher tous les fichiers des r : Afficher tous les fichiers des r pertoires, y compris les fichiers pertoires, y compris les fichiers
commen commen ant par un ant par un . .
- -i i : Afficher le num : Afficher le num ro d ro d index (i index (i- -noeud noeud) de chaque fichier ) de chaque fichier gauche gauche
de son nom. de son nom.
- -l l : En plus du nom, afficher le type du fichier, les permissions d : En plus du nom, afficher le type du fichier, les permissions d acc acc s, s,
le nombre de liens physiques, le nom du propri le nombre de liens physiques, le nom du propri taire et du groupe, taire et du groupe,
la taille en octets, et l la taille en octets, et l horodatage. horodatage.
ls [OPTIONS] [fichiers]...
N.ABGHOUR Systmes dexploitation : Linux
Information d
Information d
taill
taill
acc
acc
s au fichier
s au fichier
- rwx r-x ---
u g o t
Type :
- fichier ordinaire
d rpertoire
b type bloc
c type caractre
l lien symbolique
s socket
p pipe
u : user (utilisateur)
g : group
o : other (autre)
r : read (lecture)
w : write (criture)
x : execute (excution)
N.ABGHOUR Systmes dexploitation : Linux
Afficher le type d
Afficher le type d
un fichier : file
un fichier : file
La commande interne cd permet de changer de rpertoire courant.
La commande interne cd permet de changer de rpertoire courant.
Tente de deviner le type de fichier ( rpertoire, excutable binaire,)
Tente de deviner le type de fichier ( rpertoire, excutable binaire,)
file fichiers...
$file
N.ABGHOUR Systmes dexploitation : Linux
Caract
Caract
re sp
re sp
un fichier : chmod
un fichier : chmod
Modifier les autorisations daccs un fichier. Le mode scrit en octal (777)
ou en chaine (ugoa(+-=)rwxstX).
-R modifie rcursivement les droits sur tout une arborescence
s : set-user-ID (suid)
t : sticky-bit
X : x seulement si rpertoire.
Modifier les autorisations daccs un fichier. Le mode scrit en octal (777)
ou en chaine (ugoa(+-=)rwxstX).
-R modifie rcursivement les droits sur tout une arborescence
s : set-user-ID (suid)
t : sticky-bit
X : x seulement si rpertoire.
chmod mode fichiers...
N.ABGHOUR Systmes dexploitation : Linux
Changement des droits d
Changement des droits d
un fichier : chmod
un fichier : chmod
Changer les permissions : chmod
Mode littral :
chmod u+r,g+w monFichier
Mode numrique :
chmod 753 monFichier
ugo
7=4+2+1
r w x
5=4+0+1
r w x
3=O+2+1
r w x
N.ABGHOUR Systmes dexploitation : Linux
Changement des attributs d
Changement des attributs d
acc
acc
s par d
s par d
faut lors de cr
faut lors de cr
ation d
ation d
objets : umask
objets : umask
Afficher ou positionner les droits daccs dun fichier
On utilise une notation octale : on indique les bits qui ne seront
pas positionns lors de la cration des objets.
Afficher ou positionner les droits daccs dun fichier
On utilise une notation octale : on indique les bits qui ne seront
pas positionns lors de la cration des objets.
umask [mode-par-defaut] (en anglais user mask)
$ umask
022
$ls l
-rw-r--r-- 2 nabghour fsac 231 2006-01-24 21:25 toto
$ umask 026
$ touch file
$ ls l file
-rw-r----- 2 nabghour fsac 231 2006-01-24 21:25 file
$ mkdir rep
$ ls l
drwxr-x--x 2 nabghour fsac 231 2006-01-24 21:25 rep
N.ABGHOUR Systmes dexploitation : Linux
Cr
Cr
ation et suppression de r
ation et suppression de r
pertoire :
pertoire :
mkdir
mkdir
,
,
rmdir
rmdir
mkdir cre un rpertoire correspondant chacun des noms mentionns
-p Crer les rpertoires parents sils manquent
mkdir cre un rpertoire correspondant chacun des noms mentionns
-p Crer les rpertoires parents sils manquent
mkdir OPTIONS repertoire...
rmdir supprime chaque rpertoire vide indiqu pour supprimer rcursivement
des rpertoires non-vides, utiliser rm -r
rmdir supprime chaque rpertoire vide indiqu pour supprimer rcursivement
des rpertoires non-vides, utiliser rm -r
rmdir OPTIONS rpertoire...
N.ABGHOUR Systmes dexploitation : Linux
Exemple :
Exemple :
mkdir
mkdir
,
,
rmdir
rmdir
$ ls -al
Total12
drwxr-xr-x 2 nabghour fsac 512 08 fv 13:15 .
drwxr-xr-x 37 nabghour fsac 512 08 fv 13:04 ..
-rw-r--r-- 1 nabghour fsac 642 15 jan 11:42 fichier
-rw-r--r-- 1 nabghour fsac 362 25 jan 11:36 fichier2
$ mkdir monrep
$ ls al
total14
drwxr-xr-x 3 nabghour fsac 512 08 fv 03:15 .
drwxr-xr-x 37 nabghour fsac 512 08 fv 13:04 ..
-rw-r--r-- 1 nabghour fsac 642 15 jan 11:42 fichier
-rw-r--r-- 1 nabghour fsac 362 25 jan 11:36 fichier2
drwxr-xr-x 2 nabghour fsac 512 08 fv 13:15 monrep
$ cd monrep
$ ls al
Total 4
drwxr-xr-x 2 nabghour fsac 512 08 fv 03:15 .
drwxr-xr-x 37 nabghour fsac 512 08 fv 13:15 ..
$ cd ..
N.ABGHOUR Systmes dexploitation : Linux
Exemple :
Exemple :
mkdir
mkdir
,
,
rmdir
rmdir
$ ls -als
Total14
2 drwxr-xr-x 3 nabghour fsac 512 08 fv 03:15 .
6 drwxr-xr-x 37 nabghour fsac 512 08 fv 13:04 ..
2 -rw-r--r-- 1 nabghour fsac 642 15 jan 11:42 fichier
2 -rw-r--r-- 1 nabghour fsac 362 25 jan 11:36 fichier2
2 drwxr-xr-x 2 nabghour fsac 512 08 fv 13:15 monrep
$ rmdir monrep
$ ls -al
Total12
drwxr-xr-x 2 nabghour fsac 512 08 fv 03:15 .
drwxr-xr-x 37 nabghour fsac 512 08 fv 13:04 ..
-rw-r--r-- 1 nabghour fsac 642 15 jan 11:42 fichier
-rw-r--r-- 1 nabghour fsac 362 25 jan 11:36 fichier2
N.ABGHOUR Systmes dexploitation : Linux
Cr
Cr
ation de liens : ln
ation de liens : ln
Cration de lien entre fichiers.
Lorsquon cre un lien physique de file1 vers file2, file2 pointe vers le mme
inode que file1.
Si file1 est effac, linode continue exister et est encore accessible au
moins par file2.
Option :
-s lien symbolique
Lorsquon cre un lien symbolique de file1 vers file2, file2 rfrence file1.
Si file1 est supprim, file2 rfrencera un fichier qui nexiste plus
Cration de lien entre fichiers.
Lorsquon cre un lien physique de file1 vers file2, file2 pointe vers le mme
inode que file1.
Si file1 est effac, linode continue exister et est encore accessible au
moins par file2.
Option :
-s lien symbolique
Lorsquon cre un lien symbolique de file1 vers file2, file2 rfrence file1.
Si file1 est supprim, file2 rfrencera un fichier qui nexiste plus
ln OPTIONS file1 file2
N.ABGHOUR Systmes dexploitation : Linux
Cr
Cr
guli
guli
res
res
tendues
tendues
Expressions rgulires par ligne
. : (dot)un caractre quelconque
* : oprateur de rptition
[x y z] : x ou y ou z
[A-G] : intervalle
[^xyz] : sauf x, y ou z
^: dbut de ligne
$ : fin de ligne
\{m,n\}:rptions entre m et n fois
\ : chappement
N.ABGHOUR Systmes dexploitation : Linux
Exemples
^$ : reprsente une ligne vide
^[A-Z] : une majuscule en dbut de ligne
[a-z][a-z]$ : 2 minuscules en fin de ligne
[ABCD]\ {2,10 \}$ : entre 2 et 10 car. A,B,C ou D en
fin de ligne
.* : une squence vide ou de plusieurs caractres
N.ABGHOUR Systmes dexploitation : Linux
Recherche de motifs dans un fichier:
Recherche de motifs dans un fichier:
grep
grep
Afficher les lignes correspondant un motif donn
-v : les lignes complmentaires
-i : sans tenir compte de la casse (majuscule=minuscule)
-n : en prcdant les lignes slectionnes par leur numro de ligne
-G : Interprte le motif comme une expression rgulire simple
-F : Interprte le motif comme une expression rgulire tendue
-l : naffiche que le nom du fichier
Afficher les lignes correspondant un motif donn
-v : les lignes complmentaires
-i : sans tenir compte de la casse (majuscule=minuscule)
-n : en prcdant les lignes slectionnes par leur numro de ligne
-G : Interprte le motif comme une expression rgulire simple
-F : Interprte le motif comme une expression rgulire tendue
-l : naffiche que le nom du fichier
grep [-ivn] regexpr fichier...
$ more file
il fait beau
il fait chaud
beau temps nest ce pas ?
grep "il" file
il fait beau
il fait chaud
cat file | grep v "il"
beau temps nest ce pas ?
$
$
$
N.ABGHOUR Systmes dexploitation : Linux
Les Filtres Linux
Les Filtres Linux
Un filtre est une commande qui prend ses
donne dentre sur lentre standard et
fournit ses rsultats sur la sortie standard.
Utiliss avec les pipes
Exemple : tri des lignes dun fichier
cat /etc/passwd | sort | more
Important : tous les processus formant un
pipe tournent en mme temps.
N.ABGHOUR Systmes dexploitation : Linux
Filtre linux : tr
Filtre linux : tr
Format des expression de chane
[a-z] = segment de 26 caractres allant de a z
[a*n] = a. . . a (n fois)
\xyz = dsigne le caractre de code octal xyz
[: lower: ] = lettre minuscule
[ :upper:] = lettre majuscule
tr = Transposer ou liminer des caractres substitution ou
suppression de caractres slectionns
Un caractre appartenant chaine1 est remplac par le caractre
de mme position dans chaine2
Options principales:
-d : suppression des caractres slectionns
-s : aaaaa" dans chaine1 "a" dans chaine2
-c : remplace jeu1 par son complment (tous les caractres n'appartenant
pas chaine1 )
tr = Transposer ou liminer des caractres substitution ou
suppression de caractres slectionns
Un caractre appartenant chaine1 est remplac par le caractre
de mme position dans chaine2
Options principales:
-d : suppression des caractres slectionns
-s : aaaaa" dans chaine1 "a" dans chaine2
-c : remplace jeu1 par son complment (tous les caractres n'appartenant
pas chaine1 )
tr [options] chaine1 chaine2
N.ABGHOUR Systmes dexploitation : Linux
Exemple : tr
Exemple : tr
$ echo "coucou" | tr [a-z] [A-Z]
COUCOU
$ echo "BONJOUR " |tr '[:upper:]' '[:lower:]'
bonjour
$ echo "aaabbbaaa" | tr -s [a-z] [A-Z]
ABA
$ tr d '\000' < fich_MS_DOS.c > fich_Unix.c
Supprime les octets nuls
$ echo aaabc$#+&19a1$$$cd | tr -cs '[a-zA-Z0-9]' \n'
Afficher chaque mot sur une ligne indpendante. Ceci tous
les caractres non alphanumriques en sauts de lignes,
puis regroupe les lignes blanches successives en un seul
saut de ligne
$ cat file |tr -s '\n'
Convertir les squences de sauts de lignes en un seul saut
de ligne (ceci supprime les lignes blanches)
N.ABGHOUR Systmes dexploitation : Linux
Filtre :
Filtre :
uniq
uniq
limine les lignes dupliques dans un fichier tri par dfaut :
OPTIONS:
-d : affiche seulement les lignes dupliques
-u : affiche seulement les lignes non dupliques (par dfaut)
-c : donne le nombre dexemplaires de chaque ligne
limine les lignes dupliques dans un fichier tri par dfaut :
OPTIONS:
-d : affiche seulement les lignes dupliques
-u : affiche seulement les lignes non dupliques (par dfaut)
-c : donne le nombre dexemplaires de chaque ligne
uniq OPTIONS fichier
$ cat fichier
un
deux
deux
trois
quatre
quatre
cinq
$
$ cat fichier | uniq
un
deux
trois
quatre
cinq
$
$ cat fichier | uniq -d
deux
quatre
$
N.ABGHOUR Systmes dexploitation : Linux
Filtre :
Filtre :
cut
cut
Supprime une partie de chaque ligne dun fichier par dfaut :
OPTIONS:
-d separateur : le sparateur des champs
-f listes de champs : les champs spars
-c : Selection sur le rang du caractere
-b : Selection sur le no doctet
-s (avec -f) : supprime les lignes vides
Supprime une partie de chaque ligne dun fichier par dfaut :
OPTIONS:
-d separateur : le sparateur des champs
-f listes de champs : les champs spars
-c : Selection sur le rang du caractere
-b : Selection sur le no doctet
-s (avec -f) : supprime les lignes vides
cut OPTIONS fichier
$ cat fichier
0 :Casablanca:maroc:022
1 :Rabat :maroc :037
2 :Fes :maroc :035
3 :Marrakech :maroc :024
$
$ cat fichier | cut -d : -f1,2
0 :Casablanca
1 :Rabat
2 :Fes
3 :Marrakech
$
N.ABGHOUR Systmes dexploitation : Linux
Filtre : sort
Filtre : sort
Trie les lignes dun fichier texte
-n numeric-sort dans lordre numrique
-d dictionary-order dans lordre alphabtique
-t car le caractre sparateur de champs
-k le champs considr pour le tri
-o fichier le rsultat est mis dans fichier
-u efface toutes les lignes sauf une qui ont la mme cl
Trie les lignes dun fichier texte
-n numeric-sort dans lordre numrique
-d dictionary-order dans lordre alphabtique
-t car le caractre sparateur de champs
-k le champs considr pour le tri
-o fichier le rsultat est mis dans fichier
-u efface toutes les lignes sauf une qui ont la mme cl
sort OPTIONS fichier
$ cat fichier
0 :Casablanca:maroc:22
1 :Rabat :maroc :37
2 :Fes :maroc :35
3 :Marrakech :maroc :24
$
$ cat fichier | sort -t : -k4 -n
0 :Casablanca:maroc:22
3 :Marrakech :maroc :24
2 :Fes :maroc :35
1 :Rabat :maroc :37
$ ls | sort -d
. . . . . .
N.ABGHOUR Systmes dexploitation : Linux
Filtre : paste
Filtre : paste
Regroupe les lignes du mme n de diffrents fichiers
Regroupe les lignes du mme n de diffrents fichiers
paste OPTIONS fichier...
$ cat fichier1
0 :Casablanca:
1 :Rabat :
2 :Fes :maroc :35:
maroc :24:
$ cat fichier2
maroc:22
maroc :37
2 :Fes :maroc :35
3 :Marrakech
$
$ paste fichier1 fichier2
0 :Casablanca:maroc:22
1 :Rabat :maroc :37
2 :Fes :maroc :35: 2 :Fes :maroc :35
maroc :24 : 3 :Marrakech :
$
N.ABGHOUR Systmes dexploitation : Linux
Filtre :
Filtre :
join
join
Fusionner les lignes de deux fichiers ayant un champ commun
-j1 n jointure sur nime champ du premier fichier
-j2 n jointure sur nime champ du deuxime fichier
-t car le caractre sparateur de champs
Fusionner les lignes de deux fichiers ayant un champ commun
-j1 n jointure sur nime champ du premier fichier
-j2 n jointure sur nime champ du deuxime fichier
-t car le caractre sparateur de champs
join OPTIONS fichier1 fichier2
$ cat file1
0 :Casablanca:maroc:022
1 :Rabat :maroc :037
2 :Fes :maroc :035
3 :Marrakech :maroc :024
$ cat file2
Touristique : 3
Industrielle : 0
Administratif : 1
$
$ join t : j1 1 j2 2 file1 file2
0 :Casablanca:maroc:022: Industrielle
1 :Rabat :maroc :037: Administratif
3 :Marrakech :maroc :024: Touristique
$
N.ABGHOUR Systmes dexploitation : Linux
SHELL
SHELL
N.ABGHOUR Systmes dexploitation : Linux
Type de SHELL
Type de SHELL
N.ABGHOUR Systmes dexploitation : Linux
Caract
Caract
re sp
re sp
ciaux du Shell
ciaux du Shell
N.ABGHOUR Systmes dexploitation : Linux
M
M
tacaract
tacaract
res
res
:
:
Quotation
Quotation
" ` \ changent la facon dont le Shell interprte les
caractres spciaux
N.ABGHOUR Systmes dexploitation : Linux
Exemple :
Exemple :
Quotation
Quotation
$ ls
chat chien poisson
$ whoami
newbie
$ TITI=newbie-user
$ echo whoami et le ${TITI} et les c* ; ls
newbie et le newbie-user et les chat chien
chat chien poisson
$ echo whoami et le ${TITI} et les c* ;ls
whoami et le ${TITI} et les c* ; ls
$ echo "whoami et le ${TITI} et les c* ;ls"
newbie et le newbie-user et les c* ; ls
$
N.ABGHOUR Systmes dexploitation : Linux
Flux
Flux
Lentre standard (stdin : 0)) : le flux dentre du programme (par
dfaut, ce qui est tap au clavier)
La sortie standard (stdout : 1) : le flux de sortie du programme (par
dfaut, il sera affich lcran)
Lerreur standard : (stderr : 2) : le flux derreur du programme (par
dfaut, il sera affich lcran)
Processus Processus
0: clavier
1: cran
2: cran
N.ABGHOUR Systmes dexploitation : Linux
M
M
tacaract
tacaract
res
res
de redirection
de redirection
N.ABGHOUR Systmes dexploitation : Linux
Redirection de la sortie standard
Redirection de la sortie standard
cmd > fic :
redirige la sortie de
la commande dans
le fichier qui est cr
sil nexistait pas et
dont le contenu est
cras sinon.
cmd >> fic :
redirige la sortie de
la commande la
suite du contenu du
fichier (qui doit
exister).
$ echo "Le Corbeau et le Renard" > file1
$ cat file1
Le Corbeau et le Renard
$ echo "Maitre Corbeau, Sur un arbre
perch," >> file1
$ cat file1
Le Corbeau et le Renard Maitre Corbeau,
Sur un arbre perch,
$ echo "La Cigale et la Fourmi" > file1
$ cat file1
La Cigale et la Fourmi
$
N.ABGHOUR Systmes dexploitation : Linux
Redirection de la sortie d
Redirection de la sortie d
erreur
erreur
cmd 2 > fic :
redirige la sortie
derreur de la
commande dans le
fichier qui est cr sil
nexistait pas et dont
le contenu est cras
sinon.
cmd 2 >> fic :
redirige la sortie
derreur de la
commande la suite
du contenu du fichier
(qui doit exister).
$ ls abc file1 file2
ls : abc : No such file or directory
file1 file2
$ ls abc file1 file2 > sortiestd
ls : abc : No such file or directory
$ cat sortiestd
file1 file2
$ ls abc file1 file2 2> erreurstd
file1 file2
$ cat erreurstd
ls : abc : No such file or directory
$ ls abc file1 file2 2> erreurstd >
sortiestd
$ cat erreurstd
ls : abc : No such file or directory
$
N.ABGHOUR Systmes dexploitation : Linux
Redirection de l
Redirection de l
entr
entr
e standard
e standard
cmd < fic :
lentre de la
commande provient du
fichier
cmd << etq :
lentre de la
commande provient des
lignes de commandes
suivantes jusqu la
ligne ne contenant que
ltiquette
$ wc < file1
1 5 23
$ wc << EOF
> Matre Corbeau, Sur
un arbre perch,
> Tenait dans son bec
un fromage,
> Maitre Renard, par
lodeur allch,
> Lui tint peu prs
ce langage :
> EOF
4 25 138
$
N.ABGHOUR Systmes dexploitation : Linux
Tube (Pipe) entre flux d
Tube (Pipe) entre flux d
entr
entr
e et flux de sortie
e et flux de sortie
cmd 1 | cmd 2
redirige la sortie de la
commande1 vers lentre de la
commande 2
$ ls fic1 fic2 | wc
2 2 10
$
cmd1 > fictmp
cmd1 | cmd2 <==> cmd2 < fictmp
rm fictmp
N.ABGHOUR Systmes dexploitation : Linux
Redirection vers un descripteur
Redirection vers un descripteur
cmd > & desc
redirige la sortie de la
commande vers le descripteur
donn (0 :entre std, 1 : sortie
std, 2 : erreur std)
$ ls file1 file2 abc >
resultat 2> resultat
$ cat resultat
file1
file2
o such file or directory
$ ls file1 file2 abc >
resultat 2>&1
$ cat resultat
ls : abc : No such file or
directory
file1
file2
$ ls fic1 fic2 abc 2>
resultat >& 2
$ cat resultat
ls : abc : No such
file or directory
file1
file2
$
N.ABGHOUR Systmes dexploitation : Linux
Programmation SHELL
Programmation SHELL
N.ABGHOUR Systmes dexploitation : Linux
INTRODUCTION
INTRODUCTION
Un script Shell est ensemble de commandes dans un fichier
ayant ventuellement des paramtres
nom de la commande = nom du fichier = script shell
Les paramtres dun script Shell sont reprs par leur
position quand on excute le script
les commandes sont regroupes par une syntaxe de
langage de commandes
plusieurs langages plusieurs syntaxes regroupes en 2 familles:
les Bourne Shells (sh, ksh, bash)
les C-Shells (csh, tcsh))
N.ABGHOUR Systmes dexploitation : Linux
Rle d
Rle d
un script shell
un script shell
Le shell propose un langage de programmation interprt.
Son utilit :
automatisation dactions
Contrle de flux dexecution
utilisation de structures plus avances :
boucles
Tests
. . .
N.ABGHOUR Systmes dexploitation : Linux
Comment cr
Comment cr
er un script Shell
er un script Shell
1. Ouvrir un fichier texte et mettre en 1
re
ligne le
shell choisi :
#! / bi n/ sh
2. crire les commandes constituant le script Shell
3. rendre le script Shell excutable :
$ chmod a+x nom_scr i pt _shel l
4. Excuter le script
$ . / nom_scr i pt _shel l
N.ABGHOUR Systmes dexploitation : Linux
Exemple : Structure d
Exemple : Structure d
un script shell
un script shell
$ cat ./progdebut
#!/bin/sh
# Ce script shell "progdebut"
# se prsente et liste les
# fichiers et processus et sort
echo "Bonjour !"
ls
ps
echo "au revoir"
exit 0
$
#! Sur la premire ligne : interprteur du prsent script
(#! suivi du chemin complet du shell utilis plus
dventuels arguments)
# commentaires Les ligne de commentaire sont
prcdes de #
code Le code est donn ligne par ligne
#! Sur la premire ligne : interprteur du prsent script
(#! suivi du chemin complet du shell utilis plus
dventuels arguments)
# commentaires Les ligne de commentaire sont
prcdes de #
code Le code est donn ligne par ligne
$ chmod a+x progdebut
$ ./progdebut
Bonjour !
chat chateau cheval chien
PID TTY TIME CMD
6450 pts/3 00 :00 :00 bash
7152 pts/3 00 :00 :00 ps
au revoir
$
N.ABGHOUR Systmes dexploitation : Linux
Variables pr
Variables pr
d
d
finies
finies
$$ pid du processus en cours
$! pid du dernier processus en background
$? code retour de la dernire commande excute
N.ABGHOUR Systmes dexploitation : Linux
Passage de param
Passage de param
tres
tres
tres
tres
tres
tres
tres
tres
un Shell Script: pr
un Shell Script: pr
caution
caution
$ cat ./script4_faux.sh
# !/bin/sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12
exit 0
$ cat ./script4_faux.sh
# !/bin/sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12
exit 0
$ ./script4_faux.sh un deux trois quatre cinq six sept
huit neuf dix onze douze
un deux trois quatre cinq six sept huit neuf un0 un1
un2
$
$ cat script4_vrai.sh
# !/bin/sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} exit 0
$ cat script4_vrai.sh
# !/bin/sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} exit 0
$ ./script4_vrai.sh un deux trois quatre cinq six sept
huit neuf dix onze douze
un deux trois quatre cinq six sept huit neuf dix onze
douze
$
N.ABGHOUR Systmes dexploitation : Linux
D
D
calage de param
calage de param
tres : shift
tres : shift
$ cat script5.sh
# !/bin/sh
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
exit 0
$ cat script5.sh
# !/bin/sh
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
echo "$# : arg1 = $1 , arg2 = $2 ; total : $@"
shift
exit 0
$ ./script5.sh un deux
2 : arg1 = un , arg2 = deux ; total : un deux
1 : arg1 = deux , arg2 =; total : deux
0 : arg1 = , arg2 = ; total :
shift : cant shift that many
$
N.ABGHOUR Systmes dexploitation : Linux
Remarque sur shift
Remarque sur shift
A chaque emploi de shift,
le paramtre $1 prcdent est perdu,
$1 est supprim de $* et $@,
$#est dcrment de 1.
Lemploi de shift ncessite que le shell script ait au moins un paramtre:
Utilisation avec les boucles
for i in $*
do
echo $1
shift
done
for i in $*
do
echo $i
done
N.ABGHOUR Systmes dexploitation : Linux
Lecture interactive :
Lecture interactive :
read
read
La commande interne read attend une entre de lutilisateur et laffecte
la variable spcifie.
La commande interne read attend une entre de lutilisateur et laffecte
la variable spcifie.
read variable
$ cat test_read
# !/bin/sh
echo Quel est ton nom ?
read nom
echo "Bonjour $nom"
exit 0
$ ./test_read
Quel est ton nom?
Toto
Bonjour Toto
$
N.ABGHOUR Systmes dexploitation : Linux
calculs num
calculs num
riques :
riques :
expr
expr
$ cat calcul.sh
#!/bin/sh
C="abc"
N=12
echo "variable C = " ${C}
echo "variable N = " ${N}
echo "variable N+1 = \c" ; expr ${N} + 1
N=expr ${N} + 10
echo "variable N apres N=N+10= " ${N}
$ ./calcul.sh
variable C = abc
variable N = 12
variable N+1 = 13
variable N apres N=N+10= 22
$ cat calcul.sh
#!/bin/sh
C="abc"
N=12
echo "variable C = " ${C}
echo "variable N = " ${N}
echo "variable N+1 = \c" ; expr ${N} + 1
N=expr ${N} + 10
echo "variable N apres N=N+10= " ${N}
$ ./calcul.sh
variable C = abc
variable N = 12
variable N+1 = 13
variable N apres N=N+10= 22
value la chane de caractre reprsentant des oprations.
value la chane de caractre reprsentant des oprations.
expr chaine
N.ABGHOUR Systmes dexploitation : Linux
Calcul num
Calcul num
rique : $(
rique : $(
expr_arithmetique
expr_arithmetique
)
)
$v=10
$x=20
$$(($v+$x))
30
$$(($x/$v))
2
$v=10
$x=20
$$(($v+$x))
30
$$(($x/$v))
2
value lexpression arithmtique entre parenthse.
value lexpression arithmtique entre parenthse.
$(expression_arithmtique)
Exemple :
N.ABGHOUR Systmes dexploitation : Linux
Commande :
Commande :
exec
exec
La commande sexcute en remplaant le processus courant :Il ny a pas
de cration de processus pour excuter la commande.
La commande sexcute en remplaant le processus courant :Il ny a pas
de cration de processus pour excuter la commande.
exec commande
$ cat test_exec
#!/bin/sh
read cmd
exec $cmd
# Tout ce aui suit ne sera pas excut
# car le code de $cmd a remplac celui ci
echo ligne 1
echo ligne 2
echo ligne 3
$ test_exec
date
25-11-2007
$
N.ABGHOUR Systmes dexploitation : Linux
Commande :
Commande :
eval
eval
La commande est interprte puis le rsultat de linterprtation est excut
La commande est interprte puis le rsultat de linterprtation est excut
eval commande
$ cat test_eval
#!/bin/sh
read cmd
# supposons que lutilisateur saisisse /etc/passwd"
# Exemple
# 1) interprtation de "file $cmd" --> wc -l /etc/passwd
# 2) execution de wc l /etc/passwd
eval " wc l $cmd"
# Ce qui suit est excut
echo fin
$ ./test_eval
/etc/passwd
100
fin
$
N.ABGHOUR Systmes dexploitation : Linux
Commandes de test : test, [
Commandes de test : test, [
permet dvaluer une expression.
Si vrai, renvoie 0, sinon, renvoie 1.
Sil ny a pas dexpression, renvoie 1 (false).
test expression est quivalent [ expression ]
-d fic vrai si le fichier existe et est un rpertoire
-f fic vrai si le fichier existe et est un fichier ordinaire
-h fic vrai si le fichier existe et est un lien symbolique
-x fic vrai si le fichier existe et est autoris en excution
-w fic vrai si le fichier existe et est autoris en criture
-r fic vrai si le fichier existe et est autoris en lecture
ch1 = ch2 vrai si les deux chanes sont identiques
ch1 != ch2 vrai si les deux chanes sont diffrentes
n1 -eq n2 si les deux nombres sont numriquement gaux
n1 -ne n2 si les deux nombres sont numriquement ingaux
n1 -lt n2 si n1 est numriquement infrieur n2
n1 -gt n2 si n1 est numriquement suprieur n2
permet dvaluer une expression.
Si vrai, renvoie 0, sinon, renvoie 1.
Sil ny a pas dexpression, renvoie 1 (false).
test expression est quivalent [ expression ]
-d fic vrai si le fichier existe et est un rpertoire
-f fic vrai si le fichier existe et est un fichier ordinaire
-h fic vrai si le fichier existe et est un lien symbolique
-x fic vrai si le fichier existe et est autoris en excution
-w fic vrai si le fichier existe et est autoris en criture
-r fic vrai si le fichier existe et est autoris en lecture
ch1 = ch2 vrai si les deux chanes sont identiques
ch1 != ch2 vrai si les deux chanes sont diffrentes
n1 -eq n2 si les deux nombres sont numriquement gaux
n1 -ne n2 si les deux nombres sont numriquement ingaux
n1 -lt n2 si n1 est numriquement infrieur n2
n1 -gt n2 si n1 est numriquement suprieur n2
test expression ou [ expression ]
N.ABGHOUR Systmes dexploitation : Linux
Commandes de test : test, [
Commandes de test : test, [
n1 -le n2 si n1 est numriquement infrieur ou gal n2
n1 -ge n2 si n1 est numriquement suprieur ou gal n2
! exp1 vrai si lexpression est fausse (et vice-versa)
exp1 -a exp2 vrai si les deux expressions sont vraies (AND)
exp1 -o exp2 vrai si au moins une expression est vraie (OR)
n1 -le n2 si n1 est numriquement infrieur ou gal n2
n1 -ge n2 si n1 est numriquement suprieur ou gal n2
! exp1 vrai si lexpression est fausse (et vice-versa)
exp1 -a exp2 vrai si les deux expressions sont vraies (AND)
exp1 -o exp2 vrai si au moins une expression est vraie (OR)
test expression ou [ expression ]
$ test -f fic-existe
$ echo $?
0
$ test -f fic-nexiste-pas
$ echo $?
1
$
$ [ 3 -lt 42 -a -x fic-executable ]
$ echo $?
0
$ [ 3 -gt 42 -a -x fic-executable ]
$ echo $?
1
$
N.ABGHOUR Systmes dexploitation : Linux
La condition (boolenne) est en gnral le code de retour dune
commande UNIX. Le code de retour de la commande dtermine le test
if :
Code de retour valant zro : Le test if est vrai.
Code de retour non nul : Le test if est faux
Branchement conditionnel : if
Branchement conditionnel : if
-
-
then
then
-
-
elif
elif
-
-
else
else
-
-
fi
fi
#!/bin/sh
if commande [options] parametres > resultats.txt 2> erreurs.txt
then
# code de retour (exit) valant 0
bloc-1-de-commandes-unix
else
# code de retour (exit) diffrent de 0
bloc-2-de-commandes-unix
fi
#!/bin/sh
if commande [options] parametres > resultats.txt 2> erreurs.txt
then
# code de retour (exit) valant 0
bloc-1-de-commandes-unix
else
# code de retour (exit) diffrent de 0
bloc-2-de-commandes-unix
fi
if liste-commandes-1
then liste-commandes-2
elif liste-commandes-3 < autant de fois que ncessaire
else liste-commandes-4 < si ncessaire
fi
N.ABGHOUR Systmes dexploitation : Linux
Exemple d
Exemple d
utilisation de if
utilisation de if
-
-
then
then
-
-
elif
elif
-
-
else
else
-
-
fi
fi
if [ -d toto ];
then echo "toto est un rpertoire"
elif [ -h toto ];
then echo "toto est un lien symbolique"
else echo "faut pousser linvestigation plus loin"
fi
if [ -d toto ];
then echo "toto est un rpertoire"
elif [ -h toto ];
then echo "toto est un lien symbolique"
else echo "faut pousser linvestigation plus loin"
fi
if ls file > /dev/null 2>&1
then echo "la commande ls file a russi"
else echo "la commande ls file a chou"
fi
if ls file > /dev/null 2>&1
then echo "la commande ls file a russi"
else echo "la commande ls file a chou"
fi
Exemple 1 :
Exemple 2 :
N.ABGHOUR Systmes dexploitation : Linux
Branchement conditionnel : case
Branchement conditionnel : case
-
-
esac
esac
Excute la liste-commandes suivant le motif reconnu.
Le motif reconnaitre peut sexprimer sous forme dexpression rationnelle
utilisant les mta-caractres :* ? [ ] -
Excute la liste-commandes suivant le motif reconnu.
Le motif reconnaitre peut sexprimer sous forme dexpression rationnelle
utilisant les mta-caractres :* ? [ ] -
case expression in
motif1 ) liste-commandes ;; < autant de fois
...
* ) liste-commandes ;;
esac
N.ABGHOUR Systmes dexploitation : Linux
Exemple avec case
Exemple avec case
-
-
esac
esac
$ cat question
#read reponse
case $1 in
[Yy][eE][sS] | [oO][uU][iI ] | OK) echo "Tu approuves" ; ;
[Nn][oO]) echo "Tu dsapprouves" ; ;
bof ) echo " dcides toi" ; ;
pfff*) echo "Pas la peine de rpondre" ; ;
*) echo "rponse idiote" ; ;
esac
$ cat question
#read reponse
case $1 in
[Yy][eE][sS] | [oO][uU][iI ] | OK) echo "Tu approuves" ; ;
[Nn][oO]) echo "Tu dsapprouves" ; ;
bof ) echo " dcides toi" ; ;
pfff*) echo "Pas la peine de rpondre" ; ;
*) echo "rponse idiote" ; ;
esac
$ ./question YeS
Tu approuves
$ ./question OK
Tu approuves
$ ./question nO
Tu dsapprouves
$ ./question pfffjhfrfe
Pas la peine de rpondre
$ ./question areuh
rponse idiote
$ ./question bof
dcides toi
N.ABGHOUR Systmes dexploitation : Linux
Boucle for
Boucle for
-
-
do
do
-
-
done
done
La variable prend successivement les valeurs de la liste de mots, et
pour chaque valeur, liste-commandes est excute.
La variable prend successivement les valeurs de la liste de mots, et
pour chaque valeur, liste-commandes est excute.
for variable in liste de mots
do
liste-commandes
done
N.ABGHOUR Systmes dexploitation : Linux
Exemple avec for
Exemple avec for
-
-
do
do
-
-
done
done
$ cat test_for1
for i in un deux trois quatre
do
echo "chapitre $i"
done
$ cat test_for1
for i in un deux trois quatre
do
echo "chapitre $i"
done
$ ./test_for1
chapitre un
chapitre deux
chapitre trois
chapitre quatre
$ cat test_for2
for i in /etc/f*
do
echo $i
done
$ cat test_for2
for i in /etc/f*
do
echo $i
done
$ ./test_for2
/etc/fbtab
/etc/fstab
/etc/ftpusers
N.ABGHOUR Systmes dexploitation : Linux
Boucle
Boucle
while
while
-
-
do
do
-
-
done
done
La valeur teste par la commande while est ltat de sortie de la dernire commande
de liste-commandes-1.
Si ltat de sortie est 0, alors le shell excute liste-commandes-2
puis recommence la boucle.
La valeur teste par la commande while est ltat de sortie de la dernire commande
de liste-commandes-1.
Si ltat de sortie est 0, alors le shell excute liste-commandes-2
puis recommence la boucle.
while liste-commandes-1
do
liste-commandes-2
done
N.ABGHOUR Systmes dexploitation : Linux
Exemple avec
Exemple avec
while
while
-
-
do
do
-
-
done
done
$ cat test_while1
#!/bin/sh
while [ "$1" ]
do
echo $1
shift
done
$ cat test_while1
#!/bin/sh
while [ "$1" ]
do
echo $1
shift
done
$ ./test_while1 un "deux trois" quatre
un
deux trois
quatre
$ cat test_while2
#!/bin/sh
compteur=5
while [ $compteur -ge 0 ]
do
echo $compteur
compteur=expr $compteur - 1
done
$ cat test_while2
#!/bin/sh
compteur=5
while [ $compteur -ge 0 ]
do
echo $compteur
compteur=expr $compteur - 1
done
$ ./test_while2
5
4
3
2
1
0
N.ABGHOUR Systmes dexploitation : Linux
Boucle
Boucle
until
until
-
-
do
do
-
-
done
done
Le shell teste ltat de sortie de liste-commandes-1.
Si ltat de sortie est 1, alors, liste-commandes-2 est execute puis la
boucle est recommence.
Le shell teste ltat de sortie de liste-commandes-1.
Si ltat de sortie est 1, alors, liste-commandes-2 est execute puis la
boucle est recommence.
until liste-commandes-1
do
liste-commandes-2
done
N.ABGHOUR Systmes dexploitation : Linux
Exemple avec
Exemple avec
until
until
-
-
do
do
-
-
done
done
$ cat test_until1
#!/bin/sh
until [ "$1" = "" ]
do
echo $1
shift
done
$ cat test_until1
#!/bin/sh
until [ "$1" = "" ]
do
echo $1
shift
done
$ ./test_until1 un "deux trois" quatre
un
deux trois
quatre
$ cat test_until2
#!/bin/sh
compteur=5
until [ $compteur -lt 0 ]
do
echo $compteur
compteur=expr $compteur - 1
done
$ cat test_until2
#!/bin/sh
compteur=5
until [ $compteur -lt 0 ]
do
echo $compteur
compteur=expr $compteur - 1
done
$ ./test_until2
5
4
3
2
1
0
N.ABGHOUR Systmes dexploitation : Linux
Contrle du flux d
Contrle du flux d
ex
ex
boguage d
boguage d