Bap: corrections

This commit is contained in:
meles 2005-09-07 23:00:03 +00:00
parent 1f6e889f17
commit fca30288b5
8 changed files with 211 additions and 100 deletions

View file

@ -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&nbsp;; chaque script suite de commandes, vous avez fait un grand pas&nbsp;; chaque script
consiste à poser des rails&nbsp;: l'utilisateur n'a plus qu'à les consiste à poser des rails&nbsp;: 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&nbsp;: il peut <p>Toutefois, avoir posé les rails ne suffit pas toujours&nbsp;: 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&nbsp;:
Exemple&nbsp;:
</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>

View file

@ -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&nbsp;; ils sont en général exister des noms d'option longs&nbsp;; 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&nbsp;C, c'est-à-dire à le traduire en langage
machine. Mais avant de vous mettre au langage&nbsp;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&nbsp;? 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&nbsp;? Eh bien, dans certains jeux de cartes,
carte&nbsp;; dans le shell, les jokers permettent de remplacer n'importe le joker permet de remplacer n'importe quelle carte&nbsp;; 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&nbsp;: Nicolas George, Baptiste Mélès. Modifications&nbsp;: 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>

View file

@ -19,7 +19,7 @@ Un programme consiste
transformées&nbsp;: il transforme des informations, et c'est pourquoi transformées&nbsp;: 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&nbsp;: on y <p> Prenons un programme <code>hachoir</code>, par exemple&nbsp;: 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é&nbsp;; exemple, on fait entrer une vache, il en ressort du steak haché&nbsp;;
@ -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&nbsp;: Nicolas George, Baptiste Mélès. Modifications&nbsp;: 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>

View file

@ -35,7 +35,8 @@ L'usage des <strong>fonctions</strong> permet de&nbsp;:
<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)&nbsp;;</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&nbsp;: qui&nbsp;:
<ol> <ol>
<li> est <strong>fatiguant</strong>&nbsp;;</li> <li> est <strong>fatigant</strong>&nbsp;;</li>
<li> est <strong>fastidieux</strong>&nbsp;;</li> <li> est <strong>fastidieux</strong>&nbsp;;</li>
<li> est, surtout, <strong>très peu fiable</strong>&nbsp;: si vous <li> est, surtout, <strong>très peu fiable</strong>&nbsp;: 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é&nbsp;:
<p>
Il est toutefois fortement recommandé&nbsp;:
</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&nbsp;;</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>&nbsp;: ce sont elles <strong>parenthèses ouvrante et fermante</strong>&nbsp;: 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&nbsp;;
</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&nbsp;?</h4> <h4>Où définir les fonctions&nbsp;?</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>

View file

@ -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>&nbsp;;</li> href="commande.html"><strong>lignes de
<li> la conception de <strong>scripts</strong> (programmes écrits en commandes</strong></a>&nbsp;;</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&nbsp;; 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&nbsp;; 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&nbsp;:</p> recommandons en priorité la lecture des pages suivantes&nbsp;:</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&nbsp;;</li> shell</a>&nbsp;: qu'est-ce que le shell&nbsp;? Comment
l'utiliser&nbsp;?</li>
<li> <a href="commande.html">le shell en ligne de commande</a>&nbsp;: <li> <a href="commande.html">le shell en ligne de commande</a>&nbsp;:
les bases de l'utilisation du shell&nbsp;;</li> les bases de l'utilisation du shell en ligne de commande&nbsp;;</li>
<li> <a href="variable.html">les variables</a>.</li> <li> <a href="variable.html">les variables</a>&nbsp;: 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>&nbsp;: <li> <a href="script.html">programmation de scripts en shell</a>&nbsp;:
les bases&nbsp;;</li> écrivez vos premiers programmes en shell&nbsp;;</li>
<li> <a href="entreesortie.html">entrée, sortie, <li> <a href="entreesortie.html">entrée, sortie,
redirection</a>&nbsp;;</li> redirection</a>&nbsp;: faire interagir les éléments du shell pour
construire des programmes évolués&nbsp;;</li>
<li> <a href="test.html">test et calcul arithmétique</a>&nbsp;;</li> <li> <a href="test.html">test et calcul arithmétique</a>&nbsp;:
manipuler les valeurs de vrai et de faux pour orienter le parcours d'un
programme&nbsp;;</li>
<li> <a href="boucle.html">boucles et structures de <li> <a href="boucle.html">boucles et structures de
contrôle</a>&nbsp;;</li> contrôle</a>&nbsp;: maîtriser l'aiguillage d'un programme&nbsp;;</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>&nbsp;:
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&nbsp;: Nicolas George, Baptiste Mélès. Modifications&nbsp;: 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>

View file

@ -178,8 +178,10 @@ Le nombre de scripts possibles est illimit
autant que vous voulez, selon vos besoins&nbsp;: c'est ainsi que l'on autant que vous voulez, selon vos besoins&nbsp;: 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&nbsp;: Nicolas George, Baptiste Mélès. Modifications&nbsp;: 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>

View file

@ -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)&nbsp;; l'interpréteur analyse chaque commande interprète, bizarrement)&nbsp;; 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 «&nbsp;à la volée&nbsp;» 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&nbsp;; tandis que le programme
interprété est traduit à la volée pour chacune de ses exécutions. Par
exemple, le langage&nbsp;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&nbsp;:</p> indispensables&nbsp;:</p>
@ -89,11 +99,9 @@ script qui ressemble
#!/bin/sh #!/bin/sh
# Fichier &quot;vote-nir&quot; # Fichier &quot;vote-nir&quot;
echo &quot;Êtes-vous favorable au remplacement du NIR par le echo &quot;Êtes-vous favorable au remplacement du NIR par le VIR&nbsp;?&quot;
VIR&nbsp;?&quot;
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
&quot;Pour&quot;|&quot;Contre&quot;) break;; &quot;Pour&quot;|&quot;Contre&quot;) 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&nbsp;: </p>
#!/bin/sh #!/bin/sh
# Fichier &quot;vote-nir&quot; # Fichier &quot;vote-nir&quot;
echo &quot;Êtes-vous favorable au remplacement du NIR par le echo &quot;Êtes-vous favorable au remplacement du NIR par le VIR&nbsp;?&quot;
VIR&nbsp;?&quot;
select opinion in Pour Contre
do
case $opinion in
# Laisser passer ceux qui répondent correctement à la
question
&quot;Pour&quot;|&quot;Contre&quot;) break;;
# Au cas où des zozos tapent sur autre chose que 1 ou 2 select opinion in Pour Contre
&quot;*&quot;) continue;; do
esac case $opinion in
# Laisser passer ceux qui répondent correctement à la question
&quot;Pour&quot;|&quot;Contre&quot;) break;;
# Au cas où des zozos tapent sur autre chose que 1 ou 2
&quot;*&quot;) continue;;
esac
done done
# M'envoyer le résultat par mail # M'envoyer le résultat par mail
@ -134,14 +141,16 @@ echo &quot;$opinion&quot; | mail bourdieu
<p>Les deux scripts sont interprétés exactement de la même façon&nbsp;: <p>Les deux scripts sont interprétés exactement de la même façon&nbsp;:
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&nbsp;:</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&nbsp;:</p>
<ul> <ul>
<li> les commentaires en rouge&nbsp;;</li> <li> les commentaires en rouge&nbsp;;</li>
@ -360,11 +369,44 @@ caract
echo &quot;Ce que je tape ici sera lu.&quot; echo &quot;Ce que je tape ici sera lu.&quot;
</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&nbsp;? Elles sont indispensables pour tout
programmeur, car elles lui permettent de «&nbsp;commenter&nbsp;» 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&nbsp;; 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&nbsp;;
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&nbsp;; 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&nbsp;: 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&nbsp;:
sur les <a href="entreesortie.html">entrées et sorties</a>). Chaque
ligne de texte est écrite sur une ligne à part. Exemple&nbsp;:
</p> </p>
<pre> <pre>
@ -608,7 +648,7 @@ echo &quot;Les pattes, surtout la gauche.&quot;
<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&nbsp;: pages suivantes&nbsp;:
</p> </p>
<ul> <ul>
<li> <a href="entreesortie.html">entrée, sortie, <li> <a href="entreesortie.html">entrée, sortie, redirection</a>&nbsp;:
redirection</a>&nbsp;;</li> faire interagir les éléments du shell pour construire des programmes
évolués&nbsp;;</li>
<li> <a href="test.html">test et calcul arithmétique</a>&nbsp;;</li> <li> <a href="test.html">test et calcul arithmétique</a>&nbsp;:
manipuler les valeurs de vrai et de faux pour orienter le parcours d'un
programme&nbsp;;</li>
<li> <a href="boucle.html">boucles et structures de <li> <a href="boucle.html">boucles et structures de contrôle</a>&nbsp;:
contrôle</a>&nbsp;;</li> maîtriser l'aiguillage d'un programme&nbsp;;</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>&nbsp;:
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&nbsp;: Baptiste Mélès. Auteur&nbsp;: 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>

View file

@ -120,7 +120,7 @@ elles sont ex
<pre> <pre>
# Troisième cas # Troisième cas
[ <strong>! -f</strong> foo ] <strong>&amp;&amp;</strong> echo &quot;Le fichier foo n'existe pas. [ <strong>! -f</strong> foo ] <strong>&amp;&amp;</strong> echo &quot;Le fichier foo n'existe pas.&quot;
Le fichier foo n'existe pas. Le fichier foo n'existe pas.
</pre> </pre>
@ -132,7 +132,7 @@ code de retour est&nbsp;1, et les commandes sont ex
<pre> <pre>
# Quatrième cas # Quatrième cas
[ <strong>! -f</strong> foo ] <strong>||</strong> echo &quot;Le fichier foo existe. [ <strong>! -f</strong> foo ] <strong>||</strong> echo &quot;Le fichier foo existe.&quot;
</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>