Projet DVD-MIAGE 2010 : Correction du TP n°3 sur la programmation en shell
Pour résoudre cet exercice, consultez les corrigés du TD n°2.
Exercice A : Vérification des permissions d'un fichier
#!/bin/bash# syntaxe test-fichier nomFichier# effectue des tests sur le fichier et affiche un compte-rendu.acces=""if [ "$#" -eq 0 ]; then echo "Syntaxe d'appel : $0 nomFichier"; exit 1; fiif [ ! -e "$1" ]; then echo "Le fichier '$1' n'existe pas !"; exit 1; fiif [ -d "$1" ]; then echo "Le fichier '$1' est un répertoire"; fiif [ -f "$1" ]; then echo -n "Le fichier '$1' est un fichier ordinaire";if [ -s "$1" ]; then echo " qui n'est pas vide"; else echo " qui est vide"; fifiif [ -r "$1" ]; then acces="$acces lecture"; fiif [ -w "$1" ]; then acces="$acces écriture"; fiif [ -x "$1" ]; then acces="$acces exécution"; fiecho "'$1' est accessible par $USER en $acces"exit 0
Exercice B : Concaténation de fichiers
#!/bin/bash# on stocke les paramètres pour ne pas les perdrenb_param=$#nom_script=$0# vérification du nombre de paramètresif [ "$nb_param" -ne 1 ]; then echo "Usage : $nom_script <fichier_resultat>"; exit 1; fiparam1=$1# vérification de l'existence du fichier de sortie# il faudrait aussi tester si le motif du fichier n'est pas 'fichier*.txt'if [ -e "$param1" ]; then echo "Le fichier de sortie $param1 existe déjà"; exit 1; fi# boucle de concaténationfor fic in fichier*.txt; do# concaténationcat "$fic" >> "$param1"done
Exercice C : Archivage des fichiers avec suffixe date
#!/bin/bash# création du répertoire OLD si inexistantif [ ! -d OLD ]; thenif mkdir OLD; thenecho "Le répertoire OLD a été créé avec succès";elseecho "La création du répertoire OLD a échoué"; exit 1;fifisuffixe=$(date +'%Y-%m-%d')for i in *; doif [ -f "$i" ]; thencp "$i" "OLD/$i$suffixe"fidone
FAQ
1. Comment exécuter un script shell ?
Pour exécuter un script shell, utilisez la commande bash nom_script.sh ou rendez-le exécutable avec chmod +x nom_script.sh et exécutez-le directement avec ./nom_script.sh.
2. Que signifie le symbole -eq dans les scripts shell ?
Le symbole -eq signifie "égal à" et est utilisé pour comparer des nombres entiers dans les scripts shell.
3. Pourquoi utiliser date comme suffixe ?
Utiliser date comme suffixe permet de créer des sauvegardes uniques et organisées, évitant ainsi les conflits de noms de fichiers.