Les scripts, et bash

Les scripts permettent de programmer dans le langage du shell, en utilisant, entre autres, les commandes natives de Linux.

Qu’est-ce que le shell ?

Comme nous l’avons vu au début de ce cours, le shell, ou encore “invite de commande” est un programme qui vous permet d’interagir avec le système en ligne de commande.

Il existe plusieurs shells :

  • 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.
  • 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.
  • fish... et bien d’autres.

Attention : les scripts, leur structuration et leur expressivité dépendent du shell que vous utilisez !

Comment savoir sur quel shell je me trouve ?

Il suffit d’utiliser la commande echo $0.

Essayez les commandes suivantes :

echo $0
/bin/sh

Une fois les commandes effectuées, essayez d’utiliser vos raccourcis préférés (Ctrl+R, Tab, flèches directionnelles). Que se passe-t-il ? Comment revenir à votre shell préféré ?

À propos de bash

Il faut voir bash comme un langage de programmation comme un autre... et plutôt capricieux.

Attention aux espaces, aux points virgules, aux guillements et aux variables qui se déclarent sans le $ et qui s’utilisent avec.

Vous trouverez dans la suite un rapide descriptif de ce qu’il est possible de faire en bash, mais n’hésitez pas à consulter les ressources en ligne pour en savoir plus, connaître les options des différentes commandes, etc.

Bien débuter son script.

Il est important de démarrer son script par une ligne qui indique que vous travaillez en bash. Sinon, c’est le shell par défaut de l’utilisateur qui sera utilisé pour exécuter le script, et si celui-ci n’est pas bash, le script risque d’avoir un comportement inattendu.

#!/bin/bash

Écrire sur la sortie standard

Pour écrire sur la sortie standard, on utilise la commande echo.

Que peut-on faire dans un script ?

Dans un script, on peut faire tout ce que l’on peut faire en console, et même plus ! Autrement dit, toutes les commandes disponibles sur le système sont utilisables dans les scripts.

Dans l’exemple ci-dessous, on a un petit script qui stocke le résultat de la commande ls dans le fichier ma_liste.txt (qui est créé pour l’occasion) et qui affiche sur la sortie standard le nombre de lignes du fichier ma_liste.txt.

Comment sauvegarder et exécuter un script ?

Conventionnellement, on sauvegarde les scripts dans des fichiers dont l’extension est .sh, pour les repérer plus facilement, mais ce n’est absolument pas une obligation.

Pour exécuter le script, le plus simple est de donner à l’utilisateur qui le possède les droits d’exécution, en utilisant chmod, puis de lancer le script en utilisant la commande ./nom_du_script.sh. L’autre solution consiste à utiliser la commande correspondant au shell qui doit exécuter le script : bash nom_du_script.sh. Cette méthode permet d’exécuter le script avec l’option -x qui est l’option “mode debug”.

Comment mettre des commentaires dans mon script ?

Le symbole qui permet d’insérer un commentaire est #.

En résumé, un petit exemple de script :

#!/bin/bash
echo "Hello World !"
# Ceci est un script qui affiche "Hello World !" sur la sortie standard.

La première ligne permet de charger le bon shell. En son absence, c’est le shell par défaut de l’utilisateur qui sera utilisé pour exécuter le script, et ce, à nos risques et périls. La dernière ligne est un commentaire.

Petite parenthèse sur les variables d’environnement

Il est parfois utile d’avoir recours aux variables d’environnement du système. Voici une liste des principales variables à connaître :

  • $SHELL
  • $PATH
  • $HOME
  • $PWD
  • $OLDPWD