Année universitaire 2002-2003
espace

Licence d'informatique
Module 4 - partie "C / shell"



Travaux pratiques 8 :

  • 1. Introduction.
  • 2. Exercice 1 : manipulations de métacaractères.
  • 3. La commande pwd.
  • 4. La commande cd.
  • 5. La commande cp.
  • 6. La commande mv.
  • 7. La commande rmdir.
  • 8. Exercice 2 : manipulation de fichiers.
  • 9. La commande more.
  • 10. Exercice 3 : modification de droits d'accès.
  • 11. La commande man.
  • 12. Exercice 4 : début et fin d'un fichier.
  • 13. La commande sort.
  • 14. Exercice 5 : tri d'un fichier.
  • 15. Exercice 6 : commande grep.
  • 16. Exercice 7 : redirections.
  • 17. Exercice 8 : écriture de scripts.

  • 1. Introduction.

    Durant les six séances de travaux dirigés et les trois séances de travaux pratiques portant sur le shell, on se placera dans le cadre du shell de Bourne. Or, sur marine, le shell lancé à la connexion est un tcsh. On commencera donc, lors des séances de travaux pratiques, par lancer un shell de Bourne, en tapant la commande sh dans la fenêtre racine. Le nouveau prompt sera alors un caractère $

    Le shell de Bourne présente l'inconvénient de ne pas comporter les commandes d'historique des autres shells. Néanmoins, il s'agit du shell le plus communément répandu. En travaillant avec un autre shell, certaines commandes ne produiraient pas le même résultat qu'avec un shell de Bourne.

    2. Exercice 1.

    1) En utilisant la commande ls, présentée lors de la séance 11 de travaux dirigés, afficher la liste des fichiers du répertoire /users/linfg/linfg0/TD dont le nom suit l'un des deux modèles suivants :

    Il est précisé qu'un <numéro de séance> et un <numéro d'exercice> sont toujours constitués chacun de deux chiffres exactement.

    2) Modifier les trois chaînes de caractères suivantes, de manière à pouvoir les afficher intégralement à l'écran, à l'aide de la commande echo :

    Rappel :

    3. La commande pwd.

    Caractéristiques :

    Syntaxe :

    Description :

    Exemple :

    $ pwd
    /users/linfg/linfg0/TD
    $

    Codes de retour :

    4. La commande cd.

    Caractéristiques :

    Syntaxe :

    Description :

    Exemple :

    Codes de retour :

    5. La commande cp.

    Caractéristiques :

    Syntaxes :

    Description :

    Exemples :

    Codes de retour :

    Remarque :

    6. La commande mv.

    Caractéristiques :

    Syntaxes :

    Description :

    Exemples :

    Codes de retour :

    7. La commande rmdir.

    Caractéristiques :

    Syntaxe :

    Description :

    Exemple :

    Codes de retour :

    8. Exercice 2.

    Taper les commandes nécessaires à la réalisation de chacune des tâches suivantes :

    1) Se positionner dans le répertoire principal, et afficher le nom du répertoire courant.

    2) Créer le répertoire TP8REP, et son sous-répertoire TP8SREP, en une seule ligne de commande.

    3) Copier le fichier /users/linfg/linfg0/LISTES/liste.txt dans TP8SREP

    4) Se positionner dans le répertoire TP8SREP, et en afficher le contenu.

    5) Déplacer le fichier liste.txt de TP8SREP vers TP8REP

    6) Supprimer le répertoire TP8REP, ainsi que son contenu.

    9. La commande more.

    Caractéristiques :

    Syntaxe :

    Description :

    Exemple :

    Codes de retour :

    Remarque :

    10. Exercice 3.

    Effectuer les tâches suivantes, en utilisant la commande chmod, qui est décrite dans la séance 12 de travaux dirigés :

    1) Copier le fichier /users/linfg/linfg0/LISTES/liste.txt dans le répertoire principal, sous le même nom.

    2) Consulter le contenu de cette copie, sans utiliser d'éditeur de texte (donc à l'aide de la commande more).

    3) Contrôler les droits d'accès au fichier liste.txt, en tapant ls -l

    4) S'en interdire l'accès en écriture.

    5) Contrôler la modification des droits d'accès effectuée.

    6) Essayer de changer un prénom dans le fichier liste.txt, à l'aide de l'éditeur de texte asedit. Sauvegarder. Quitter asedit.

    7) Rétablir l'accès en écriture au fichier liste.txt pour le propriétaire.

    8) Essayer à nouveau d'effectuer la modification précédente, à l'aide d'asedit. Sauvegarder.

    9) Refaire la copie du fichier /users/linfg/linfg0/LISTES/liste.txt dans le répertoire principal, sous le même nom (cette copie sera utilisée dans les exercices suivants).

    11. La commande man.

    Caractéristiques :

    Syntaxe :

    Description :

    Exemple :

    Codes de retour :

    12. Exercice 4.

    La commande head permet de récupérer les premières lignes d'un fichier. La commande tail permet de récupérer les lignes situées à la fin d'un fichier. Après avoir lancé la commande man pour chacune de ces commandes, essayer de trouver a priori ce que font les quatre commandes suivantes, puis les taper pour vérifier :

    13. La commande sort.

    Caractéristiques :

    Syntaxe :

    Description :

    Exemple :


    etat_civil.txt

    Anne DUPONT 26 ans
    Jean DUPONT 22 ans
    Mathieu BARDON 23 ans
    $ sort -k 2,2 etat_civil.txt
    Mathieu BARDON 23 ans
    Anne DUPONT 26 ans
    Jean DUPONT 22 ans
    $ sort -k 2 etat_civil.txt
    Mathieu BARDON 23 ans
    Jean DUPONT 22 ans
    Anne DUPONT 26 ans
    $

    Codes de retour :

    14. Exercice 5.

    1) Sachant que tout étudiant du module 4 a un nom d'utilisateur du type linfg<numéro>, trier le fichier liste.txt de manière à afficher la liste des étudiants du module 4 par ordre de numéros croissants. Pour éviter que le numéro 2 n'apparaisse après le numéro 19, on conseille d'écrire un script basé sur la démarche suivante :

    Attention :


    liste.txt

    ...
    EMMANUEL-EMILE  CYRIL           linfg151
    EMRITTE         MEHDI           linfg22
    ...
    2) Trier ce fichier de manière à afficher la liste des étudiants par ordre alphabétique des prénoms.

    15. Exercice 6.

    En utilisant la commande grep, déjà présentée lors de la séance 11 de travaux dirigés :

    1) Afficher la liste des étudiants du module 4 ayant LAURENT comme prénom.

    2) Afficher la liste des étudiants ayant un numéro inférieur à 100.

    Remarque :

    3) Afficher la liste des étudiants ayant un numéro contenant un caractère 1 au moins.

    4) Afficher les noms et prénoms des étudiants dont le nom ou le prénom contient un caractère H au moins.

    16. Exercice 7.

    1) À l'aide uniquement de la commande echo, et sans utilisation du caractère \n, créer le fichier tp08.txt contenant les lignes suivantes :


    tp08.txt

    Est-ce que j'arrive
    a rediriger la
    sortie standard ?

    2) Déterminer a priori quel doit être le résultat de chacune des quatre commandes ci-dessous, puis contrôler :

    3) Écrire une commande permettant d'afficher les lignes 5 à 10 du fichier liste.txt

    4) A l'aide de la commande cut, qui a été décrite lors de la séance 12 de travaux dirigés :

    17. Exercice 8.

    Écrire les scripts permettant de réaliser les trois séquences de tâches suivantes, puis tester ces scripts :

    1) script1.sh :

    Vérifier que le script fonctionne bien, en contrôlant l'existence du répertoire REP et d'un fichier dans ce répertoire, dont le nom comporte l'extension .c ou .o

    2) script2.sh :

    3) script3.sh :

    On appellera ce dernier script sur des répertoires créés à l'aide de script2.sh


    Ces pages ont été réalisées par A. Crouzil, J.D. Durou et Ph. Joly.
    Pour tout commentaire, envoyer un mail à crouzil@irit.fr, à durou@irit.fr ou à Philippe.Joly@irit.fr.