Créer votre premier script

LinuxBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le monde de l’automatisation !

Imaginez que vous êtes cuisinier. Au lieu de préparer chaque plat à la main, de mémoire, à chaque fois, vous écrivez une recette. Le personnel de cuisine peut ensuite suivre cette recette pour préparer parfaitement le plat, encore et encore, sans que vous ayez besoin de superviser chaque étape.

Sous Linux, un script est votre recette. Il s’agit d’un fichier texte brut contenant des commandes que le shell peut lire et exécuter dans l’ordre. C’est l’une des formes d’automatisation les plus anciennes et les plus importantes des systèmes Unix et Linux.

La programmation shell est devenue populaire parce que les administrateurs avaient besoin d’un moyen léger d’automatiser les tâches répétitives, bien avant l’apparition des outils modernes de gestion de configuration. Aujourd’hui encore, de nombreux systèmes de production utilisent de petits scripts shell pour l’installation, la maintenance et le dépannage.

Dans ce laboratoire d’introduction, vous allez écrire votre toute première recette. Vous allez :

  1. Rédiger : créer le fichier du script.
  2. Écrire : ajouter les instructions (commandes).
  3. Autoriser : attribuer au fichier le droit d’être exécuté.
  4. Exécuter : lancer votre nouveau programme.

Créer un fichier de script

Commençons par préparer une feuille blanche sur laquelle écrire notre recette. Sous Linux, un script est simplement un fichier texte brut.

Linux ne vous impose pas d’utiliser des extensions de fichier, mais il est pratique de nommer les scripts shell avec l’extension .sh. Cela permet aux utilisateurs d’identifier rapidement le rôle du fichier, même si Linux s’intéresse davantage au contenu et aux permissions du fichier qu’à son extension.

Il s’agit d’une idée importante d’Unix : un fichier est généralement identifié davantage par son contenu et ses permissions que par son nom. Un script n’est pas un type de fichier spécial créé par un assistant graphique. C’est simplement du texte qu’un programme tel que Bash peut lire ligne par ligne.

Créons un fichier vide nommé hello.sh dans votre répertoire de projet.

Vérifiez que vous vous trouvez au bon endroit :

pwd

Utilisez maintenant la commande touch. Cette commande revient à prendre une feuille blanche :

touch hello.sh

Vérifiez que le fichier se trouve bien dans votre répertoire :

ls

Vous devriez voir hello.sh, prêt à recevoir vos instructions.

Écrire le contenu du script

Nous devons maintenant écrire la recette elle-même. Mais commençons par ajouter un en-tête spécial.

Imaginez qu’un script soit une lettre. Vous devez l’adresser à la bonne personne. Sous Linux, la première ligne d’un script indique au système qui doit le lire. Cette ligne s’appelle le shebang (#!).

Nous voulons que le shell Bash lise notre script ; nous l’adressons donc à /bin/bash. Nous allons également ajouter une instruction simple : echo. Cette commande demande à l’ordinateur « d’afficher ce texte ».

Le shebang est l’une des conventions Unix les plus anciennes et les plus pratiques. Lorsque vous exécutez un script comme un programme, le système d’exploitation lit la première ligne et l’utilise pour déterminer quel interpréteur doit traiter le fichier. Un interpréteur est un programme qui lit des instructions et les exécute, au lieu de lancer directement un binaire précompilé.

Ouvrez le fichier vide avec l’éditeur nano :

nano hello.sh

Saisissez maintenant exactement ces deux lignes :

#!/bin/bash
echo "Hello LabEx"

Voici ce qu’elles signifient :

  • #!/bin/bash : le « libellé d’adresse ». Il indique à Linux : « Veuillez transmettre ces instructions au programme Bash. »
  • echo "Hello LabEx" : l’« instruction ». Elle demande à Bash d’afficher Hello LabEx à l’écran.

Sans shebang, un script peut tout de même fonctionner dans certains cas si vous l’exécutez explicitement avec bash hello.sh, car vous choisissez alors manuellement l’interpréteur. En revanche, lorsque vous l’exécutez avec ./hello.sh, le shebang est la méthode standard pour indiquer au système quel programme doit traiter le fichier.

Enregistrer et quitter :

  1. Appuyez sur Ctrl + O pour enregistrer le fichier.
  2. Appuyez sur Enter pour confirmer.
  3. Appuyez sur Ctrl + X pour quitter.

Vérifiez votre saisie en affichant le contenu du fichier avec cat :

cat hello.sh

Rendre le script exécutable

Vous avez écrit une recette, mais pour l’instant, ce n’est qu’une feuille de papier. Linux applique une politique de sécurité stricte : les fichiers texte ne peuvent pas être exécutés comme des programmes tant que vous ne leur avez pas explicitement attribué ce droit. Cela vous évite d’exécuter accidentellement votre liste de courses comme du code !

Nous devons ajouter la « clé » qui permet l’exécution. La commande qui sert à modifier les permissions (ou modes) est chmod. La clé à ajouter est +x (plus eXécution).

Cette commande ne modifie pas du tout le contenu du fichier. Elle modifie ses bits de mode, qui font partie des métadonnées stockées par Linux pour chaque fichier. Autrement dit, chmod +x ne rend pas le script « davantage semblable à un script » ; cette commande indique simplement au système que le fichier peut être exécuté comme un programme.

Attribuez le droit d’exécution à votre script :

chmod +x hello.sh

Vérifions à nouveau les informations du fichier pour confirmer que la modification a fonctionné :

ls -l hello.sh

Observez les permissions affichées à gauche. Vous devriez voir un x, par exemple -rwxr-xr-x. Le nom du fichier peut également apparaître en vert : c’est la manière dont le terminal indique que vous pouvez l’exécuter.

Exécuter le script

C’est le moment de vérité. Préparons la recette !

Pour exécuter un script qui se trouve dans votre répertoire actuel, vous devez indiquer son chemin avec précision. Vous ne pouvez pas taper simplement hello.sh. Vous devez saisir ./hello.sh.

  • . signifie « répertoire actuel ».
  • / est le séparateur.

Ainsi, ./hello.sh signifie littéralement : « exécuter le fichier nommé hello.sh qui se trouve dans ce répertoire ».

Cela surprend beaucoup de débutants. La raison est que, lorsque vous saisissez directement le nom d’une commande, votre shell recherche généralement cette commande uniquement dans les répertoires listés dans la variable PATH. Pour des raisons de sécurité, le répertoire actuel n’est généralement pas recherché automatiquement. C’est pourquoi ./ est important : vous fournissez un chemin explicite au lieu de demander au shell de chercher la commande ailleurs.

Exécutez votre script :

./hello.sh

Si tout s’est bien passé, votre ordinateur devrait répondre :

Hello LabEx

Félicitations ! Vous n’êtes plus seulement un utilisateur de Linux ; vous êtes maintenant un programmeur Linux. Vous avez créé, autorisé et exécuté avec succès votre premier script d’automatisation.

Résumé

Bravo ! Vous venez de débloquer un superpouvoir important.

Reprenons le « flux de travail de création d’un script » que vous avez appris :

  1. Rédiger : utiliser touch ou un éditeur pour créer le fichier.
  2. Coder : ajouter l’en-tête #!/bin/bash et vos commandes.
  3. Déverrouiller : utiliser chmod +x pour autoriser son exécution par Linux.
  4. Exécuter : lancer le script avec ./scriptname.sh.

Cela peut sembler modeste, mais toute configuration automatisée de grande ampleur, des serveurs web aux supercalculateurs, commence par des scripts simples comme celui-ci.