Catégorie : Comprendre     Tags :      

    Retrouvez cet article dans : Linux Pratique Hors série 8

    Lorsque l'on utilise régulièrement la même suite de commandes, on se dit assez rapidement que ce serait tout de même plus simple de les regrouper ensemble sous une même commande et de les lancer simultanément une fois pour toutes : l'idée d'un script shell est née.
    Un script, c'est un petit programme qu'on écrit dans un langage simple. Sous Linux, le plus basique est de se servir du langage de programmation par défaut installé sur toute machine : le shell (voir question/réponse correspondante). C'est un langage assez simple, mais qui permet tout de même de programmer des tâches assez compliquées (si l'on maîtrise suffisamment ses composantes...). Ici, on ne cherchera pas à apprendre les subtilités de la syntaxe du shell, mais simplement à regrouper une suite de commandes.
    D'abord, il faut savoir qu'un script shell n'est ni plus ni moins qu'un fichier texte standard, dans lequel on doit indiquer en premier lieu le nom du langage de programmation à utiliser. Admettons que votre système GNU/Linux fonctionne avec bash, comme c'est le cas la plupart du temps. Pour le notifier dans le script, on va utiliser le sha bang (ou she bang), représenté par #! ; ces deux caractères permettent d'introduire le chemin vers le programme qui va interpréter les commandes du script (ici bash). La première ligne de mon_script.sh (donnez-lui cette extension pour vous rappeler immédiatement qu'il s'agit d'un script shell, mais ça n'est pas obligatoire) doit donc être :

    #! /bin/bash

    La deuxième étape est de rendre ce fichier texte exécutable. Pour cela, il suffit de modifier les droits d'accès sur le fichier grâce à la commande chmod :

    ~$ chmod 755 mon_script.sh

    A partir de ce moment, dès que vous lancerez votre script, il pourra être exécuté. Attention, si vous saisissez uniquement le nom du script, voici ce qui va se passer :

    ~$ mon_script.sh
    bash: mon_script.sh: command not found
    ~$

    En effet, par défaut l'exécution de scripts dans le répertoire courant est désactivée. Il est nécessaire de spécifier le chemin d'accès au script, chemin absolu ou relatif ; si le script se trouve dans le répertoire courant :

    ~$ ./mon_script.sh

    Voici un petit exemple de script en guise de démonstration. Comme vous êtes prudent, vous faites des sauvegardes régulières de vos données : vous créez un répertoire BACKUP sur votre bureau, vous y copiez/collez les données à sauvegarder, vous compressez le tout, vous renommez le fichier pour lui ajouter la date du jour, vous supprimez le répertoire créé et ensuite vous utilisez votre programme de gravure préféré pour mettre votre archive à l'abri. L'essentiel de ces tâches peut être automatisé par un script comme le suivant :

    #!/bin/bash
    mkdir BACKUP
    cp -r Desktop/Mon-boulot/BACKUP/
    tar -czf backup`date +%Y%m%d`.tar.gz BACKUP
    rm -r BACKUP

    Avant de terminer sur ce sujet, un petit conseil : il est possible de mettre dans votre script, en plus des commandes à exécuter, des commentaires, c'est-à-dire du texte qui n'est destiné qu'à la lecture par l'utilisateur. Pour différencier les lignes de commande des commentaires, on fait précéder ces derniers du signe #. Cela est assez utile pour se rappeler le rôle du script ou la spécificité de certaines parties du programme.

    #!/bin/bash
    # Ceci est un script qui me permet
    # de sauvegarder mon boulot
    # à une date précise
    mkdir BACKUP
    cp -r Desktop/Mon-boulot/ BACKUP
    tar -czf backup`date +%Y%m%d`.tar.gz BACKUP
    rm -r BACKUP

    Dans notre exemple très simple, cela peut paraître inutile : le nom du script, backup.sh, est assez clair et les commandes qu'il contient sont basiques et lisibles. Pourtant, imaginez que par la suite vous créez d'autres scripts de backup pour sauvegarder d'autres données... Vous allez vite être perdu pour savoir quel script fait quoi ! Cela peut donc être assez utile et devient indispensable lorsque vous vous lancerez dans la création de programmes plus complexes..

    Retrouvez cet article dans : Linux Pratique Hors série 8

    Posté par (La rédaction) | Signature : Lucie Robin | Article paru dans

    Il y a actuellement un commentaire dans “Comment créer un script de commandes ?”

    1. 1 Le 17 mai 2008, scls19fr[10] ecrivait:

      Pour info
      #! /bin/bash
      s’appelle un shebang (ou Sha-bang)
      http://fr.wikipedia.org/wiki/Shebang

      On peut également mettre
      #! /usr/bin/env bash
      C’est plus portable

    Laissez une réponse

    Vous devez avoir ouvert une session pour écrire un commentaire.


    • Il y a actuellement

    • 666 articles/billets en ligne.