Download Shell Unix PDF

TitleShell Unix
File Size2.4 MB
Total Pages275
Table of Contents
                            Chez le même éditeur
Avant-propos
Table des matières
1. Principes des scripts Shell
	Le shell Unix
	Exécution d’un script
	Conclusion
	Exercices
2. Programmation Shell
	Premier aperçu
	Premier script, rm_secure
	Analyse détaillée
	Performances
	Exemple d’exécution
	Conclusion
	Exercices
3. Évaluation d’expressions
	Calcul arithmétique
	Invocation de commande
	Portées et attributs des variables
	Paramètres
	Protection des expressions
	Tableaux
	Évaluation explicite d’une expression
	Conclusion
	Exercices
4. Éléments de programmation shell
	Commandes et code de retour
	Redirections d’entrées-sorties
	Structures de contrôle
	Conclusion
5. Commandes, variables et utilitaires système
	Commandes internes
	Commandes externes
	Conclusion
	Exercices
6. Programmation shell avancée
	Processus fils, parallélisme
	Arrière-plan et démons
	Signaux
	Communication entre processus
	Entrées-sorties
	Interface utilisateur
	Déboguer un script
	Virgule flottante
	Conclusion
7. Expressions régulières – Grep
	Outil grep
	Recherche récursive avec find
	Conclusion
	Exercices
8. Sed
	Présentation
	Utilisation de Sed
	Conclusion
	Exercice
9. Awk
	Fonctionnement de Awk
	Enregistrements et champs
	Structures de contrôle
	Expressions
	Retour sur les affichages
	Conclusion
	Exercices
10. Bonne écriture d’un script
	Présentation générale
	Les variables
	Gestion des erreurs
	Les fonctions
	Conclusion
	Exercice
Annexes
	A - Solutions des exercices
		Chapitre 1
		Chapitre 2
		Chapitre 3
		Chapitre 4
		Chapitre 5
		Chapitre 7
		Chapitre 8
	B - Bibliographie
Index
                        
Document Text Contents
Page 1

logoEyrollesdef


Programmer des scripts puissants et portables
Les systèmes Linux et plus généralement Unix permettent aux utilisateurs, administrateurs, et développeurs de réa-
liser des tâches complètes en regroupant simplement quelques instructions dans des fichiers de scripts. Mais pour
cela, il faut auparavant maîtriser la puissance du shell, ainsi que la complexité apparente de sa syntaxe. Cet ouvrage
vous aidera à comprendre progressivement toutes les subtilités de ce langage de programmation, afin que vous soyez
capable d’écrire rapidement des scripts robustes, puissants et portables pour Bash ou shell Korn. Il comporte en
outre une présentation détaillée des outils Grep et Find, ainsi que des langages Sed et Awk dans leurs utilisations les
plus courantes. Avec à l’appui de nombreux exemples et exercices corrigés, l’auteur insiste sur la mise en pratique
des notions abordées : des scripts complets prêts à l’usage sont disponibles sur l’extension web du livre, pour illus-
trer les méthodes de programmation proposées.

À qui s’adresse cet ouvrage ?
– Aux étudiants en informatique (1er et 2e cycles universitaires, écoles d’ingénieurs…)
– Aux programmeurs Linux et Unix
– Aux administrateurs système en charge d’un parc Linux ou Unix

Au sommaire
Principe des scripts shell • Le shell Unix • Exécution d’un script • Programmation shell • Premier aperçu •
Premier script, rm_secure • Analyse détaillée • Performances • Exemple d’exécution • Évaluation d’ex-
pressions • Variables • Calcul arithmétique • Invocation de commande • Portées et attributs des variables
• Paramètres • Protection des expressions • Tableaux • Évaluation explicite d’une expression • Éléments
de programmation shell • Commandes et code de retour • Redirections d’entrées-sorties • Structures de
contrôle • Commandes, variables et utilitaires système • Commandes internes • Commandes externes •
Programmation shell avancée • Processus fils, parallélisme • Arrière-plan et démons • Signaux •
Communication entre processus • Entrées-sorties • Interface utilisateur • Déboguer un script • Virgule
flottante • Expressions régulières - Grep • Outil Grep • Recherche récursive avec find • Sed • Présentation
• Utilisation de Sed • Awk • Fonctionnement de Awk • Enregistrements et champs • Structures de
contrôle • Expressions • Retour sur les affichages • Bonne écriture d’un script • Présentation générale •
Variables • Gestion des erreurs • Fonctions • Solutions des exercices.

C. Blaess
Diplômé de l’Esigelec
(Rouen) et titulaire
d’un DEA d’intelligence
artificielle, Christophe
Blaess est ingénieur
indépendant en
informatique depuis
une quinzaine d’années.
Il réalise des missions
de conseil et de
développement axées
sur les aspects industriels
de Linux (systèmes
embarqués, temps-réel,
etc.), ainsi que sur
l’administration et le
déploiement de logiciels
libres. Auteur de plusieurs
ouvrages et de nombreux
articles sur Linux,
il anime des séances de
formation professionnelle
dans différents domaines
touchant à la
programmation système
sous Unix et Linux.

C
.

B
la

e
s
s

C
on

ce
pt

io
n

:
N

or
d

C
om

po

C h r i s t o p h e B l a e s s

Shells
Linux et Unix

par la pratique

Sur le site www.editions-eyrolles.com
– Téléchargez le code source de tous les scripts de l'ouvrage
– Dialoguez avec l'[email protected]

39 €

9
7

8
2

2
1

2
1

2
2

7
3

2

C
od

e
éd

it
eu

r
:

G
1
2
2
7
3

IS
B

N
:

9
7
8
-2

-2
1
2
-1

2
2
7
3
-2

Shells
Linux et Unix par la pratique

S
h
e
ll
s

L
in

u
x

et
U

n
ix

p
ar

l
a

p
ra

ti
q
u
e

12273_ShellsLinux_XP 18/12/07 8:59 Page 1

Page 2

Shells
Linux et Unix

par la pratique

Titre_SHELLS 7/12/07 14:35 Page 2

01_pdt_blaess.indd 1 17/12/07 10:17:45

Page 137

Shells Linux et Unix par la pratique
124

On peut remarquer dans ce script l’emploi de la commande continue pour passer à
l’élément suivant de l’itération en sautant la fin de la boucle.

Quand une fonction se termine, elle renvoie un code de retour qui correspond à celui de
la dernière instruction exécutée. L’instruction return permet, si on le désire, de préciser
explicitement un code de retour.

$ ./descente_repertoires.sh /dev/

/dev/

ida

inet

pts

rd

$ ./descente_repertoires.sh /usr/src/linux/arch/

/usr/src/linux/arch/

i386

boot

compressed

tools

kernel

lib

math-emu

mm

$ ./descente_repertoires.sh /proc/sys/net/

/proc/sys/net/

802

core

ethernet

ipv4

conf

all

default

eth0

lo

neigh

default

eth0

lo

route

token-ring

unix

$

Shells Livre Page 124 Vendredi, 7. d cembre 2007 8:24 08

Page 138

Éléments de programmation shell
CHAPITRE 4

125

On prendra bien note que le code de retour ne sert que dans les tests (par exemple, if)
mais qu’il ne peut normalement pas être stocké dans une variable, ou affiché. Il n’est pas
utilisé pour transmettre un résultat, mais bien une condition de réussite ou d’échec.

Le code de retour correspond à une valeur vraie s’il est nul, et fausse sinon. En voici une
illustration :

fonction_3.sh :

1 #! /bin/sh
2
3 function renvoie_un ()
4 {
5 return 1
6 }
7
8 function renvoie_zero ()
9 {
10 return 0
11 }
12
13 echo -n "renvoie_un : "
14 if renvoie_un ; then echo vrai ; else echo faux ; fi
15 echo -n "renvoie_zero : "
16 if renvoie_zero ; then echo vrai ; else echo faux ; fi

Ce script se déroule ainsi :

Lorsqu’une fonction doit renvoyer une valeur qui doit être utilisée par la suite, par exemple
stockée dans une variable, deux possibilités s’offrent à nous :

• La fonction peut écrire son résultat sur sa sortie standard grâce à la commande echo, la
valeur pouvant être récupérée grâce à l’opérateur $( ) que nous avons rencontré au
chapitre précédent.

• La routine peut transmettre son résultat dans une variable globale (surtout pas locale !)
qui, par convention, prendra le même nom que la fonction.

Ces deux méthodes sont illustrées dans le script suivant :

fonction_4.sh :

1 #! /bin/sh
2
3 function carre
4 {

$ ./fonction_3.sh

renvoie_un : faux

renvoie_zero : vrai

$

Shells Livre Page 125 Vendredi, 7. d cembre 2007 8:24 08

Page 274

Index
261

shell 2, 13, 132
Bash 3, 5
Bourne 2
C 2, 47
Korn 3, 5, 29, 139

shift 20, 62, 64, 142
SIGCHLD 165
SIGCONT 84, 86
SIGHUP 160, 164
SIGINT 82, 84, 159, 164, 165
SIGKILL 164, 165
signal 82, 163
SIGQUIT 164
SIGSEGV 165
SIGSTOP 165
SIGTERM 164
SIGTSTP 165
SIGTTIN 84
SIGTTOU 84
SIGUSR1 164
SIGUSR2 164
sleep 82, 156, 157
Solaris 2, 233
sort 152
sortie dÕerreur 90, 98, 100
sortie standard 90, 98, 100

source 16, 50, 133, 134, 150, 240
sous-cha”ne 33
sous-shell 22, 55, 89
split 152
sprintf (Awk) 232
SQL 104
Stallman (Richard M.) 3
stty 80, 85, 152, 174, 175
sum 151
SUSv3 4, 5, 150
syslog 162, 177

T

tail 79, 152
tar 24, 152
Tcl/Tk 1
Tcsh 3
tee 152, 171
terminfo 175
test 6, 21, 105
times 177
tostop 85
touch 142, 152
tput 175
tr 152
trap 23, 165

true 82, 113, 152
typeset 56

U

UID 149
ulimit 177
umask 103
uname 109
Unix 2, 3, 155, 206
until 112

V

variable 17, 29, 50, 235
environnement 51
locale 50

W

wait 86, 157, 158
wc 152
while 18, 112, 113, 118, 140, 142,

175
Windows 5

X

xargs 172, 174, 192

Shells Livre Page 261 Vendredi, 7. d cembre 2007 8:24 08

Page 275

logoEyrollesdef


Programmer des scripts puissants et portables
Les systèmes Linux et plus généralement Unix permettent aux utilisateurs, administrateurs, et développeurs de réa-
liser des tâches complètes en regroupant simplement quelques instructions dans des fichiers de scripts. Mais pour
cela, il faut auparavant maîtriser la puissance du shell, ainsi que la complexité apparente de sa syntaxe. Cet ouvrage
vous aidera à comprendre progressivement toutes les subtilités de ce langage de programmation, afin que vous soyez
capable d’écrire rapidement des scripts robustes, puissants et portables pour Bash ou shell Korn. Il comporte en
outre une présentation détaillée des outils Grep et Find, ainsi que des langages Sed et Awk dans leurs utilisations les
plus courantes. Avec à l’appui de nombreux exemples et exercices corrigés, l’auteur insiste sur la mise en pratique
des notions abordées : des scripts complets prêts à l’usage sont disponibles sur l’extension web du livre, pour illus-
trer les méthodes de programmation proposées.

À qui s’adresse cet ouvrage ?
– Aux étudiants en informatique (1er et 2e cycles universitaires, écoles d’ingénieurs…)
– Aux programmeurs Linux et Unix
– Aux administrateurs système en charge d’un parc Linux ou Unix

Au sommaire
Principe des scripts shell • Le shell Unix • Exécution d’un script • Programmation shell • Premier aperçu •
Premier script, rm_secure • Analyse détaillée • Performances • Exemple d’exécution • Évaluation d’ex-
pressions • Variables • Calcul arithmétique • Invocation de commande • Portées et attributs des variables
• Paramètres • Protection des expressions • Tableaux • Évaluation explicite d’une expression • Éléments
de programmation shell • Commandes et code de retour • Redirections d’entrées-sorties • Structures de
contrôle • Commandes, variables et utilitaires système • Commandes internes • Commandes externes •
Programmation shell avancée • Processus fils, parallélisme • Arrière-plan et démons • Signaux •
Communication entre processus • Entrées-sorties • Interface utilisateur • Déboguer un script • Virgule
flottante • Expressions régulières - Grep • Outil Grep • Recherche récursive avec find • Sed • Présentation
• Utilisation de Sed • Awk • Fonctionnement de Awk • Enregistrements et champs • Structures de
contrôle • Expressions • Retour sur les affichages • Bonne écriture d’un script • Présentation générale •
Variables • Gestion des erreurs • Fonctions • Solutions des exercices.

C. Blaess
Diplômé de l’Esigelec
(Rouen) et titulaire
d’un DEA d’intelligence
artificielle, Christophe
Blaess est ingénieur
indépendant en
informatique depuis
une quinzaine d’années.
Il réalise des missions
de conseil et de
développement axées
sur les aspects industriels
de Linux (systèmes
embarqués, temps-réel,
etc.), ainsi que sur
l’administration et le
déploiement de logiciels
libres. Auteur de plusieurs
ouvrages et de nombreux
articles sur Linux,
il anime des séances de
formation professionnelle
dans différents domaines
touchant à la
programmation système
sous Unix et Linux.

C
.

B
la

e
s
s

C
on

ce
pt

io
n

:
N

or
d

C
om

po

C h r i s t o p h e B l a e s s

Shells
Linux et Unix

par la pratique

Sur le site www.editions-eyrolles.com
– Téléchargez le code source de tous les scripts de l'ouvrage
– Dialoguez avec l'[email protected]

Shells
Linux et Unix par la pratique

S
h
e
ll
s

L
in

u
x

et
U

n
ix

p
ar

l
a

p
ra

ti
q
u
e

12273_ShellsLinux_XP 18/12/07 8:59 Page 1

Similer Documents