Td n°2 : pratiquer les bases de l'écriture de scripts shell

Projet DVD-MIAGE 2010 : Exercices de programmation shell

Exercice 1

Exemple de programme shell

Que fait le programme shell suivant, nommé mystere ?

#!/bin/shif [ $# -ne 1 ]; thenecho "Fournissez un nom en paramètre"exit 1fiif [ -d "$1" ]; thenexit 0else"$0" `dirname "$1"`mkdir "$1"fi

Proposez des exemples d'appels du programme mystere.

Exercice 2

La boucle while

Écrivez un programme shell qui affiche les arguments du programme dans l'ordre d'apparition (le premier argument en premier). Si le programme n'a aucun argument, affichez « sans argument ».

Indication : Utilisez la commande shift.

Exercice 3

La commande read

Écrivez un programme shell qui affiche ligne par ligne le contenu d'un fichier dont le nom est fourni en paramètre.

Exercice 4

La boucle for

Écrivez un programme shell qui affiche tous les sous-répertoires du répertoire courant en utilisant une boucle for.

Exercice 5

Opérateurs sur les chaînes

Que fait le programme shell suivant ? Complétez les points de suspension avec le texte approprié :

#!/bin/shw=`who | grep "$1"`if [ -z "$w" ]; thenecho "$1 n'est pas connecté"fi

Exercice 6

Les conditionnelles imbriquées

1) Écrivez un programme shell qui accepte deux paramètres. Le premier paramètre est +r, -r, +w ou -w, et le deuxième paramètre spécifie une extension de fichier. 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 correspond au deuxième paramètre. Avant chaque modification, affichez le nom du fichier.

Exemple d'utilisation (le script s'appelle droitsfichiers) :

droitsfichiers +r .html

2) Proposez une nouvelle version de ce programme capable d'accepter trois paramètres : le répertoire, les modifications de droits pour le groupe et l'extension des fichiers concernés.

Exemples d'utilisation (le script s'appelle droitsfichiers) :

droitsfichiers .. -w .datdroitsfichiers perso -r .txt

Exercice 7

L'instruction case

Écrivez un programme shell qui supprime un fichier après avoir demandé confirmation à l'utilisateur. Le programme reçoit en paramètre le ou les noms du(s) fichier(s) à supprimer. Pour chaque fichier, il demande : « Voulez-vous vraiment effacer le fichier xxx ? ». Si la réponse est « oui », il affiche « suppression confirmée » et supprime le fichier. Si la réponse est « non », il affiche « suppression abandonnée ». Dans les autres cas, il affiche « réponse invalide » et repose la question.

Exercice 8

La commande basename

Écrivez un script pour changer systématiquement l'extension d'une série de fichiers. Par exemple, renommez tous les fichiers .htm du répertoire courant en .html.

Syntaxe souhaitée : rename .htm .html

Vérifiez que le nombre d'arguments est correct, que les opérations sont licites et qu'elles sont bien exécutées.

Indication : Utilisez la commande basename.

Exercice 9

Guillemets, quotes ou back quotes ?

Écrivez 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.

1) Écrivez une première version où xxx est le nom relatif du répertoire.

2) Écrivez une seconde version où xxx correspond au chemin absolu, même si l'utilisateur entre un nom relatif (le répertoire doit être dans le répertoire courant). Affichez des messages d'erreur dans les cas suivants :

  • Si le script n'est pas appelé avec le bon nombre d'arguments.
  • Si le nom entré n'est pas un répertoire.
  • Si le répertoire n'est pas lisible.

Exercice 10

Les expressions régulières

Dans un fichier, trouvez les lignes suivantes en utilisant des expressions régulières :

  1. Commençant par « a » ou « A ».
  2. Finissant par « rs ».
  3. Contenant au moins un chiffre.
  4. Commençant par une majuscule.
  5. Commençant par « B », « E » ou « Q ».
  6. Finissant par un point d'exclamation.
  7. Se terminant par un point.
  8. Ne finissant pas par un signe de ponctuation (point, virgule, point-virgule, deux-points, point d'interrogation, point d'exclamation).
  9. Comment chercher tous les mots contenant un « r » précédé de n'importe quelle lettre majuscule ou minuscule ?
  10. Trouver tous les mots dont la deuxième lettre est un « r ».

FAQ

1. Qu'est-ce qu'un script shell ?

Un script shell est un fichier texte contenant une série de commandes shell qui peut être exécuté par un interpréteur de commandes comme sh ou bash. Il permet d'automatiser des tâches répétitives ou complexes.

2. Comment vérifier si un répertoire est accessible ?

Utilisez la commande test -r ou [ -r ] pour vérifier si un répertoire est lisible, ou test -d pour vérifier s'il s'agit bien d'un répertoire.

3. À quoi sert la commande basename ?

La commande basename extrait le nom de fichier à partir d'un chemin complet. Par exemple, basename /chemin/vers/fichier.txt renvoie fichier.txt.

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