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>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="fichiers.html#less">more</a> (ou <code>less</code>,
|
<li><a href="&url.tuteurs;unix/fichiers.html#less">more</a> (ou
|
||||||
bien plus évolué) à la fin du pipe-line, affiche le résultat page par page,
|
<code>less</code>, bien plus évolué) à la fin du pipe-line, affiche le
|
||||||
pour laisser le temps de le lire.
|
résultat page par page, pour laisser le temps de le lire. </li>
|
||||||
</li>
|
|
||||||
<li><a href="divers.html#wc">wc</a> compte le nombre de
|
<li><a href="&url.tuteurs;unix/divers.html#wc">wc</a> compte le nombre
|
||||||
caractères, de mots et de lignes de son entrée.
|
de caractères, de mots et de lignes de son entrée. </li>
|
||||||
</li>
|
|
||||||
<li><a href="chercher.html#grep">grep</a> cherche dans son
|
<li><a href="&url.tuteurs;unix/chercher.html#grep">grep</a> cherche dans
|
||||||
entre les lignes contenant un mot donné, et les écrit sur sa sortie.
|
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>
|
</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
|
<li><code>fold</code> coupe les lignes de son
|
||||||
entrée à 80 caractères et écrit le résultat sur sa sortie.
|
entrée à 80 caractères et écrit le résultat sur sa sortie.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h3>Exemples</h3>
|
<h3>Exemples</h3>
|
||||||
|
@ -385,7 +387,7 @@ entra
|
||||||
<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:38 $" />.
|
Dernière modification le <date value="$Date: 2005-07-05 07:18:06 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -74,15 +74,21 @@ 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>
|
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>
|
<li> <a href="boucle.html">boucles et structures de contrôle</a>.</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="metainformation">
|
<div class="metainformation">
|
||||||
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-03 15:52:42 $"
|
Dernière modification le <date value="$Date: 2005-07-05 07:18:06 $"
|
||||||
/>.
|
/>.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,156 @@ vu jusqu'ici s'applique aussi bien
|
||||||
|
|
||||||
<h2>Créer un script</h2>
|
<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>
|
<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>
|
<pre>#!/bin/sh</pre>
|
||||||
|
|
||||||
|
@ -48,7 +195,8 @@ d'acc
|
||||||
|
|
||||||
<p class="continue">
|
<p class="continue">
|
||||||
(pour en savoir plus sur les droits attachés à un fichier, consultez la
|
(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>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,7 +204,7 @@ page sur <a href="droits.html">les droits d'acc
|
||||||
<p>
|
<p>
|
||||||
Pour comprendre ce qui suit, vous devez savoir ce qu'est le
|
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
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -459,7 +607,7 @@ echo "Les pattes, surtout la gauche."
|
||||||
|
|
||||||
<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 13:56:22 $" />.
|
Dernière modification le <date value="$Date: 2005-07-05 07:18:06 $" />.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Reference in a new issue