Introduction aux scripts shell la programmation shell. De quoi s'agit-il ? Imag

Introduction aux scripts shell la programmation shell. De quoi s'agit-il ? Imaginez un minilangage de programmation intégré à Linux. Ce n'est pas un langage aussi complet que peuvent l'être le C, le C++ ou le Java par exemple, mais cela permet d'automatiser la plupart de vos tâches : sauvegarde des données, surveillance de la charge de votre machine, etc. On aurait très bien pu faire tout cela en créant un programme en C par exemple. Le gros avantage du langage shell est d’être totalement intégré à Linux : il n'y a rien à installer, rien à compiler. Et surtout : vous avez très peu de nouvelles choses à apprendre. En effet, toutes les commandes que l'on utilise dans les scripts shell sont des commandes du système que vous connaissez déjà : ls, cut, grep, sort… On parlera beaucoup de shell dans cette section. De quoi s'agit-il exactement ? Nous répondrons à cette question en premier. Ensuite, nous réaliserons notre tout premier script shell qui affiche un message à l'écran… et nous pourrons alors passer aux choses sérieuses dès le chapitre suivant ! 1-Qu'est-ce qu'un shell ? j'ai fait la distinction entre les deux environnements très différents disponibles sous Linux : • l'environnement console ; • l'environnement graphique. Il existe plusieurs environnements console : les shells La différence est moins tape-à-l'œil que dans le mode graphique (où l'on voit tout de suite que les menus ne sont pas à la même place, par exemple). La console a toujours un fond noir et un texte blanc, je vous rassure (quoique ça se personnalise, ça). En revanche, les fonctionnalités offertes par l'invite de commandes peuvent varier en fonction du shell que l'on utilise. Les différents environnements console sont appelés des shells, c'est ça ? C'est ça, en effet. Voici les noms de quelques-uns des principaux shells qui existent. • sh : Bourne Shell. L'ancêtre de tous les shells. • bash : Bourne Again Shell. Une amélioration du Bourne Shell, disponible par défaut sous Linux et Mac OS X. • ksh : Korn Shell. Un shell puissant assez présent sur les Unix propriétaires, mais aussi disponible en version libre, compatible avec bash. • csh : C Shell. Un shell utilisant une syntaxe proche du langage C. • tcsh : Tenex C Shell. Amélioration du C Shell. • zsh : Z Shell. Shell assez récent reprenant les meilleures idées de bash, ksh et tcsh. • Que faut-il savoir ? Tout d'abord que l'ancêtre de tous les shells est le sh (Bourne Shell). C'est le plus vieux et il est installé sur tous les OS basés sur Unix. Il est néanmoins pauvre en fonctionnalités par rapport aux autres shells. • Le bash (Bourne Again Shell) est le shell par défaut de la plupart des distributions Linux mais aussi celui du terminal de Mac OS X. Il y a fort à parier que c'est celui que vous utilisez en ce moment sous Linux. Le bash est une amélioration du sh. • Voici dans les grandes lignes comment ont évolué les shells. Chacun hérite de la plupart des fonctionnalités de son ancêtre (figure suivante) À quoi peut bien servir le sh aujourd'hui alors, si bash est par défaut sous Linux ? sh reste toujours plus répandu que bash. En fait, vous pouvez être sûrs que tous les OS basés sur Unix possèdent sh, mais ils n'ont pas tous forcément bash. Certains OS basés sur Unix, notamment les OS propriétaires (AIX et Solaris…), utilisent d'autres types de shells ; le ksh y est par exemple très répandu. À quoi sert un shell ? Le shell est le programme qui gère l'invite de commandes. C'est donc le programme qui attend que vous rentriez des commandes. C'est aussi le programme qui est capable par exemple de : • se souvenir quelles étaient les dernières commandes tapées (vous remontez dans votre historique en appuyant sur la flèche « Haut » ou en faisant une recherche avec un Ctrl + R) ; • autocompléter une commande ou un nom de fichier lorsque vous appuyez sur Tab (figure suivante) ; • gérer les processus (envoi en arrière-plan, mise en pause avec Ctrl + Z…) ; • rediriger et chaîner les commandes (les fameux symboles >, <, |, etc.) ; • définir des alias (par exemple ll signifie chez moi ls -lArth). Bref, le shell fournit toutes les fonctionnalités de base pour pouvoir lancer des commandes. Installer un nouveau shell Pour le moment, vous devriez avoir sh et bash installés sur votre système. Si vous voulez essayer un autre shell, comme ksh par exemple, vous pouvez le télécharger comme n'importe quel paquet : # apt-get install ksh Une fois installé, il faut demander à l'utiliser pour votre compte utilisateur. Pour cela, tapez : $ chsh chsh signifie Change Shell. On vous demandera où se trouve le programme qui gère le shell. Vous devrez indiquer /bin/ksh pour ksh, /bin/sh pour sh, /bin/bash pour bash, etc. Quelle importance a tout ceci lorsque l'on réalise un script shell ? Si je vous parle de cela, c'est parce qu'un script shell dépend d'un shell précis. En gros, le langage n'est pas tout à fait le même selon que vous utilisez sh, bash, ksh, etc. Il est possible d'écrire des scripts sh par exemple. Ceux-là, nous sommes sûrs qu'ils fonctionnent partout car tout le monde possède un shell sh. Il s’agit toutefois du plus vieux shell, or écrire des scripts en sh est certes possible mais n’est franchement ni facile, ni ergonomique. Avec quel shell va-t-on écrire nos scripts, alors ? Je propose d'étudier le bash: • on le trouve par défaut sous Linux et Mac OS X (cela couvre assez de monde !) ; • il rend l'écriture de scripts plus simple que sh ; • il est plus répandu que ksh et zsh sous Linux. En clair, le bash est un bon compromis entre sh (le plus compatible) et ksh / zsh (plus puissants). 2- Notre premier script Nous allons commencer par écrire un premier script bash tout simple. Il ne sera pas révolutionnaire mais va nous permettre de voir les bases de la création d'un script et comment celui-ci s'exécute. Cela sera donc essentiel pour la suite. Création du fichier Commençons par créer un nouveau fichier pour notre script. Le plus simple est d'ouvrir Vim en lui donnant le nom du nouveau fichier à créer : $ vim essai.sh Si essai.sh n'existe pas, il sera créé (ce qui sera le cas ici). J'ai donné ici l'extension .sh à mon fichier. On le fait souvent par convention pour indiquer que c'est un script shell, mais sachez que ce n'est pas une obligation. Certains scripts shell n'ont d'ailleurs pas d'extension du tout. J'aurais donc pu appeler mon script essai tout court. Indiquer le nom du shell utilisé par le script Vim est maintenant ouvert et vous avez un fichier vide sous les yeux. La première chose à faire dans un script shell est d'indiquer… quel shell est utilisé. En effet, comme je vous l'ai dit plus tôt, la syntaxe du langage change un peu selon qu'on utilise sh, bash, ksh, etc. En ce qui nous concerne, nous souhaitons utiliser la syntaxe de bash, plus répandu sous Linux et plus complet que sh. Nous indiquons où se trouve le programme bash : #!/bin/bash Le #! est appelé le sha-bang, (on écrit aussi shebang, mais on utilisera "sha-bang" dans ce cours). /bin/bash peut être remplacé par /bin/sh si vous souhaitez coder pour sh, /bin/ksh pour ksh, etc. Bien que non indispensable, cette ligne permet de s'assurer que le script est bien exécuté avec le bon shell. En l'absence de cette ligne, c'est le shell de l'utilisateur qui sera chargé. Cela pose un problème : si votre script est écrit pour bash et que la personne qui l'exécute utilise ksh, il y a de fortes chances pour que le script ne fonctionne pas correctement ! La ligne du sha-bang permet donc de « charger » le bon shell avant l'exécution du script. À partir de maintenant, vous devrez la mettre au tout début de chacun de vos scripts. Exécution de commandes Après le sha-bang, nous pouvons commencer à coder. Le principe est très simple : il vous suffit d'écrire les commandes que vous souhaitez exécuter. Ce sont les mêmes que celles que vous tapiez dans l'invite de commandes ! • ls : pour lister les fichiers du répertoire. • cd : pour changer de répertoire. • mkdir : pour créer un répertoire. • grep : pour rechercher un mot. • sort : pour trier des mots. • etc. Bref, tout ce que vous avez appris, vous pouvez le réutiliser ici ! Allez, on va commencer par quelque chose de très simple : un ls. On va donc créer un script bash qui va juste se contenter d'afficher le contenu du dossier courant : #!/bin/bash ls C'est tout ! Les commentaires Notez que vous pouvez aussi ajouter des commentaires dans votre script. Ce sont des lignes qui ne seront pas exécutées mais qui uploads/Industriel/ 1-lesscripts-shell.pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager