diff --git a/unix/shell/entreesortie.tml b/unix/shell/entreesortie.tml index db5cfc9..48b630b 100644 --- a/unix/shell/entreesortie.tml +++ b/unix/shell/entreesortie.tml @@ -298,32 +298,34 @@ Quelques commandes souvent utilis

Exemples

@@ -385,7 +387,7 @@ entra
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez. Modifications : Nicolas George, Baptiste Mélès. -Dernière modification le . +Dernière modification le .
diff --git a/unix/shell/index.tml b/unix/shell/index.tml index 2e1fe08..20e0db3 100644 --- a/unix/shell/index.tml +++ b/unix/shell/index.tml @@ -74,15 +74,21 @@ scripts), alors nous vous conseillons de lire
Basé sur un polycopié de Roberto Di Cosmo, Xavier Leroy et Damien Doligez. Modifications : Nicolas George, Baptiste Mélès. -Dernière modification le .
diff --git a/unix/shell/script.tml b/unix/shell/script.tml index 9a5cec9..5947f42 100644 --- a/unix/shell/script.tml +++ b/unix/shell/script.tml @@ -30,9 +30,156 @@ vu jusqu'ici s'applique aussi bien

Créer un script

+

Écrire un script

+

+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 +il doit être interprété. +

+ +

L'interprétation d'un script

+ +

+L'interprétation signifie que chaque commande contenue dans un script +doit être lue par un programme, appelé interpréteur (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. +

+ +

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.

+ + +

L'édition d'un script

+

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 éditeurs.

+ +

Mais quel éditeur choisir ?

+ +

Tout d'abord, il faut savoir que n'importe quel éditeur est +capable d'ouvrir et d'écrire des scripts shell, et vous pouvez +tout à fait modifier avec n'importe quel éditeur de texte ce que vous +avez écrit avec n'importe quel autre.

+ +

Mais il faut savoir aussi que certains éditeurs de texte sont +plus appropriés que d'autres à l'écriture de scripts shell. Par +exemple, nano 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, emacs et vim +offrent quelques fonctionnalités qui deviennent rapidement +indispensables :

+ +
    +
  1. l'indentation ;
  2. +
  3. la coloration syntaxique.
  4. +
+ + +
L'indentation
+ +

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 :

+ +
+#!/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
+
+ +

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 :

+ +
+#!/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
+
+ +

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.

+ + +
La coloration syntaxique
+

Les éditeurs comme emacs et vim analysent +automatiquement le statut des différents mots et symboles que vous tapez +et les colorent logiquement. Par exemple, avec emacs, vous pouvez +avoir :

+ + + +

Ç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.

+ +
Apprendre emacs ou vim
+ +

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.

+ +

Heureusement, les tuteurs vous ont concocté des pages +d'initiation : le tutorial +emacs et le tutorial +vim.

+ +

Vous hésitez entre emacs et vim ? 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.

+ +

Rendre un script exécutable

-

Pour être un script, un fichier doit commencer par la ligne:

+

Pour que le shell sache comment l'interpréter, un script shell doit +commencer par la ligne:

#!/bin/sh
@@ -48,7 +195,8 @@ d'acc

(pour en savoir plus sur les droits attachés à un fichier, consultez la -page sur les droits d'accès). +page sur les droits +d'accès).

@@ -56,7 +204,7 @@ page sur les droits d'acc

Pour comprendre ce qui suit, vous devez savoir ce qu'est le PATH. Si ce n'est pas le cas, lisez la page principale sur le shell. +href="presentation.html">présentation du shell.

@@ -459,7 +607,7 @@ echo "Les pattes, surtout la gauche."

Auteur : Baptiste Mélès. -Dernière modification le . +Dernière modification le .