Computing">
TD2 Programmation Shell
TD2 Programmation Shell
TD2 Programmation Shell
#!/bin/sh if [ $# -ne
1 ]; then
echo "Fournir un nom en parametre"
exit 1
fi
if [ -d "$1" ]; then
exit 0 else
"$0" `dirname "$1"`
mkdir "$1" fi
Écrire un programme shell qui affiche les arguments du programme, dans l'ordre d'apparition
(1er argument en premier). Si le programme n'a aucun argument, afficher « sans argument ».
Écrire un programme shell qui affiche ligne par ligne le contenu d'un fichier dont le nom est
fourni en paramètre.
Écrire un programme shell qui affiche tous les sous-répertoires du répertoire courant, en
utilisant une boucle.
Exercice 5 – Opérateurs sur les chaînes
Que fait le programme shell suivant (remplacez les '...' par le texte adéquat) ?
1) Écrire un programme shell qui accepte 2 paramètres. Le premier paramètre est +r, -r, +w ou
-w, et le deuxième paramètre spécifie une extension de nom de fichiers. En fonction de la valeur
du premier paramètre, le programme modifiera les droits du groupe de tous les fichiers du
répertoire courant dont l'extension est égale au deuxième paramètre. Pour contrôle, avant chaque
modification des droits sur un fichier, le programme affichera le nom du fichier.
droitsfichiers +r .html
2) Proposez une nouvelle version de ce programme capable d'accepter trois paramètres. Les trois
paramètres spécifient alors :
1. le répertoire dans lequel sont contenus les fichiers dont les droits seront modifiés,
2. les modifications des droits pour le groupe, 3. l'extension des fichiers concernés.
droitsfichiers .. -w .dat
droitsfichiers perso -r .txt
Écrire un programme shell qui efface un fichier après avoir demandé confirmation à
l'utilisateur. Le programme doit recevoir en paramètre le ou les noms du/des fichier(s) à effacer. Pour
chaque fichier, il demande alors à l'utilisateur : « Voulez-vous réellement effacer le fichier xxx ? ». Si
la réponse est oui, le programme affiche « suppression confirmée », et efface le fichier. Si la réponse
est non le programme affiche « suppression abandonnée ». Dans les autres cas, le programme affiche
« réponse invalide » et repose la question à l'utilisateur.
On vérifiera que le nombre d'arguments reçu est correct, que toutes les opérations sont licites
et correctement effectuées
Écrire un programme shell qui commence par afficher « Entrer le nom d'un répertoire : » puis
lit le nom (relatif ou absolu) d'un répertoire (commande read). Le programme affichera ensuite le
texte « Le répertoire xxx contient les fichiers suivants : » suivi de la liste des fichiers contenus dans
le répertoire.
1) Ecrire une première version dans laquelle xxx est le nom du répertoire reçu en argument.
2) Ecrire une seconde version dans laquelle xxx correspond au chemin absolu du répertoire
entré par l'utilisateur, même si celui-ci est donné en relatif. On suppose toutefois que le
répertoire donné en paramètre se trouve dans le répertoire courant (inutile d'effectuer une
recherche dans toute l'arborescence).
Le script devra en plus afficher un message d'erreur adéquat dans les cas suivants :
• si le script n'est pas appelé avec le bon nombre d'arguments, •
si le nom entré par l'utilisateur n'est pas un répertoire, • si c'est
un répertoire non lisible.