Le shell ::..

Introduction :.

Le shell n'est pas qu'un interpéteur de commandes. Il permet aussi un vrai travail de programmation avec des variables, des opérateurs mathématiques, des fonctions, des structures de tests, des entrées et des sorties.

Le travail avec le shell permet de faire des petits programmes pour étayer vos outils de travail d'administrateur pour simplifier toutes vos tâches répétitives.
Extrations, recherches, sauvegardes etc, vous pouvez créer ou trouver une multitudes de scripts pour vos activités.

On commence :.

En préambule

On travail en mode terminal. Une fois dans le vif du sujet, on peut lancer la commande ps pour connaître le shell utilisé


jp@NEPTUNE:~$ ps
  PID TTY          TIME CMD
 2890 pts/2    00:00:00 bash
 4195 pts/2    00:00:00 ps
jp@NEPTUNE:~$ 

jp@NEPTUNE:~$ bash --version
GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
Licence GPLv3+ : GNU GPL version 3 ou ultérieure 

Ceci est un logiciel libre ; vous être libre de le modifier et de le redistribuer.
Aucune garantie n'est fournie, dans la mesure de ce que la loi autorise.
jp@NEPTUNE:~$

En regardant le résultat affiché ci-dessus, c'est avec le bash que l'on travail.
On affine le résultat en demandant la version du bash avec la commande bash --version

Structure d'un script

Le programme ou script se trouve sous la forme d'un fichier texte avec comme extension .sh
On placera au début du script le nom du bash utilisé ainsi que son emplacement.
Si on lance la commade ls -l *.sh (ls- l est ici mis en alias )


jp@NEPTUNE:~$ l *.sh
-rwx--x--x 1 jp jp 450 avr  4  2012 table.sh
jp@NEPTUNE:~$ 

jp@NEPTUNE:~$ cat table.sh
#!/bin/bash
#
# Action  : Table de multiplication ...

y=1

echo -e ""

while [ $y -le 12 ]; do
    x=1
    while [ $x -le 12 ]; do
        printf "% 4d" $(( $x * $y ))
        let x++
    done
    echo ""
    let y++
done

# Fin du script
jp@NEPTUNE:~$ 

Pour éditer le script, il faut utiliser vos éditeurs préférés, soit vi, joe, nano etc.
Pour lancer celui-ci, il faut le mettre en mode exécutable avec la commande


jp@NEPTUNE:~$ chmod +x table.sh

Pour l'exécuter, il faut lancer :


jp@NEPTUNE:~$ ./table.sh

   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144
jp@NEPTUNE:~$

:.

.

.