Correction tp3 programmation shell - systèmes d’exploitation

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; fi
if [ ! -e "$1" ]; then echo "Le fichier '$1' n'existe pas !"; exit 1; fi
if [ -d "$1" ]; then echo "Le fichier '$1' est un répertoire"; fi
if [ -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"; fi
fi

if [ -r "$1" ]; then acces="$acces lecture"; fi
if [ -w "$1" ]; then acces="$acces écriture"; fi
if [ -x "$1" ]; then acces="$acces exécution"; fi
echo "'$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 perdre
nb_param=$#
nom_script=$0

# vérification du nombre de paramètres
if [ "$nb_param" -ne 1 ]; then echo "Usage : $nom_script <fichier_resultat>"; exit 1; fi

param1=$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énation
for fic in fichier*.txt; do
# concaténation
cat "$fic" >> "$param1"
done

Exercice C : Archivage des fichiers avec suffixe date

#!/bin/bash
# création du répertoire OLD si inexistant
if [ ! -d OLD ]; then
if mkdir OLD; then
echo "Le répertoire OLD a été créé avec succès";
else
echo "La création du répertoire OLD a échoué"; exit 1;
fi
fi

suffixe=$(date +'%Y-%m-%d')
for i in *; do
if [ -f "$i" ]; then
cp "$i" "OLD/$i$suffixe"
fi
done

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.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne