Bap: corrections.

This commit is contained in:
meles 2005-07-05 07:18:06 +00:00
parent 7bf3408a86
commit aa4fbe8846
3 changed files with 185 additions and 29 deletions

View file

@ -298,32 +298,34 @@ Quelques commandes souvent utilis
</p>
<ul>
<li><a href="fichiers.html#less">more</a> (ou <code>less</code>,
bien plus évolué) à la fin du pipe-line, affiche le résultat page par page,
pour laisser le temps de le lire.
</li>
<li><a href="divers.html#wc">wc</a> compte le nombre de
caractères, de mots et de lignes de son entrée.
</li>
<li><a href="chercher.html#grep">grep</a> cherche dans son
entre les lignes contenant un mot donné, et les écrit sur sa sortie.
</li>
<li><a href="&url.tuteurs;unix/exercices/enchainer.html#syst">sort</a> lit toutes les lignes
de son entrée, les trie, et les écrit dans l'ordre sur sa sortie. Par défaut
l'ordre est alphabétique.
</li>
<li><a href="fichiers.html#head">tail</a> écrit sur sa sortie
les dernières lignes de son entrée.
</li>
<li><a href="fichiers.html#head">head</a> écrit sur sa sortie
les premières lignes de son entrée.
</li>
<li><a href="fichiers.html#cat">cat</a> copie plusieurs fichiers
sur sa sortie.
<li><a href="&url.tuteurs;unix/fichiers.html#less">more</a> (ou
<code>less</code>, bien plus évolué) à la fin du pipe-line, affiche le
résultat page par page, pour laisser le temps de le lire. </li>
<li><a href="&url.tuteurs;unix/divers.html#wc">wc</a> compte le nombre
de caractères, de mots et de lignes de son entrée. </li>
<li><a href="&url.tuteurs;unix/chercher.html#grep">grep</a> cherche dans
son entre les lignes contenant un mot donné, et les écrit sur sa sortie.
</li>
<li><a href="&url.tuteurs;unix/exercices/enchainer.html#syst">sort</a>
lit toutes les lignes de son entrée, les trie, et les écrit dans l'ordre
sur sa sortie. Par défaut l'ordre est alphabétique. </li>
<li><a href="&url.tuteurs;unix/fichiers.html#head">tail</a> écrit sur sa
sortie les dernières lignes de son entrée. </li>
<li><a href="&url.tuteurs;unix/fichiers.html#head">head</a> écrit sur sa
sortie les premières lignes de son entrée. </li>
<li><a href="&url.tuteurs;unix/fichiers.html#cat">cat</a> copie
plusieurs fichiers sur sa sortie. </li>
<li><code>fold</code> coupe les lignes de son
entrée à 80 caractères et écrit le résultat sur sa sortie.
</li>
</ul>
<h3>Exemples</h3>
@ -385,7 +387,7 @@ entra
<div class="metainformation">
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez.
Modifications&nbsp;: Nicolas George, Baptiste Mélès.
Dernière modification le <date value="$Date: 2005-05-31 11:33:38 $" />.
Dernière modification le <date value="$Date: 2005-07-05 07:18:06 $" />.
</div>
</body>

View file

@ -74,15 +74,21 @@ scripts), alors nous vous conseillons de lire
<ul>
<li> <a href="script.html">programmation de scripts en shell</a>&nbsp;:
les bases&nbsp;;</li>
<li> <a href="entreesortie.html">entrée, sortie, redirection</a>&nbsp;;</li>
<li> <a href="entreesortie.html">entrée, sortie,
redirection</a>&nbsp;;</li>
<li> <a href="test.html">test et calcul arithmétique</a>&nbsp;;</li>
<li> <a href="boucle.html">boucles et structures de contrôle</a>.</li>
</ul>
<div class="metainformation">
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien
Doligez.
Modifications&nbsp;: Nicolas George, Baptiste Mélès.
Dernière modification le <date value="$Date: 2005-06-03 15:52:42 $"
Dernière modification le <date value="$Date: 2005-07-05 07:18:06 $"
/>.
</div>

View file

@ -30,9 +30,156 @@ vu jusqu'ici s'applique aussi bien
<h2>Créer un script</h2>
<h3>Écrire un script</h3>
<p>
Un script shell est un fichier en mode texte. C'est-à-dire que ce n'est
pas un fichier binaire, exécutable directement par la machine, mais
<strong>il doit être interprété</strong>.
</p>
<h4>L'interprétation d'un script</h4>
<p>
L'interprétation signifie que chaque commande contenue dans un script
doit être lue par un programme, appelé <em>interpréteur</em> (et non
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
script.
</p>
<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
programme indépendant du shell. </p>
<h4>L'édition d'un script</h4>
<p>Un script étant un fichier en mode texte, il doit être créé avec un
éditeur de texte. Un éditeur de texte est un programme dont la fonction
est... d'éditer du texte. Pour savoir plus à leur sujet, consultez les
pages sur les <a href="&url.tuteurs;unix/editeurs/">éditeurs</a>. </p>
<p>Mais quel éditeur choisir&nbsp;?</p>
<p> Tout d'abord, il faut savoir que <strong>n'importe quel éditeur est
capable d'ouvrir et d'écrire des scripts shell</strong>, et vous pouvez
tout à fait modifier avec n'importe quel éditeur de texte ce que vous
avez écrit avec n'importe quel autre.</p>
<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
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
perdre un peu. À l'inverse, <code>emacs</code> et <code>vim</code>
offrent quelques fonctionnalités qui deviennent rapidement
indispensables&nbsp;:</p>
<ol>
<li> l'indentation&nbsp;;</li>
<li> la coloration syntaxique.</li>
</ol>
<h5>L'indentation</h5>
<p>L'indentation consiste à «&nbsp;aérer&nbsp;» votre texte selon sa
construction logique. C'est très utile, en particulier, quand on a un
script qui ressemble à ceci&nbsp;:</p>
<pre>
#!/bin/sh
# Fichier &quot;vote-nir&quot;
echo &quot;Êtes-vous favorable au remplacement du NIR par le
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
&quot;*&quot;) continue;;
esac
done
# M'envoyer le résultat par mail
echo &quot;$opinion&quot; | mail bourdieu
</pre>
<p>Même (surtout) si vous ne comprenez pas ce que tout cela veut dire,
vous conviendrez que ce n'est pas très lisible. Comparez donc avec
ceci&nbsp;: </p>
<pre>
#!/bin/sh
# Fichier &quot;vote-nir&quot;
echo &quot;Êtes-vous favorable au remplacement du NIR par le
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
&quot;*&quot;) continue;;
esac
done
# M'envoyer le résultat par mail
echo &quot;$opinion&quot; | mail bourdieu
</pre>
<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'indentation, on perçoit immédiatement (en tout cas, beaucoup plus
vite) la structure logique du script.</p>
<h5>La coloration syntaxique</h5>
<p>Les éditeurs comme <code>emacs</code> et <code>vim</code> 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>
<li> les commentaires en rouge&nbsp;;</li>
<li> les noms de commande en bleu foncé&nbsp;;</li>
<li> les noms d'arguments en vert&nbsp;;</li>
<li> les noms de variables en jaune&nbsp;;</li>
<li> les instructions liées aux boucles en bleu clair&nbsp;;</li>
<li> etc.</li>
</ul>
<p>Ça n'a l'air de rien, dit comme cela, mais comparez vous-même et vous
verrez que ces outils sont indispensables, et que l'on y gagne au moins
la moitié du temps d'écriture et de débugage.</p>
<h5>Apprendre <code>emacs</code> ou <code>vim</code></h5>
<p>Apprenez donc, si ce n'est pas déjà le cas, les commandes de base
d'emacs ou de vim, ce sont des outils quasi incontournables au
programmeur shell, surtout débutant.</p>
<p> Heureusement, les tuteurs vous ont concocté des pages
d'initiation&nbsp;: le <a
href="&url.tuteurs;unix/editeurs/emacs.html">tutorial
<code>emacs</code></a> et le <a
href="&url.tuteurs;unix/editeurs/vim.html">tutorial
<code>vim</code></a>.</p>
<p>Vous hésitez entre <code>emacs</code> et <code>vim</code>&nbsp;? Tout
le monde est passé par là. Jetez un coup d'&oelig;il à chacun des deux,
puis concentrez-vous sur celui qui vous paraît le plus sympathique et le
plus pratique&nbsp;; et si vous hésitez encore, tirez-en un au
sort, ils se valent vraiment.</p>
<h3>Rendre un script exécutable</h3>
<p> Pour être un script, un fichier doit commencer par la ligne: </p>
<p> Pour que le shell sache comment l'interpréter, un script shell doit
commencer par la ligne: </p>
<pre>#!/bin/sh</pre>
@ -48,7 +195,8 @@ d'acc
<p class="continue">
(pour en savoir plus sur les droits attachés à un fichier, consultez la
page sur <a href="droits.html">les droits d'accès</a>).
page sur <a href="&url.tuteurs;unix/droits.html">les droits
d'accès</a>).
</p>
@ -56,7 +204,7 @@ page sur <a href="droits.html">les droits d'acc
<p>
Pour comprendre ce qui suit, vous devez savoir ce qu'est le
<code>PATH</code>. Si ce n'est pas le cas, lisez la <a
href="index.html">page principale sur le shell</a>.
href="presentation.html">présentation du shell</a>.
</p>
<p>
@ -459,7 +607,7 @@ echo &quot;Les pattes, surtout la gauche.&quot;
<div class="metainformation">
Auteur&nbsp;: Baptiste Mélès.
Dernière modification le <date value="$Date: 2005-06-03 13:56:22 $" />.
Dernière modification le <date value="$Date: 2005-07-05 07:18:06 $" />.
</div>
</body>