Bap: corrections.
This commit is contained in:
parent
7bf3408a86
commit
aa4fbe8846
3 changed files with 185 additions and 29 deletions
|
@ -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 : 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>
|
||||
|
|
|
@ -74,15 +74,21 @@ scripts), alors nous vous conseillons de lire
|
|||
<ul>
|
||||
<li> <a href="script.html">programmation de scripts en shell</a> :
|
||||
les bases ;</li>
|
||||
<li> <a href="entreesortie.html">entrée, sortie, redirection</a> ;</li>
|
||||
|
||||
<li> <a href="entreesortie.html">entrée, sortie,
|
||||
redirection</a> ;</li>
|
||||
|
||||
<li> <a href="test.html">test et calcul arithmétique</a> ;</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 : 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>
|
||||
|
||||
|
|
|
@ -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) ; 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 ?</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 :</p>
|
||||
|
||||
<ol>
|
||||
<li> l'indentation ;</li>
|
||||
<li> la coloration syntaxique.</li>
|
||||
</ol>
|
||||
|
||||
|
||||
<h5>L'indentation</h5>
|
||||
|
||||
<p>L'indentation consiste à « aérer » votre texte selon sa
|
||||
construction logique. C'est très utile, en particulier, quand on a un
|
||||
script qui ressemble à ceci :</p>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
# Fichier "vote-nir"
|
||||
|
||||
echo "Êtes-vous favorable au remplacement du NIR par le
|
||||
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
|
||||
"*") continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
# M'envoyer le résultat par mail
|
||||
echo "$opinion" | 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 : </p>
|
||||
|
||||
<pre>
|
||||
#!/bin/sh
|
||||
# Fichier "vote-nir"
|
||||
|
||||
echo "Êtes-vous favorable au remplacement du NIR par le
|
||||
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
|
||||
"*") continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
# M'envoyer le résultat par mail
|
||||
echo "$opinion" | mail bourdieu
|
||||
</pre>
|
||||
|
||||
<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'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 :</p>
|
||||
|
||||
<ul>
|
||||
<li> les commentaires en rouge ;</li>
|
||||
<li> les noms de commande en bleu foncé ;</li>
|
||||
<li> les noms d'arguments en vert ;</li>
|
||||
<li> les noms de variables en jaune ;</li>
|
||||
<li> les instructions liées aux boucles en bleu clair ;</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 : 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> ? Tout
|
||||
le monde est passé par là. Jetez un coup d'œil à chacun des deux,
|
||||
puis concentrez-vous sur celui qui vous paraît le plus sympathique et le
|
||||
plus pratique ; 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 "Les pattes, surtout la gauche."
|
|||
|
||||
<div class="metainformation">
|
||||
Auteur : 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>
|
||||
|
|
Loading…
Reference in a new issue