Bap: corrections
This commit is contained in:
parent
1f6e889f17
commit
fca30288b5
8 changed files with 211 additions and 100 deletions
|
@ -13,8 +13,9 @@
|
||||||
<p>
|
<p>
|
||||||
Une fois que vous avez compris qu'un script n'est rien d'autre qu'une
|
Une fois que vous avez compris qu'un script n'est rien d'autre qu'une
|
||||||
suite de commandes, vous avez fait un grand pas ; chaque script
|
suite de commandes, vous avez fait un grand pas ; chaque script
|
||||||
consiste à poser des rails : l'utilisateur n'a plus qu'à les
|
consiste à poser des rails : l'utilisateur n'a plus qu'à les suivre
|
||||||
suivre.
|
(si tout cela ne vous paraît pas évident, consultez la page d'<a
|
||||||
|
href="script.html">initiation à la programmation en shell</a>).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>Toutefois, avoir posé les rails ne suffit pas toujours : il peut
|
<p>Toutefois, avoir posé les rails ne suffit pas toujours : il peut
|
||||||
|
@ -769,9 +770,8 @@ code de retour 0 comme
|
||||||
<p>
|
<p>
|
||||||
Il existe une commande <code>test</code>, qui évalue des expressions
|
Il existe une commande <code>test</code>, qui évalue des expressions
|
||||||
booléennes (c'est-à-dire dont la valeur ne peut être que vraie ou
|
booléennes (c'est-à-dire dont la valeur ne peut être que vraie ou
|
||||||
fausse, 1 ou 0) passées en argument, et renvoie un code de retour en
|
fausse) passées en argument, et renvoie un code de retour en fonction du
|
||||||
fonction du résultat. Elle est bien utile pour les scripts.
|
résultat. Elle est bien utile pour les scripts. Exemple :
|
||||||
Exemple :
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
|
@ -780,12 +780,17 @@ then echo 'La variable vaut foo'
|
||||||
else echo 'La variable ne vaut pas foo'
|
else echo 'La variable ne vaut pas foo'
|
||||||
fi</pre>
|
fi</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Pour en savoir plus sur les opérateurs de test, consultez la page <a
|
||||||
|
href="test.html">tests et calculs arithmétiques</a> Ou bien vous pouvez
|
||||||
|
revenir à la <a href="index.html">page centrale sur le shell</a>, d'où
|
||||||
|
vous pourrez vous orienter vers d'autres parties du cours.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
Auteur : Baptiste Mélès.
|
Auteur : Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-06-03 14:59:10 $" />.
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:03 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -219,7 +219,7 @@ caract
|
||||||
|
|
||||||
<h4>Options à nom long</h4>
|
<h4>Options à nom long</h4>
|
||||||
|
|
||||||
<p>Traditionnellement, et pur des raisons de concision, la majorité
|
<p>Traditionnellement, et pour des raisons de concision, la majorité
|
||||||
des options, sous Unix, est composée d'un tiret et d'une seule
|
des options, sous Unix, est composée d'un tiret et d'une seule
|
||||||
lettre. Toutefois, pour des raisons pratiques, il peut également
|
lettre. Toutefois, pour des raisons pratiques, il peut également
|
||||||
exister des noms d'option longs ; ils sont en général
|
exister des noms d'option longs ; ils sont en général
|
||||||
|
@ -244,12 +244,21 @@ pour les donner en arguments
|
||||||
|
|
||||||
<pre>cc -o foo bar.c gee.c buz.c gog.c</pre>
|
<pre>cc -o foo bar.c gee.c buz.c gog.c</pre>
|
||||||
|
|
||||||
|
<p class="continue">
|
||||||
|
(pour les curieux, sachez que cette commande sert à <em>compiler</em> un
|
||||||
|
programme écrit en langage C, c'est-à-dire à le traduire en langage
|
||||||
|
machine. Mais avant de vous mettre au langage C, attendez de bien
|
||||||
|
connaître le shell, il vous apprendra plus facilement et plus
|
||||||
|
agréablement les bases de la programmation...)
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Pour éviter ces problèmes, on peut utiliser des <em>jokers</em>
|
Pour éviter les problèmes liés à la frappe de longues lignes de
|
||||||
(<em>wildcards</em> en anglais). Pourquoi ce nom ? Eh bien, dans
|
commandes, on peut utiliser des <em>jokers</em> (<em>wildcards</em> en
|
||||||
certains jeux de cartes, le joker permet de remplacer n'importe quelle
|
anglais). Pourquoi ce nom ? Eh bien, dans certains jeux de cartes,
|
||||||
carte ; dans le shell, les jokers permettent de remplacer n'importe
|
le joker permet de remplacer n'importe quelle carte ; dans le
|
||||||
quel caractère ou n'importe quelle séquence de caractères.
|
shell, les jokers permettent de remplacer n'importe quel caractère ou
|
||||||
|
n'importe quelle séquence de caractères.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -487,13 +496,15 @@ commande it <em>cmd</em>
|
||||||
|
|
||||||
<p>Vous êtes maintenant en mesure de faire ces <a
|
<p>Vous êtes maintenant en mesure de faire ces <a
|
||||||
href="&url.tuteurs;unix/exercices/">exercices</a> pour vous
|
href="&url.tuteurs;unix/exercices/">exercices</a> pour vous
|
||||||
entraîner.</p>
|
entraîner. Ou bien vous pouvez revenir à la <a href="index.html">page
|
||||||
|
centrale sur le shell</a>, d'où vous pourrez vous orienter vers d'autres
|
||||||
|
parties du cours.</p>
|
||||||
|
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez.
|
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez.
|
||||||
Modifications : Nicolas George, Baptiste Mélès.
|
Modifications : Nicolas George, Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-05-31 11:33:37 $" />.
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:04 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -19,7 +19,7 @@ Un programme consiste
|
||||||
transformées : il transforme des informations, et c'est pourquoi
|
transformées : il transforme des informations, et c'est pourquoi
|
||||||
l'on parle d'<em>informatique</em>.</p>
|
l'on parle d'<em>informatique</em>.</p>
|
||||||
|
|
||||||
<p> Prenons le programme <code>hachoir</code>, par exemple : on y
|
<p> Prenons un programme <code>hachoir</code>, par exemple : on y
|
||||||
fait entrer des choses, elles sortent sous une autre forme, et dans
|
fait entrer des choses, elles sortent sous une autre forme, et dans
|
||||||
l'intervalle, elles subissent des transformations régulières. Par
|
l'intervalle, elles subissent des transformations régulières. Par
|
||||||
exemple, on fait entrer une vache, il en ressort du steak haché ;
|
exemple, on fait entrer une vache, il en ressort du steak haché ;
|
||||||
|
@ -248,6 +248,10 @@ ls: foo: No such file or directory
|
||||||
Je n'ai pas de fichier foo.
|
Je n'ai pas de fichier foo.
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Pour en savoir plus sur les structures de test, consultez la page sur
|
||||||
|
les <a href="test.html">tests et calculs arithmétiques</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<h2>Redirection des sorties standard et d'erreur</h2>
|
<h2>Redirection des sorties standard et d'erreur</h2>
|
||||||
|
@ -381,13 +385,15 @@ premi
|
||||||
|
|
||||||
<p>Vous êtes maintenant en mesure de faire ces <a
|
<p>Vous êtes maintenant en mesure de faire ces <a
|
||||||
href="&url.tuteurs;unix/exercices/">exercices</a> pour vous
|
href="&url.tuteurs;unix/exercices/">exercices</a> pour vous
|
||||||
entraîner.</p>
|
entraîner. Ou bien vous pouvez revenir à la <a href="index.html">page
|
||||||
|
centrale sur le shell</a>, d'où vous pourrez vous orienter vers d'autres
|
||||||
|
parties du cours.</p>
|
||||||
|
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez.
|
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez.
|
||||||
Modifications : Nicolas George, Baptiste Mélès.
|
Modifications : Nicolas George, Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-07-05 07:18:06 $" />.
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:04 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -35,7 +35,8 @@ L'usage des <strong>fonctions</strong> permet de :
|
||||||
<h3>Un programme sans fonction</h3>
|
<h3>Un programme sans fonction</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Utilisateur de TeX, vous voulez effacer régulièrement tous les fichiers
|
Utilisateur de TeX ou <a href="&url.tuteurs;logiciels/latex/">LaTeX</a>
|
||||||
|
(ou non), vous voulez effacer régulièrement tous les fichiers
|
||||||
<code>.aux</code> et <code>.log</code> qui polluent vos répertoires.
|
<code>.aux</code> et <code>.log</code> qui polluent vos répertoires.
|
||||||
Pour ceux qui ne connaissent pas TeX, sachez que ce sont des fichiers
|
Pour ceux qui ne connaissent pas TeX, sachez que ce sont des fichiers
|
||||||
construits automatiquement, et que l'on peut recréer facilement à partir
|
construits automatiquement, et que l'on peut recréer facilement à partir
|
||||||
|
@ -117,11 +118,11 @@ lignes) ;</li>
|
||||||
la main</i> toutes les occurrences de ce que vous voulez changer, ce
|
la main</i> toutes les occurrences de ce que vous voulez changer, ce
|
||||||
qui :
|
qui :
|
||||||
<ol>
|
<ol>
|
||||||
<li> est <strong>fatiguant</strong> ;</li>
|
<li> est <strong>fatigant</strong> ;</li>
|
||||||
<li> est <strong>fastidieux</strong> ;</li>
|
<li> est <strong>fastidieux</strong> ;</li>
|
||||||
<li> est, surtout, <strong>très peu fiable</strong> : si vous
|
<li> est, surtout, <strong>très peu fiable</strong> : si vous
|
||||||
oubliez une occurrence ou que vous modifiez un endroit alors qu'il ne le
|
oubliez une occurrence ou que vous modifiez un endroit alors qu'il ne le
|
||||||
fallait pas, les conséquences sont parfois graves.</li>
|
fallait pas, les conséquences peuvent être graves.</li>
|
||||||
</ol>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
@ -195,15 +196,12 @@ instruction2
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>
|
<ol>
|
||||||
|
<li>
|
||||||
On commence par <strong>trouver un nom à la fonction</strong>. Vous
|
On commence par <strong>trouver un nom à la fonction</strong>. Vous
|
||||||
pouvez choisir ce nom à votre guise, par exemple liste_des_fichiers,
|
pouvez choisir ce nom à votre guise, par exemple
|
||||||
effacer_fichier, etc.
|
<code>liste_des_fichiers</code>, <code>effacer_fichier</code>, etc. Il
|
||||||
</p>
|
est toutefois fortement recommandé :
|
||||||
|
|
||||||
<p>
|
|
||||||
Il est toutefois fortement recommandé :
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> de <strong>ne pas donner à ses fonctions des noms de commandes
|
<li> de <strong>ne pas donner à ses fonctions des noms de commandes
|
||||||
|
@ -213,24 +211,27 @@ d
|
||||||
du shell (<code>cd</code>, <code>alias</code>, etc.) et les commandes
|
du shell (<code>cd</code>, <code>alias</code>, etc.) et les commandes
|
||||||
externes (<code>mutt</code>, <code>mozilla</code>, etc.). Le
|
externes (<code>mutt</code>, <code>mozilla</code>, etc.). Le
|
||||||
comportement devient difficilement prévisible, et surtout, le script
|
comportement devient difficilement prévisible, et surtout, le script
|
||||||
sera difficile à débuguer... </li>
|
sera très difficile à débuguer... </li>
|
||||||
|
|
||||||
<li> de <strong>ne pas utiliser de signes de ponctuation, d'espaces ni
|
<li> de <strong>ne pas utiliser de signes de ponctuation, d'espaces ni
|
||||||
de caractères accentués</strong> dans les noms de fonction.</li>
|
de caractères accentués</strong> dans les noms de fonction ;</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
</li>
|
||||||
Une fois que vous avez donné un nom à la fonction, notez des
|
|
||||||
|
<li>
|
||||||
|
une fois que vous avez donné un nom à la fonction, notez des
|
||||||
<strong>parenthèses ouvrante et fermante</strong> : ce sont elles
|
<strong>parenthèses ouvrante et fermante</strong> : ce sont elles
|
||||||
qui indiquent à l'interpréteur du script qu'il s'agit d'une définition
|
qui indiquent à l'interpréteur du script qu'il s'agit d'une définition
|
||||||
de fonction.
|
de fonction ;
|
||||||
</p>
|
</li>
|
||||||
|
|
||||||
<p>
|
<li>
|
||||||
Ensuite, <strong>entre accolades</strong>, notez la <strong>série des
|
enfin, <strong>entre accolades</strong>, notez la <strong>série des
|
||||||
instructions</strong> qu'il faudra exécuter à chaque appel de la
|
instructions</strong> qu'il faudra exécuter à chaque appel de la
|
||||||
fonction.
|
fonction.
|
||||||
</p>
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
<h4>Où définir les fonctions ?</h4>
|
<h4>Où définir les fonctions ?</h4>
|
||||||
|
@ -426,10 +427,15 @@ plus facile,
|
||||||
complexes.
|
complexes.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Vous pouvez revenir à la <a href="index.html">page centrale sur le
|
||||||
|
shell</a>, d'où vous pourrez vous orienter vers d'autres parties du
|
||||||
|
cours.
|
||||||
|
</p>
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
Auteur : Baptiste Mélès.
|
Auteur : Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-09-07 10:18:58 $" />.
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:04 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -47,23 +47,49 @@ principales fonctionnalit
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> l'usage interactif, reposant sur les <strong>lignes de
|
<li> l'usage interactif, reposant sur les <a
|
||||||
commandes</strong> ;</li>
|
href="commande.html"><strong>lignes de
|
||||||
<li> la conception de <strong>scripts</strong> (programmes écrits en
|
commandes</strong></a> ;</li>
|
||||||
shell). </li>
|
|
||||||
|
<li> la conception de <a href="script.html"><strong>scripts</strong></a>
|
||||||
|
(programmes écrits en shell). </li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Ces deux usages du shell sont tout à fait complémentaires. Pour une
|
||||||
|
utilisation quotidienne, il est important de connaître quelques bases de
|
||||||
|
l'utilisation du shell en ligne de commande ; et l'écriture de
|
||||||
|
scripts shell permet de personnaliser son système en automatisant des
|
||||||
|
tâches répétitives et fastidieuses.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Par ailleurs, la programmation en shell fournit un excellent marche-pied
|
||||||
|
pour apprendre la programmation. C'est un langage simple, qui permet
|
||||||
|
d'arriver rapidement à des résultats visibles.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Les pages que nous consacrons ici à l'apprentissage du shell vous
|
||||||
|
apprendront à manipuler cet outil précieux et puissant. Elles
|
||||||
|
sont accessibles à des débutants, même s'ils n'ont aucune connaissance
|
||||||
|
préalable avancée en informatique, ni même en mathématiques ; elles
|
||||||
|
sont accessibles à ceux qui ont une formation littéraire.
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2>Le shell en ligne de commande</h2>
|
<h2>Le shell en ligne de commande</h2>
|
||||||
|
|
||||||
<p>Si vous souhaitez utiliser le shell en ligne de commandes, nous vous
|
<p>Si vous souhaitez utiliser le shell en ligne de commandes, nous vous
|
||||||
recommandons en priorité la lecture des pages suivantes :</p>
|
recommandons en priorité la lecture des pages suivantes :</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> <a href="presentation.html">présentation générale du shell</a>, une
|
<li> <a href="presentation.html">présentation générale du
|
||||||
introduction générale au shell ;</li>
|
shell</a> : qu'est-ce que le shell ? Comment
|
||||||
|
l'utiliser ?</li>
|
||||||
<li> <a href="commande.html">le shell en ligne de commande</a> :
|
<li> <a href="commande.html">le shell en ligne de commande</a> :
|
||||||
les bases de l'utilisation du shell ;</li>
|
les bases de l'utilisation du shell en ligne de commande ;</li>
|
||||||
<li> <a href="variable.html">les variables</a>.</li>
|
<li> <a href="variable.html">les variables</a> : comment créer,
|
||||||
|
lire et manipuler des variables avec le shell.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>Programmer des scripts shell</h2>
|
<h2>Programmer des scripts shell</h2>
|
||||||
|
@ -73,17 +99,22 @@ scripts), alors nous vous conseillons de lire
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> <a href="script.html">programmation de scripts en shell</a> :
|
<li> <a href="script.html">programmation de scripts en shell</a> :
|
||||||
les bases ;</li>
|
écrivez vos premiers programmes en shell ;</li>
|
||||||
|
|
||||||
<li> <a href="entreesortie.html">entrée, sortie,
|
<li> <a href="entreesortie.html">entrée, sortie,
|
||||||
redirection</a> ;</li>
|
redirection</a> : faire interagir les éléments du shell pour
|
||||||
|
construire des programmes évolués ;</li>
|
||||||
|
|
||||||
<li> <a href="test.html">test et calcul arithmétique</a> ;</li>
|
<li> <a href="test.html">test et calcul arithmétique</a> :
|
||||||
|
manipuler les valeurs de vrai et de faux pour orienter le parcours d'un
|
||||||
|
programme ;</li>
|
||||||
|
|
||||||
<li> <a href="boucle.html">boucles et structures de
|
<li> <a href="boucle.html">boucles et structures de
|
||||||
contrôle</a> ;</li>
|
contrôle</a> : maîtriser l'aiguillage d'un programme ;</li>
|
||||||
|
|
||||||
<li> <a href="fonction.html">définir et appeler des fonctions</a>.</li>
|
<li> <a href="fonction.html">définir et appeler des fonctions</a> :
|
||||||
|
alléger ses programmes et améliorer leur qualité en les concevant d'une
|
||||||
|
façon modulaire.</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -91,7 +122,7 @@ contr
|
||||||
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien
|
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien
|
||||||
Doligez.
|
Doligez.
|
||||||
Modifications : Nicolas George, Baptiste Mélès.
|
Modifications : Nicolas George, Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-09-07 10:03:53 $"
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:04 $"
|
||||||
/>.
|
/>.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -178,8 +178,10 @@ Le nombre de scripts possibles est illimit
|
||||||
autant que vous voulez, selon vos besoins : c'est ainsi que l'on
|
autant que vous voulez, selon vos besoins : c'est ainsi que l'on
|
||||||
personnalise son système et qu'on l'adapte à ses exigences, plutôt que
|
personnalise son système et qu'on l'adapte à ses exigences, plutôt que
|
||||||
l'inverse. Pour en savoir plus sur la programmation en shell, consultez
|
l'inverse. Pour en savoir plus sur la programmation en shell, consultez
|
||||||
les pages consacrées à la <a href="script.html">programmation de scripts en
|
les pages consacrées à la <a href="script.html">programmation de scripts
|
||||||
shell</a>.
|
en shell</a>. Ou bien vous pouvez revenir à la <a href="index.html">page
|
||||||
|
centrale sur le shell</a>, d'où vous pourrez vous orienter vers d'autres
|
||||||
|
parties du cours.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
@ -187,7 +189,7 @@ shell</a>.
|
||||||
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien
|
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien
|
||||||
Doligez.
|
Doligez.
|
||||||
Modifications : Nicolas George, Baptiste Mélès.
|
Modifications : Nicolas George, Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-06-20 13:18:30 $"
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:04 $"
|
||||||
/>.
|
/>.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ nous avons d
|
||||||
Pour la programmation du shell, nous allons utiliser le shell
|
Pour la programmation du shell, nous allons utiliser le shell
|
||||||
<code>sh</code>, qui est le plus répandu et standard. Ce que nous avons
|
<code>sh</code>, qui est le plus répandu et standard. Ce que nous avons
|
||||||
vu jusqu'ici s'applique aussi bien à <code>sh</code> qu'à
|
vu jusqu'ici s'applique aussi bien à <code>sh</code> qu'à
|
||||||
<code>zsh</code> et aussi à <code>csh</code>, à l'exception de
|
<code>zsh</code> et aussi à <code>csh</code>, à quelques exceptions
|
||||||
<code>setenv</code> et de certaines redirections signalées. </p>
|
près, que nous vous signalerons en temps voulu. </p>
|
||||||
|
|
||||||
|
|
||||||
<h2>Créer un script</h2>
|
<h2>Créer un script</h2>
|
||||||
|
@ -43,9 +43,17 @@ pas un fichier binaire, ex
|
||||||
L'interprétation signifie que chaque commande contenue dans un script
|
L'interprétation signifie que chaque commande contenue dans un script
|
||||||
doit être lue par un programme, appelé <em>interpréteur</em> (et non
|
doit être lue par un programme, appelé <em>interpréteur</em> (et non
|
||||||
interprète, bizarrement) ; l'interpréteur analyse chaque commande
|
interprète, bizarrement) ; l'interpréteur analyse chaque commande
|
||||||
du script et la traduit en langage machine, ce qui permet l'exécution du
|
du script et la traduit « à la volée » en langage machine, ce
|
||||||
script.
|
qui permet l'exécution du script.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<div class="encadre">
|
||||||
|
On oppose l'interprétation à la compilation, dans laquelle le programme
|
||||||
|
est traduit <em>une fois pour toutes</em> en langage machine, quel que
|
||||||
|
soit le nombre de ses exécutions ; tandis que le programme
|
||||||
|
interprété est traduit à la volée pour chacune de ses exécutions. Par
|
||||||
|
exemple, le langage C est un langage compilé.
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>Dans le cas des scripts shell, l'interpréteur, c'est le shell
|
<p>Dans le cas des scripts shell, l'interpréteur, c'est le shell
|
||||||
lui-même. Dans d'autres langages, comme le Perl, l'interpréteur est un
|
lui-même. Dans d'autres langages, comme le Perl, l'interpréteur est un
|
||||||
|
@ -68,8 +76,10 @@ avez
|
||||||
<p>Mais il faut savoir aussi que <strong>certains éditeurs de texte sont
|
<p>Mais il faut savoir aussi que <strong>certains éditeurs de texte sont
|
||||||
plus appropriés que d'autres à l'écriture de scripts shell</strong>. Par
|
plus appropriés que d'autres à l'écriture de scripts shell</strong>. Par
|
||||||
exemple, <code>nano</code> permet d'éditer des scripts comme tout autre
|
exemple, <code>nano</code> permet d'éditer des scripts comme tout autre
|
||||||
éditeur, mais quand un script fait plus d'une ligne, on commence à s'y
|
éditeur, mais quand un script fait plus d'une dizaine de lignes, on
|
||||||
perdre un peu. À l'inverse, <code>emacs</code> et <code>vim</code>
|
commence à s'y perdre un peu. À l'inverse, <a
|
||||||
|
href="&url.tuteurs;unix/editeurs/emacs.html"><code>emacs</code></a> et
|
||||||
|
<a href="&url.tuteurs;unix/editeurs/vim.html"><code>vim</code></a>
|
||||||
offrent quelques fonctionnalités qui deviennent rapidement
|
offrent quelques fonctionnalités qui deviennent rapidement
|
||||||
indispensables :</p>
|
indispensables :</p>
|
||||||
|
|
||||||
|
@ -89,11 +99,9 @@ script qui ressemble
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Fichier "vote-nir"
|
# Fichier "vote-nir"
|
||||||
|
|
||||||
echo "Êtes-vous favorable au remplacement du NIR par le
|
echo "Êtes-vous favorable au remplacement du NIR par le VIR ?"
|
||||||
VIR ?"
|
|
||||||
select opinion in Pour Contre
|
select opinion in Pour Contre
|
||||||
do
|
do case $opinion in
|
||||||
case $opinion in
|
|
||||||
# Laisser passer ceux qui répondent correctement à la question
|
# Laisser passer ceux qui répondent correctement à la question
|
||||||
"Pour"|"Contre") break;;
|
"Pour"|"Contre") break;;
|
||||||
# Au cas où des zozos tapent sur autre chose que 1 ou 2
|
# Au cas où des zozos tapent sur autre chose que 1 ou 2
|
||||||
|
@ -113,18 +121,17 @@ ceci : </p>
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Fichier "vote-nir"
|
# Fichier "vote-nir"
|
||||||
|
|
||||||
echo "Êtes-vous favorable au remplacement du NIR par le
|
echo "Êtes-vous favorable au remplacement du NIR par le VIR ?"
|
||||||
VIR ?"
|
|
||||||
select opinion in Pour Contre
|
|
||||||
do
|
|
||||||
case $opinion in
|
|
||||||
# Laisser passer ceux qui répondent correctement à la
|
|
||||||
question
|
|
||||||
"Pour"|"Contre") break;;
|
|
||||||
|
|
||||||
# Au cas où des zozos tapent sur autre chose que 1 ou 2
|
select opinion in Pour Contre
|
||||||
"*") continue;;
|
do
|
||||||
esac
|
case $opinion in
|
||||||
|
# Laisser passer ceux qui répondent correctement à la question
|
||||||
|
"Pour"|"Contre") break;;
|
||||||
|
|
||||||
|
# Au cas où des zozos tapent sur autre chose que 1 ou 2
|
||||||
|
"*") continue;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# M'envoyer le résultat par mail
|
# M'envoyer le résultat par mail
|
||||||
|
@ -134,14 +141,16 @@ echo "$opinion" | mail bourdieu
|
||||||
<p>Les deux scripts sont interprétés exactement de la même façon :
|
<p>Les deux scripts sont interprétés exactement de la même façon :
|
||||||
l'interpréteur ignore les espaces et les lignes vides. Mais avec
|
l'interpréteur ignore les espaces et les lignes vides. Mais avec
|
||||||
l'indentation, on perçoit immédiatement (en tout cas, beaucoup plus
|
l'indentation, on perçoit immédiatement (en tout cas, beaucoup plus
|
||||||
vite) la structure logique du script.</p>
|
vite) la <strong>structure logique</strong> du script.</p>
|
||||||
|
|
||||||
|
|
||||||
<h5>La coloration syntaxique</h5>
|
<h5>La coloration syntaxique</h5>
|
||||||
<p>Les éditeurs comme <code>emacs</code> et <code>vim</code> analysent
|
<p>Les éditeurs comme <a
|
||||||
automatiquement le statut des différents mots et symboles que vous tapez
|
href="&url.tuteurs;unix/editeurs/emacs.html"><code>emacs</code></a> et
|
||||||
et les colorent logiquement. Par exemple, avec emacs, vous pouvez
|
<a href="&url.tuteurs;unix/editeurs/vim.html"><code>vim</code></a>
|
||||||
avoir :</p>
|
analysent automatiquement le statut des différents mots et symboles que
|
||||||
|
vous tapez et les colorent logiquement. Par exemple, avec emacs, vous
|
||||||
|
pouvez avoir :</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> les commentaires en rouge ;</li>
|
<li> les commentaires en rouge ;</li>
|
||||||
|
@ -360,11 +369,44 @@ caract
|
||||||
echo "Ce que je tape ici sera lu."
|
echo "Ce que je tape ici sera lu."
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Les lignes de commentaire sont tout bonnement ignorées par
|
||||||
|
l'interpréteur. Alors, allez-vous demander, à quoi servent-elles si
|
||||||
|
elles ne servent à rien ? Elles sont indispensables pour tout
|
||||||
|
programmeur, car elles lui permettent de « commenter » son
|
||||||
|
programme, c'est-à-dire d'écrire ce qu'il veut, comme dans la marge d'un
|
||||||
|
livre.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Les commentaires jouent pour beaucoup dans la lisibilité d'un programme
|
||||||
|
par un humain. Car les lignes de commande pures sont relativement
|
||||||
|
austères ; des commentaires permettent de les décrire à l'intention
|
||||||
|
d'un être humain.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Sans doute allez-vous vous demander quel être humain cela peut bien
|
||||||
|
intéresser. Eh bien, quelqu'un d'autre que vous qui lit ce code ;
|
||||||
|
ou bien vous-même, dans un mois, un an, une décennie, ou plus, quand
|
||||||
|
vous aurez tout oublié de ce programme et de son fonctionnement.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
N'hésitez donc pas à recourir abondamment aux commentaires, qui
|
||||||
|
accroissent la lisibilité de votre programme, même s'ils n'ont
|
||||||
|
absolument aucune influence directe sur son fonctionnement intrinsèque.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Lignes blanches</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Les lignes blanches ne sont pas interprétées non
|
Les lignes blanches ne sont pas interprétées non
|
||||||
plus. N'hésitez donc surtout pas à espacer votre script, les
|
plus. N'hésitez donc surtout pas à espacer votre script, les
|
||||||
lignes blanches ne consomment presque rien en termes d'espace disque, ce
|
lignes blanches ne consomment presque rien en termes d'espace disque, ce
|
||||||
n'est donc pas une ressource rare.
|
n'est donc pas une ressource rare ; et elles facilitent
|
||||||
|
considérablement la lecture pour un être humain.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3>L'impératif de lisibilité</h3>
|
<h3>L'impératif de lisibilité</h3>
|
||||||
|
@ -432,10 +474,8 @@ Exercice : francisez ce script.
|
||||||
<h3>La commande <code>echo</code></h3>
|
<h3>La commande <code>echo</code></h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
La commande <code>echo</code> sert à afficher du texte sur la sortie
|
La commande <code>echo</code> sert à afficher du texte. Chaque ligne de
|
||||||
standard (pour savoir ce qu'est la sortie standard, consultez la page
|
texte est écrite sur une ligne à part. Exemple :
|
||||||
sur les <a href="entreesortie.html">entrées et sorties</a>). Chaque
|
|
||||||
ligne de texte est écrite sur une ligne à part. Exemple :
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
|
@ -608,7 +648,7 @@ echo "Les pattes, surtout la gauche."
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Vous connaissez maintenant les bases de la programmation en shell. Vous
|
Vous connaissez maintenant les bases de la programmation en shell. Vous
|
||||||
avza déjà de quoi écrire de nombreux scripts qui peuvent vous faciliter
|
avez déjà de quoi écrire de nombreux scripts qui peuvent vous faciliter
|
||||||
la vie de tous les jours. Pour cela, lorsque vous ressentez un besoin,
|
la vie de tous les jours. Pour cela, lorsque vous ressentez un besoin,
|
||||||
ne vous demandez pas si vous avez les connaissances requises pour écrire
|
ne vous demandez pas si vous avez les connaissances requises pour écrire
|
||||||
un programme donné, mais plutôt <em>comment, à partir de vos
|
un programme donné, mais plutôt <em>comment, à partir de vos
|
||||||
|
@ -617,26 +657,36 @@ connaissances actuelles, vous pourriez le r
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Pour poursuivre votre apprentissage, vous pouvez passer à la lecture des
|
Pour poursuivre votre apprentissage, vous pouvez passer à la lecture des
|
||||||
pages suivanets :
|
pages suivantes :
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li> <a href="entreesortie.html">entrée, sortie,
|
<li> <a href="entreesortie.html">entrée, sortie, redirection</a> :
|
||||||
redirection</a> ;</li>
|
faire interagir les éléments du shell pour construire des programmes
|
||||||
|
évolués ;</li>
|
||||||
|
|
||||||
<li> <a href="test.html">test et calcul arithmétique</a> ;</li>
|
<li> <a href="test.html">test et calcul arithmétique</a> :
|
||||||
|
manipuler les valeurs de vrai et de faux pour orienter le parcours d'un
|
||||||
|
programme ;</li>
|
||||||
|
|
||||||
<li> <a href="boucle.html">boucles et structures de
|
<li> <a href="boucle.html">boucles et structures de contrôle</a> :
|
||||||
contrôle</a> ;</li>
|
maîtriser l'aiguillage d'un programme ;</li>
|
||||||
|
|
||||||
<li> <a href="fonction.html">définir et appeler des fonctions</a>.</li>
|
<li> <a href="fonction.html">définir et appeler des fonctions</a> :
|
||||||
|
alléger ses programmes et améliorer leur qualité en les concevant d'une
|
||||||
|
façon modulaire.</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Ou bien vous pouvez revenir à la <a href="index.html">page centrale sur
|
||||||
|
le shell</a>, d'où vous pourrez vous orienter vers d'autres parties du
|
||||||
|
cours.
|
||||||
|
</p>
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
Auteur : Baptiste Mélès.
|
Auteur : Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-09-07 10:03:54 $" />.
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:04 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -120,7 +120,7 @@ elles sont ex
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Troisième cas
|
# Troisième cas
|
||||||
[ <strong>! -f</strong> foo ] <strong>&&</strong> echo "Le fichier foo n'existe pas.
|
[ <strong>! -f</strong> foo ] <strong>&&</strong> echo "Le fichier foo n'existe pas."
|
||||||
Le fichier foo n'existe pas.
|
Le fichier foo n'existe pas.
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ code de retour est 1, et les commandes sont ex
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Quatrième cas
|
# Quatrième cas
|
||||||
[ <strong>! -f</strong> foo ] <strong>||</strong> echo "Le fichier foo existe.
|
[ <strong>! -f</strong> foo ] <strong>||</strong> echo "Le fichier foo existe."
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p class="continue">Voici la dernière combinaison possible. Le code de
|
<p class="continue">Voici la dernière combinaison possible. Le code de
|
||||||
|
@ -417,7 +417,7 @@ fi
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
Auteur : Baptiste Mélès.
|
Auteur : Baptiste Mélès.
|
||||||
Dernière modification le <date value="$Date: 2005-09-07 21:19:24 $" />.
|
Dernière modification le <date value="$Date: 2005-09-07 23:00:05 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Add table
Reference in a new issue