Vous êtes sur la page 1sur 110

N.

ABGHOUR Systmes dexploitation : Linux


UNIX AVANCE
UNIX AVANCE
N.ABGHOUR
N.ABGHOUR
nabghour@gmail.com
nabghour@gmail.com
N.ABGHOUR Systmes dexploitation : Linux
Sommaire
Sommaire
1. Gnralits
2. Commandes frquemment utilises
Gestion des fichiers et des rpertoires
Gestion des droits
Manipulation des contenus de fichiers ligne par ligne
Divers
Commandes de manipulation de variables et de paramtres
3. Shell
Substitution
Variables
Quotation
Caractres de redirection
4. Script shell
Rle dun script shell
Passage de paramtres
Tests
Structure de contrle
Fonction
Gestion des processus
N.ABGHOUR Systmes dexploitation : Linux
Bibliographie
Bibliographie
Learning the Unix Operating System, chez OReilly
Learning the vi editor, chez OReilly
N.ABGHOUR Systmes dexploitation : Linux
Les Syst
Les Syst

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

e sur les fichiers :


e sur les fichiers :
ls
ls
-
-
l
l
718024 drwxr-xr-x 3 nabghour fsac 4096 2006-01-24 21:13 .
2769 drwxr-xr-x 33 nabghour fsac 4096 2006-01-24 20:29 ..
718024 -rwxr-xr-x 2 nabghour fsac 231 2006-01-24 21:25 toto
Les droits
numro
dinode
nombre de
liens physique
sur le fichier
Propritaire
Groupe du
propritaire
la taille du
fichier
La date de dernire
modification du fichier
Le nom du
fichier
Le type du
fichier
$ ls -ail
N.ABGHOUR Systmes dexploitation : Linux
Types et modes d
Types et modes d

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

ciaux pour le shell


ciaux pour le shell
$ ls *
achat bateau chat chateau cheval chien gateau rateau
$ ls ?ateau
bateau gateau rateau
$ ls *ateau
bateau chateau gateau rateau
$ ls [gr]ate*
gateau rateau
$ ls [^br]ateau
gateau
$ ls [a-c]*
achat bateau chat chateau cheval chien
N.ABGHOUR Systmes dexploitation : Linux
Changement et affichage du r
Changement et affichage du r

pertoire courant : cd, pwd


pertoire courant : cd, pwd
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
$ pwd
/home/nabghour
$ cd /var/log
$ pwd
/var/log
$ cd ..
$ pwd
/var
$
$ cd log
$ pwd
/var/log
$ cd .
$ pwd
/var/log
$ cd ../..
$ pwd
/
$
N.ABGHOUR Systmes dexploitation : Linux
Manipulation des noms de fichiers :
Manipulation des noms de fichiers :
basename
basename
,
,
dirname
dirname
La commande dirname ne conserve que les rpertoires en tte du chemin
daccs du fichier.
La commande dirname ne conserve que les rpertoires en tte du chemin
daccs du fichier.
dirname nom de fichier
La commande basename limine les rpertoires en tte du chemin daccs
du fichier.
La commande basename limine les rpertoires en tte du chemin daccs
du fichier.
basename nom de fichier
$ basename /usr/local/bin/lynx
lynx
$
$ dirname /usr/local/bin/lynx
/usr/local/bin
$
N.ABGHOUR Systmes dexploitation : Linux
Changement des droits d
Changement des droits d

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

un fichier : chown, chgrp, touch


un fichier : chown, chgrp, touch
Modifier le propritaire et le groupe dun fichier
Modifier le propritaire et le groupe dun fichier
chown OPTIONS user : groupe fichiers...
Modifier le groupe dun fichier
Modifier le groupe dun fichier
chgrp OPTIONS groupe fichiers...
Modifier lhorodatage dun fichier
Modifier lhorodatage dun fichier
touch fichier
N.ABGHOUR Systmes dexploitation : Linux
Droits d
Droits 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

ation de liens physique : ln


ation de liens physique : ln
$ ls -il
Total 4
65329 -rw-r--r--1 nabghour fsac 14 8 fv 13:22 fichier
65350 -rw-r--r--1 nabghour fsac 36 25 jan 11:36 fichier2
$ cat fichier
Bonjour
Au revoir
$ ln fichier fichier3
$ ls -il
Total6
65329 -rw-r--r 2 nabghour fsac 14 8 fv 13:22 fichier
65350 -rw-r--r 1 nabghour fsac 36 25 jan 11:36 fichier2
65329 -rw-r--r 2 nabghour fsac 14 8 fv 13:22 fichier3
$ echo toto>>fichier
$ cat fichier
Bonjour
Au revoir
toto
$ cat fichier3
Bonjour
Au revoir
toto
N.ABGHOUR Systmes dexploitation : Linux
Cr
Cr

ation de liens physique : ln


ation de liens physique : ln
$ rm fichier
$ ls il
Total 4
65350 -rw-r--r--1 nabghour fsac 36 25 jan 11:36 fichier2
65329 -rw-r--r--1 nabghour fsac 14 8 fv 13:22 fichier3
$ cat fichier3
Bonjour
Au revoir
toto
$ ln fichier3 fichier4
$ ls -il
Total6
65350 -rw-r--r 1 nabghour fsac 36 25 jan 11:36 fichier2
65329 -rw-r--r 2 nabghour fsac 14 8 fv 13:22 fichier3
65329 -rw-r--r 2 nabghour fsac 14 8 fv 13:22 fichier4
N.ABGHOUR Systmes dexploitation : Linux
Cr
Cr

ation de liens symbolique : ln


ation de liens symbolique : ln
-
-
s
s
$ ls -il
Total 6
65350 -rw-r--r 1 nabghour fsac 36 25 jan 11:36 fichier2
65329 -rw-r--r 2 nabghour fsac 14 8 fv 13:22 fichier3
65329 -rw-r--r 2 nabghour fsac 14 8 fv 13:22 fichier4
$ ln -s fichier3 fichier5
$ ls -il
total 6
65350 -rw-r--r-- 1 nabghour fsac 36 25 jan 11 :36 fichier2
65329 -rw-r--r-- 2 nabghour fsac 24 8 fv 13 :24 fichier3
65329 -rw-r--r-- 2 nabghour fsac 24 8 fv 13 :24 fichier4
65378 lrwxr-xr-x 1 nabghour fsac 8 8 fv 13 :24 fichier5 fichier3
$ echo titi >> fichier3
$ cat fichier3
Bonjour
Au revoir
toto
titi
$ cat fichier5
N.ABGHOUR Systmes dexploitation : Linux
Cr
Cr

ation de liens symbolique : ln


ation de liens symbolique : ln
-
-
s
s
$ cat fichier5
Bonjour
AU revoir
toto
titi
$ rm fichier3
$ ls -il
Total 4
65350 -rw-r--r-- 1 nabghour fsac 36 25 jan 11 :36 fichier2
65329 -rw-r--r-- 1 nabghour fsac 24 8 fv 13 :24 fichier4
65378 lrwxr-xr-x 1 nabghour fsac 8 8 fv 13 :24 fichier5 fichier3
$ cat fichier5
cat :fichier5 :No such file or directory
N.ABGHOUR Systmes dexploitation : Linux
D
D

placement ou renommage des fichiers : mv


placement ou renommage des fichiers : mv
Dplacement ou renommage des fichiers En ralit, la commande
mv neffectue pas de copie de donnes physique mais modifie le
nom et transfre les informations dun rpertoire lautre.
Dplacement ou renommage des fichiers En ralit, la commande
mv neffectue pas de copie de donnes physique mais modifie le
nom et transfre les informations dun rpertoire lautre.
mv file1 file2
$ ls -i
65338 fichier1 65340 fichier2
$ mv fichier1 fichier3
$ ls -i
65340 fichier2 65338 fichier3
$ mv fichier2 ..
$ ls -i ../fichier2
65340 ../fichier2
$
N.ABGHOUR Systmes dexploitation : Linux
Copie de fichiers : cp
Copie de fichiers : cp
Duplique physiquement les donnes dun fichier
Si file1 est le fichier existant copier
si file2 nexiste pas, il est cr de faon identique file1 ;
si file2 existe et est un fichier, il est cras par le contenu de file1 ;
si file2 est un rpertoire, alors file1 est dupliqu sous le mme
nom dans le rpertoire file2.
Si file1 est un rpertoire existant copier, il faut utiliser loption r
si file2 nexiste pas, il est cr de facon identique file1
(sous rpertoires et sous-fichiers compris, rcursivement) ;
si file2 est un rpertoire, alors file1 est dupliqu sous le mme
nom rcursivement dans le rpertoire file2.
cp liste-de-fichiers repertoire : permet de dupliquer les fichiers
dans le rpertoire.
Duplique physiquement les donnes dun fichier
Si file1 est le fichier existant copier
si file2 nexiste pas, il est cr de faon identique file1 ;
si file2 existe et est un fichier, il est cras par le contenu de file1 ;
si file2 est un rpertoire, alors file1 est dupliqu sous le mme
nom dans le rpertoire file2.
Si file1 est un rpertoire existant copier, il faut utiliser loption r
si file2 nexiste pas, il est cr de facon identique file1
(sous rpertoires et sous-fichiers compris, rcursivement) ;
si file2 est un rpertoire, alors file1 est dupliqu sous le mme
nom rcursivement dans le rpertoire file2.
cp liste-de-fichiers repertoire : permet de dupliquer les fichiers
dans le rpertoire.
cp OPTIONS file1... file2
N.ABGHOUR Systmes dexploitation : Linux
Exemple : cp
Exemple : cp
$ ls -il
total 0
65338 -rw-r--r-- 1 nabghour fsac 0 20 fv 17 :58 fichier3
$ cp fichier3 fichier4
$ ls -il
total 0
65338 -rw-r--r-- 1 nabghour fsac 0 20 fv 17 :58 fichier3
65341 -rw-r--r-- 1 nabghour fsac 0 20 fv 18 :01 fichier4
$ mkdir Rep1 SousRep1
$ cp fichier3 Rep1
$ ls Rep1
fichier3
$ cp -r SousRep1 Rep1
$ ls -R Rep1
fichier3 SousRep1
$
N.ABGHOUR Systmes dexploitation : Linux
Suppression de fichiers : rm
Suppression de fichiers : rm
rm Remove
rm [-] [-fir] filename...
Options :
-r Destruction rcursive
-i Mode interactif
-f Force
rm Remove
rm [-] [-fir] filename...
Options :
-r Destruction rcursive
-i Mode interactif
-f Force
rm fichiers..
$alias
ll=ls l
rm =rm i
$ls
file Rep-contenant-1000-fichier/
$ rm file
Voulez-vous bien supprimer file [y|n]: y
$ ls
Rep-contenant-1000-fichier/
$rm rf Rep-contenant-1000-fichier/
N.ABGHOUR Systmes dexploitation : Linux
Recherche de fichiers : find
Recherche de fichiers : find
Rechercher des fichiers dans une hirarchie de rpertoires
-name : motif Fichier dont le nom de base (sans les rpertoires du chemin daccs),
correspond au motif du shell
-perm mode : fichier dont les autorisations daccs sont fixes exactement au mode
indiqu
-type type : fichier du type donn (bloc b, caractre c, rpertoire d,
tube nomm p, rgulier f, liens symbolique l, socket s)
-links n : fichiers ayant n liens
-user utilisateur : fichier appartenant lutilisateur indiqu
-nouser : fichier nappartenant aucun utilisateur non numrique
-group groupe : fichier appartenant au groupe indiqu
-nogroup : fichier nappartenant aucun groupe non numrique
-size n : Fichier utilisant n blocks.
Rechercher des fichiers dans une hirarchie de rpertoires
-name : motif Fichier dont le nom de base (sans les rpertoires du chemin daccs),
correspond au motif du shell
-perm mode : fichier dont les autorisations daccs sont fixes exactement au mode
indiqu
-type type : fichier du type donn (bloc b, caractre c, rpertoire d,
tube nomm p, rgulier f, liens symbolique l, socket s)
-links n : fichiers ayant n liens
-user utilisateur : fichier appartenant lutilisateur indiqu
-nouser : fichier nappartenant aucun utilisateur non numrique
-group groupe : fichier appartenant au groupe indiqu
-nogroup : fichier nappartenant aucun groupe non numrique
-size n : Fichier utilisant n blocks.
find dir expr command
N.ABGHOUR Systmes dexploitation : Linux
Recherche de fichiers : find
Recherche de fichiers : find
-inum n : fichier dont le numro di-node est n
-newer fichier : fichier modifi plus rcemment que le fichier indiqu
-atime n : dernier accs au fichier il y a n*24 heures
-mtime n : fichier dont les donnes ont t modifies il y a n*24 heures
-ctime n : dernire modification du statut du fichier il y a n*24 heures
-print affiche le nom complet du fichier sur la sortie standard
-ls affiche le nom du fichier en cours dans le format ls dils
-exec cmd : excute la commande jusqu ce quon rencontre un ;,
La chane \{\}est remplace par le nom du fichier en cours
de traitement
-ok comme -exec mais interroge dabord lutilisateur (demande de confirmation)
-inum n : fichier dont le numro di-node est n
-newer fichier : fichier modifi plus rcemment que le fichier indiqu
-atime n : dernier accs au fichier il y a n*24 heures
-mtime n : fichier dont les donnes ont t modifies il y a n*24 heures
-ctime n : dernire modification du statut du fichier il y a n*24 heures
-print affiche le nom complet du fichier sur la sortie standard
-ls affiche le nom du fichier en cours dans le format ls dils
-exec cmd : excute la commande jusqu ce quon rencontre un ;,
La chane \{\}est remplace par le nom du fichier en cours
de traitement
-ok comme -exec mais interroge dabord lutilisateur (demande de confirmation)
find dir expr command
N.ABGHOUR Systmes dexploitation : Linux
Recherche de fichiers : find
Recherche de fichiers : find
Exemple 1 : Chercher dans larborescence /usr les rpertoires dont le nom
commence par local:
$ find /usr -name "local*" -type d -print
Exemple 2 : Chercher dans le rpertoire courant les fichiers .c de plus de 40Ko
$ find . -name *.c type f -size +80 -print
Exemple 3 :chercher les liens symboliques qui se nomment local dans /usr
$ find /usr -name "local" -type l -print
Exemple 4 :supprimer dans votre rpertoire daccueil les fichiers a.out ou .o
datant de plus de 7 jours
$ find ~ \( -name a.out -o -name *.o \) \
-mtime +7 -exec rm \{\} \;
N.ABGHOUR Systmes dexploitation : Linux
Recherche de fichiers : find
Recherche de fichiers : find
Exemple 1 : chercher dans le rpertoire courant les fichiers excutable
appartenant lutilisateur smi4
$ find . -user smi4 perm +111 -type f -print
Exemple 2 : Chercher les fichiers .c ayant le droit 644
$ find . -name *.c -perm 644 type f -print
Exemple 3 :chercher les rpertoire qui ne sont pas accessible dans /usr
$ find /usr -type d ! perm +111 -print
Exemple 4 :suppression des fichiers a.out ou .o datant de plus de 7 jours et
ayant au moins le droit dexcution pour le propritaire, les membres
du groupe et les autres
$ find $HOME \( -name a.out -o -name *.o \) \
-mtime +7 perm -111 -exec rm \{\} \;
N.ABGHOUR Systmes dexploitation : Linux
Expression r
Expression r

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

un Shell Script : exemple 1


un Shell Script : exemple 1
$ cat script2.sh
# !/bin/sh
# Mon programme qui affiche les paramtres de la ligne de
# commande
echo "* Le nom du programme est : $0"
echo "* Le troisime paramtre est : $3"
echo "* Le nombre de paramtre est : $#"
echo "* Tous les paramtres (mots individuels) : $*"
echo "* Tous les paramtres : $@"
exit 0
$ cat script2.sh
# !/bin/sh
# Mon programme qui affiche les paramtres de la ligne de
# commande
echo "* Le nom du programme est : $0"
echo "* Le troisime paramtre est : $3"
echo "* Le nombre de paramtre est : $#"
echo "* Tous les paramtres (mots individuels) : $*"
echo "* Tous les paramtres : $@"
exit 0
$ ./script2.sh un "deux" "trois quatre" cinq
* Le nom du programme est : ./script2.sh
* Le troisime paramtre est : trois quatre
* Le nombre de paramtre est : 4
* Tous les paramtres (mots individuels) : un deux trois
quatre cinq
* Tous les paramtres : un deux trois quatre cinq
$
N.ABGHOUR Systmes dexploitation : Linux
Passage de param
Passage de param

tres
tres

un Shell Script : exemple 2


un Shell Script : exemple 2
$ cat script3.sh
#!/bin/sh
echo "Nombre de parametres = " $#
echo "Paramtre numro 0 = " $0
echo "Paramtre numro 1 (nom du rpertoire) = " $1
echo
echo "No du processus en cours ($0) = $$"
mozilla &
echo "No du dernier processus en background (mozilla)= $!"
echo
date
echo "Nombre de fichiers dans le repertoire $1 =";ls $1| wc -w
$ cat script3.sh
#!/bin/sh
echo "Nombre de parametres = " $#
echo "Paramtre numro 0 = " $0
echo "Paramtre numro 1 (nom du rpertoire) = " $1
echo
echo "No du processus en cours ($0) = $$"
mozilla &
echo "No du dernier processus en background (mozilla)= $!"
echo
date
echo "Nombre de fichiers dans le repertoire $1 =";ls $1| wc -w
$ ./script3.sh /etc
Nombre de parametres = 1
Paramtre numro 0 = ./script3.sh
Paramtre numro 1 (nom du rpertoire) = /etc
. . . . . . .
N.ABGHOUR Systmes dexploitation : Linux
Passage de param
Passage de param

tres
tres

un Shell Script : exemple 3


un Shell Script : exemple 3
$ cat script3.sh
#!/bin/sh
ls
echo "exemple code de retour OK (ls)= $? "
ls toto
echo "exemple code de retour KO = $? "
$ cat script3.sh
#!/bin/sh
ls
echo "exemple code de retour OK (ls)= $? "
ls toto
echo "exemple code de retour KO = $? "
$ ls
chat chien
$ ./script3.sh
chat chien
exemple code de retour OK (ls)= 0
toto : no sush file or directory
exemple code de retour KO = 1
$
N.ABGHOUR Systmes dexploitation : Linux
Passage de param
Passage de param

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

cution : break, continue


cution : break, continue
permet de sortir dune boucle for, while ou until.
Si n est prcis, il indique le nombre dimbrication concerne par le break.
permet de sortir dune boucle for, while ou until.
Si n est prcis, il indique le nombre dimbrication concerne par le break.
break ou break n
permet de passer litration suivante dune boucle for, while ou until.
Si n est prcis, il indique le nombre dimbrication concerne par le continue.
permet de passer litration suivante dune boucle for, while ou until.
Si n est prcis, il indique le nombre dimbrication concerne par le continue.
continue n
N.ABGHOUR Systmes dexploitation : Linux
$ cat test_continue
#!/bin/sh
for i in 1 2 3 4
do
for j in 1 2 3 4 5
do
if [ $j eq 2 ]
then
continue 2
else
echo "[$i,$j]"
fi
done
done
$ cat test_continue
#!/bin/sh
for i in 1 2 3 4
do
for j in 1 2 3 4 5
do
if [ $j eq 2 ]
then
continue 2
else
echo "[$i,$j]"
fi
done
done
Exemple : break, continue
Exemple : break, continue
$./test_continue
[1,1]
[2,1]
[3,1]
[4,1]
N.ABGHOUR Systmes dexploitation : Linux
D
D

boguage d
boguage d

un script shell : set


un script shell : set
-
-
x
x
Placer en dbut de script la ligne suivante :
set -x
Exemple:
$ cat test_set-x
#!/bin/sh
set- x
echo $HOME
$ cat test_set-x
#!/bin/sh
set- x
echo $HOME
$ ./test_set-x
+echo /home/nabghour
/home/nabghour
N.ABGHOUR Systmes dexploitation : Linux
Listes de commandes
Listes de commandes
Une squence de commande scrira :
commande1 ; commande 2 ;...
Ou
Commande1
Commande2
...
Attention, chaque nouvelle commande (non interne) est excute dans
un nouveau processus.
Excution dans un Sous Shell :
(commande1 ; commande2)
Exemple : supposons que le rpertoire courant est : /home/toto
pwd; (cd repertoire ; touch toto; pwd); pwd
excute la commande touch toto sans changer la valeur du rpertoire initial.
N.ABGHOUR Systmes dexploitation : Linux
Fonction
Fonction
On peut regrouper les commandes au sein dune fonction.
Une fonction se dfinit de la manire suivante :
Nom_fonction
Nom_fonction
()
()
{
{
liste
liste
-
-
commandes
commandes
}
}
Les paramtres au sein de la fonction sont accessibles via:
$1, $2, ... $@, $#.
Lappel dune fonction se fait de la manire suivante :
Nom_fonction parametre1 parametre2 ...
Une fonction doit tre dclare avant de pouvoir tre
excute.
N.ABGHOUR Systmes dexploitation : Linux
Code de retour : return, exit
Code de retour : return, exit
Renvoie une valeur de retour pour la fonction shell.
Renvoie une valeur de retour pour la fonction shell.
return n
Provoque larrt du shell courant avec un code retour de n sicelui-ci est
spcifi. Sil nest pas spcifi, il sagira de la valeur deretour de la dernire
commande excute.
Provoque larrt du shell courant avec un code retour de n sicelui-ci est
spcifi. Sil nest pas spcifi, il sagira de la valeur deretour de la dernire
commande excute.
exit n
N.ABGHOUR Systmes dexploitation : Linux
Gestion des signaux :
Gestion des signaux :
trap
trap
,
,
kill
kill
Il est possible de faire intercepter des signaux par le shell. Ces signaux sont
gnrs par des vnements lancs par lutilisateur lors de lexcution du shell,
par exemple :
1 : coupure de ligne
2 : arrt (CTRL+C)
9 : destruction (NON INTERCEPTABLE)
15 : fin de process
Intercepte le signal donn lorsquil se prsente et effectue la commande.
Lexcution se poursuit ensuite en reprenant lendroit de linterruption.
Intercepte le signal donn lorsquil se prsente et effectue la commande.
Lexcution se poursuit ensuite en reprenant lendroit de linterruption.
trap commandes numro_de_signal
$ trap "rm -f /tmp/FICTMP ; exit" 2
Envoyer un signal un processus de pid donn
Envoyer un signal un processus de pid donn
kill -signal pid