LA PROGRAMMATION
"SHELL"
I) INTRODUCTION
Le Shell est un "INTERPRETEUR DE COMMANDE". Il ne fait pas partie du système
d'exploitation UNIX; et c'est la raison pour laquelle il porte ce nom "coquille", qui indique son état
détaché du "noyau" Unix. Son rôle est d'analyser lacommande tapée afin de faire réagir le système
pour qu'il réponde aux besoins de l'utilisateur. C'est le premier langage de commandes développé
sur Unix par Steve Bourne.
Une comparaison rapide pourrait l'apparenter au DOS (Disc Operating System) développé par
Microsoft, mais cette comparaison n'est là que pourillustrer le rôle du Shell par rapport à Unix.
De par sa qualité de "programme externe", il n'est pas unique. En effet, rien n'empêche n'importe
quel programmeur de programmer une boucle qui attend une chaîne au clavier, analyse cette chaîne
et appelle ensuite le système pour exécuter l'ordredemandé. C'est la raison pour laquelle il existe
plusieurs shells. Nous trouvons entre autres (listenon-exhaustive) :
le Bourne Shell ("/bin/sh")
le Korn Shell ("/bin/ksh")
le c Shell ("/bin/csh") pour les utilisateurs préférant un langage apparenté au "C"
le Job Shell ("/bin/jsh")
le Shell réseau ("/bin/rsh")
le Bourne Again Shell ("/bin/bash") qui a repris le Bourne Shell mais qui l'a agrémenté de
nouvelles fonctionnalités (rappel de commandes, complétion automatique, etc.)
le c Shell amélioré ("/bin/tcsh") améliorant le c Shell tout en lui restant compatible
l'Almquist Shell ("/bin/ash") améliorant le Bourne Shell tout en étant plus compact que le
Bourne Again Shell
le z Shell ("/bin/zsh")
et d'autres encore à venir…
C'est un langage de commandes mais aussi un langagede programmation. Il permet donc :
l'utilisation de variables
la mise en séquence de commandes
l'exécution conditionnelle de commandes
la répétition de commandes
Un programme shell appelé aussi "script" est un outil facile à utiliser pour construire des
applications en regroupant des appels systèmes, outils, utilitaires et programmes compilés.
Concrètement, le répertoire entier des commandes Unix, des utilitaires et des outils est disponible à
partir d'un script shell. Les scripts shell conviennent parfaitement pour des tâches d'administration
du système et pour d'autres routines répétitives neréclamant pas les particularités d'un langage de
programmation structuré.
d'exploitation UNIX; et c'est la raison pour laquelle il porte ce nom "coquille", qui indique son état
détaché du "noyau" Unix. Son rôle est d'analyser lacommande tapée afin de faire réagir le système
pour qu'il réponde aux besoins de l'utilisateur. C'est le premier langage de commandes développé
sur Unix par Steve Bourne.
Une comparaison rapide pourrait l'apparenter au DOS (Disc Operating System) développé par
Microsoft, mais cette comparaison n'est là que pourillustrer le rôle du Shell par rapport à Unix.
De par sa qualité de "programme externe", il n'est pas unique. En effet, rien n'empêche n'importe
quel programmeur de programmer une boucle qui attend une chaîne au clavier, analyse cette chaîne
et appelle ensuite le système pour exécuter l'ordredemandé. C'est la raison pour laquelle il existe
plusieurs shells. Nous trouvons entre autres (listenon-exhaustive) :
le Bourne Shell ("/bin/sh")
le Korn Shell ("/bin/ksh")
le c Shell ("/bin/csh") pour les utilisateurs préférant un langage apparenté au "C"
le Job Shell ("/bin/jsh")
le Shell réseau ("/bin/rsh")
le Bourne Again Shell ("/bin/bash") qui a repris le Bourne Shell mais qui l'a agrémenté de
nouvelles fonctionnalités (rappel de commandes, complétion automatique, etc.)
le c Shell amélioré ("/bin/tcsh") améliorant le c Shell tout en lui restant compatible
l'Almquist Shell ("/bin/ash") améliorant le Bourne Shell tout en étant plus compact que le
Bourne Again Shell
le z Shell ("/bin/zsh")
et d'autres encore à venir…
C'est un langage de commandes mais aussi un langagede programmation. Il permet donc :
l'utilisation de variables
la mise en séquence de commandes
l'exécution conditionnelle de commandes
la répétition de commandes
Un programme shell appelé aussi "script" est un outil facile à utiliser pour construire des
applications en regroupant des appels systèmes, outils, utilitaires et programmes compilés.
Concrètement, le répertoire entier des commandes Unix, des utilitaires et des outils est disponible à
partir d'un script shell. Les scripts shell conviennent parfaitement pour des tâches d'administration
du système et pour d'autres routines répétitives neréclamant pas les particularités d'un langage de
programmation structuré.
1) Pourquoi programmer en shell ?
Aucun langage de programmation n'est parfait. Il n'existe même pas un langage meilleur que
d'autres ; il n'y a que des langages en adéquation ou peu conseillés pour des buts particuliers.
(Herbert Mayer).
Une connaissance fonctionnelle de la programmation shell est essentielle à quiconque souhaite
devenir efficace en administration système car toute l'administration dans Unix est écrite en shell.
Une compréhension détaillée des scripts d'administration est importante pour analyser le
comportement du système, voire le modifier. De plus, la seule façon pour vraiment apprendre la
programmation des scripts est d'écrire des scritpts.
Quand ne pas programmer en shell ?
Pour des tâches demandant beaucoup de ressources oubeaucoup de rapidité
Pour une application complexe où une programmation structurée est nécessaire (typage des
variables, prototypage de fonctions, tableaux multidimensionels, listes chaînées, arbres, etc.)
Pour des situations où la sécurité est importante (protection contre l'intrusion, le vandalisme)
Pour des applications qui accèdent directement au matériel
Pour des applications qui devront générer ou utiliser une interface graphique utilisateur (G.U.I.)
Pour des applications propriétaires (un script est forcément lisible par celui qui l'utilise)
Pour toutes ces situations, Unix offre une gamme delangages de scripts plus puissants comme le
Perl, Tcl, Python, Ruby ; voire des langages compilés de haut niveau comme le C et le C++.
d'autres ; il n'y a que des langages en adéquation ou peu conseillés pour des buts particuliers.
(Herbert Mayer).
Une connaissance fonctionnelle de la programmation shell est essentielle à quiconque souhaite
devenir efficace en administration système car toute l'administration dans Unix est écrite en shell.
Une compréhension détaillée des scripts d'administration est importante pour analyser le
comportement du système, voire le modifier. De plus, la seule façon pour vraiment apprendre la
programmation des scripts est d'écrire des scritpts.
Quand ne pas programmer en shell ?
Pour des tâches demandant beaucoup de ressources oubeaucoup de rapidité
Pour une application complexe où une programmation structurée est nécessaire (typage des
variables, prototypage de fonctions, tableaux multidimensionels, listes chaînées, arbres, etc.)
Pour des situations où la sécurité est importante (protection contre l'intrusion, le vandalisme)
Pour des applications qui accèdent directement au matériel
Pour des applications qui devront générer ou utiliser une interface graphique utilisateur (G.U.I.)
Pour des applications propriétaires (un script est forcément lisible par celui qui l'utilise)
Pour toutes ces situations, Unix offre une gamme delangages de scripts plus puissants comme le
Perl, Tcl, Python, Ruby ; voire des langages compilés de haut niveau comme le C et le C++.
0 commentaires:
Enregistrer un commentaire