Travaux Pratiques - Atelier Système D'Exploitation

Ce laboratoire pratique permet d'apprendre les bases de la programmation en shell sous un système d'exploitation Unix/Linux. Il guide l'étudiant dans la création et la modification de scripts shell simples, la gestion des paramètres, l'utilisation des variables spéciales, la lecture interactive, ainsi que l'implémentation d'instructions conditionnelles.

D'après le document Travaux Pratiques - Atelier Système D'Exploitation

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Travaux Pratiques - Atelier Système D'Exploitation

Document source

Travaux Pratiques - Atelier Système D'Exploitation

Programming, Shell Scripting · PDF · 7 pages · 2017

Afficher l'aperçu du document

Consulter le document original →

Ce laboratoire pratique permet d'apprendre les bases de la programmation en shell sous un système d'exploitation Unix/Linux. Il guide l'étudiant dans la création et la modification de scripts shell simples, la gestion des paramètres, l'utilisation des variables spéciales, la lecture interactive, ainsi que l'implémentation d'instructions conditionnelles. Pour réaliser ce TP, un environnement Unix/Linux avec un éditeur de texte (comme vim) et un terminal shell sont nécessaires.

Objectifs

  • Créer et rendre exécutable un script shell simple.
  • Utiliser les paramètres passés au script pour le rendre plus flexible.
  • Manipuler les variables spéciales du shell.
  • Écrire des scripts interactifs avec lecture de l'entrée utilisateur.
  • Mettre en œuvre des instructions conditionnelles if et case dans un script.
  • Développer un script complet affichant des informations formatées et conditionnelles.

Prérequis et installation

  • Un système d'exploitation Unix/Linux avec un shell compatible (bash, sh, etc.).
  • Un éditeur de texte en ligne de commande, de préférence vim.
  • Connaissances de base en ligne de commande Unix.
  • Compréhension élémentaire des scripts shell et des variables.

Création du premier script

Dans cette première étape, vous allez créer un script simple qui liste les fichiers d'un répertoire avec des options spécifiques.

  1. Ouvrez vim et créez un fichier nommé listf.
  2. Écrivez la ligne suivante dans ce fichier :
ls -aCF

Cette commande liste tous les fichiers, y compris les fichiers cachés (-a), affiche les fichiers avec des indicateurs de type (-F) et organise la sortie en colonnes (-C).

  1. Rendez ce script exécutable avec la commande :
chmod +x listf

La fonction de ce script est d'afficher le contenu détaillé du répertoire courant, y compris les fichiers cachés, de manière lisible et organisée.

Passage des paramètres au script

Le script listf ne fonctionne actuellement que sur le répertoire courant. Pour le rendre plus général, vous allez modifier le script pour qu'il accepte un répertoire en argument.

  1. Ouvrez listf avec vim et modifiez-le pour utiliser la variable $1 qui représente le premier paramètre passé au script.
  2. Par exemple, remplacez la ligne par :
ls -aCF $1

Cette modification permet de lister le contenu du répertoire spécifié en argument lors de l'appel du script.

  1. Testez le script en l'exécutant sur différents répertoires :
./listf /chemin/du/repertoire

Le script doit afficher le contenu du répertoire donné en argument.

Généralisation avec la commande shift

Le shell limite l'accès direct aux paramètres à $1 à $9. Pour gérer plus de paramètres, la commande shift permet de décaler les paramètres.

  1. Créez un script nommé echopara contenant :
#!/bin/sh
echo "Paramètre 1 : $1"
shift
echo "Paramètre 1 après shift : $1"

Lors de l'exécution, ce script affiche le premier paramètre, puis après un shift, affiche le second paramètre initial devenu $1.

Utilisation des variables spéciales

Le shell définit plusieurs variables spéciales utiles :

  • $0 : nom du script invoqué.
  • $# : nombre de paramètres passés.
  • $* : liste de tous les paramètres.
  • $? : code de retour de la dernière commande exécutée.
  • $$ : numéro de processus (PID) du shell en cours.

Ces variables facilitent la programmation et le contrôle du comportement des scripts.

Instructions de lecture et d’écriture

Pour rendre un script interactif, on utilise echo pour poser une question et read pour récupérer la réponse au clavier.

  1. Écrivez un script nommé anniversaire.sh qui pose successivement les questions :
    • Votre Prénom ?
    • Votre Nom ?
    • Le jour de votre naissance (JJ) ?
    • Le mois de votre naissance (MM) ?
    • L'année de votre naissance (AAAA) ?
  2. Le script doit ensuite afficher :
Prénom Nom est née le JJ/MM/AAAA.

Ce script permet de créer un dialogue simple avec l'utilisateur et d'afficher les informations saisies dans un format clair.

Instructions conditionnelles

Les instructions conditionnelles permettent d'exécuter des commandes selon des conditions.

Syntaxe :

if commande
then
  commandes
fi

if commande
then
  commandes1
else
  commandes2
fi

if commande1
then
  commandes1
elif commande2
then
  commandes2
else
  commandes0
fi

Détection d'année bissextile

Augmentez le script anniversaire.sh pour afficher si l'année de naissance est bissextile selon la règle :

  • Si l'année A n'est pas divisible par 4, elle n'est pas bissextile.
  • Si A est divisible par 4, elle est bissextile sauf si A est divisible par 100 mais pas par 400.

Le script doit afficher l'un des messages suivants :

Prénom Nom est née le JJ/MM/AAAA. L'année de sa naissance AAAA est bissextile.

Prénom Nom est née le JJ/MM/AAAA. L'année de sa naissance AAAA n'est pas bissextile.

Affichage du mois en toutes lettres

Utilisez la structure case pour afficher le mois de naissance en toutes lettres dans le script anniversaire.sh.

Syntaxe :

case chaine in
motif1) commandes1 ;;
motif2) commandes2 ;;
...
motifn) commandesn ;;
esac

Le message final doit ressembler à :

Prénom Nom est née le JJ/MM/AAAA. L'année de sa naissance AAAA est : bissextile. Le mois de sa naissance MM est : JANVIER

Résultats attendus

  • Le script listf affiche correctement le contenu du répertoire courant ou du répertoire passé en argument.
  • Le script echopara affiche les paramètres correctement avant et après un shift.
  • Le script anniversaire.sh interagit avec l'utilisateur, récupère les informations demandées et affiche la date de naissance formatée.
  • Le script anniversaire.sh détermine correctement si l'année est bissextile selon la règle donnée.
  • Le script affiche le mois en toutes lettres selon la valeur saisie.

Pièges courants

  • Oublier de rendre le script exécutable avec chmod +x.
  • Ne pas passer d'argument au script listf après modification, ce qui peut provoquer une erreur si le paramètre est vide.
  • Confondre les variables $0 (nom du script) et $1 (premier paramètre).
  • Ne pas gérer correctement le cas où l'utilisateur ne saisit pas de valeur lors des questions interactives.
  • Erreur dans la logique de la condition bissextile, notamment dans les tests de divisibilité par 100 et 400.
  • Ne pas utiliser la syntaxe correcte du case (oubli des doubles points-virgules ;;).

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions