Nom: Prénom: TP: mars 2005

Contrôle Système

Le répertoire courant est ICI; il ne doit JAMAIS CHANGER dans toutes les questions posées; c'est un sous-répertoire de votre répertoire de référence, qui contient, entre autres, le fichier tester.cpp, un sous-répertoire C++, un sous-répertoire INCLUDE.
Le sous-répertoire C++ contient les fichiers horloge.h et horloge.cpp.
La première ligne des fichiers tester.cpp et horloge.cpp est:         #include "horloge.h"

  1. Expliquez l'intérêt de la ligne   alias -x   mv="/usr/bin/mv -i"   située dans le fichier /etc/profile.
  2.  

     

  3. Déplacer tous les fichiers d'en-tête situés dans le père de ICI et dans le répertoire C++ dans le sous-répertoire INCLUDE.
  4.  

  5. Créer le module exécutable de nom tester, à partir de tester.cpp et du fichier horloge.cpp.
  6.  

     

  7. Faire exécuter tester après avoir tapé la ligne:     PATH=/usr/bin    
  8.  

  9. Modifier PATH afin de pouvoir exécuter tester si on est dans un autre sous-répertoire.
  10.  

     

    On suppose pour la suite que la variable PATH a repris la valeur qu'elle avait à la connexion
    Voici quelques lignes extraites de l'affichage de la commande   ll   :
         d-wx-------   2 212      200          512 27 fév 14:12 A
         dr-x-------   2 212      200          512 27 fév 14:12 B
         -rw--------   1 212      200         1418 27 fév 14:16 tester.cpp
    
    Expliquez le résultat obtenu par chacune des commandes suivantes, exécutées les unes après les autres.
     
  11. cp   tester.cpp   A
  12.  

  13. cp   tester.cpp   B
  14.  

  15. ls   A   |   wc -l
  16.  

  17. ls   B   |   wc -l
  18.  

 

 

Nom: Prénom: TP: mars 2005

La commande:     date   +%d%m%Y
            affiche   12042005 si on est le 12 avril(mois n° 4) 2005

La commande:     touch   -t 200503160001   tmp
            crée le fichier tmp avec la date du 16 mars (voir 03) 2005, à 00 h, 01 minute, ou modifie sa date s'il existe déjà..

La commande:     find   C++   -newer tmp
            affiche les noms des fichiers créés ou modifiés après le 16 mars 2005, 0 h, 1 minute en dessous du sous-répertoire C++

  1. Indiquez un cas où un message d'erreur peut être affiché par cette dernière commande (find).
  2.  
     

  3. Comment peut-on supprimer l'affichage de tous les messages d'erreur?
  4.  
     

  5. Créer le fichier .dateTemoin dans votre répertoire de référence, dont la date de création est celle du jour (0 h, 00 minute)
  6.  
     

  7. Placer dans le fichier de nom duJour, les noms des fichiers non exécutables, créés dans votre espace de travail le jour même.
  8.  
     

 

Correction

  1. Fournit une forme interactive de la commande mv (changement de nom ou déplacement de fichiers) pour le cas où le nouveau nom correpondrait à un fichier existant
  2. mv     ../*.h     C++/*.h    INCLUDE
  3. g++     -o tester   -I INCLUDE     tester.cpp     C++/horloge.cpp
    (précise l'emplacement de horlogne.h, déplacé dans le sous-répertoire INCLUDE)
  4. ./tester
    (on indique un chemin devant le nom de l'exécutable)
  5. PAT=$PATH:~/ICI
    (on ajoute ~/ICI à la liste des répertoires parcourus pour trouver un fichier commande)
  6. pas d'affichage; copie dans le sous-répertoire A
  7. message d'erreur sur la sortie erreur - à l'écran - car on ne peut pas écrire dans le sous-répertoire B
  8. message d'erreur sur la sortie erreur - à l'écran - car on ne peut pas lire dans le sous-répertoire A
    affichage de 0, nombre de lignes de la sortie standard
  9. affichage du nombre de fichiers non cachés, situés dans le sous répertoire B
  10. un message d'erreur apparaît si un sous-répertoire de C++ ne peut être parcouru (ni droit r, ni droit x)
    ou si le fichiet tmp n'existe pas
  11. find   C++   -newer tmp   2> /dev/null
    (rediriger la sortie erreur vers un fichier ou, ici, vers le trou noir)
  12. touch     -t `date +%Y%m%d`0000     ~/.dateTemoin
    l'opérateur `` convertit la sortie standard de la commande date en chaîne de caractères
  13. la commande ci-après affiche tous les fichiers ou répertoires de l'espace de fichiers de l'utilisateur, pour lesquels il y a un droit d'exécution :       find   ~   \( -perm -100   -o  -perm -010   -o  -perm -001 \)
    Pour obtenir les fichiers (simples), non exécutables, créés le jour même, on ajoute quelques conditions, puis on place la suite des noms dans le fichier duJour, du répertoire courant:
            find   ~   -type f     -newer ~/.dateTemoin     \
                            \( -perm -100   -o  -perm -010   -o  -perm -001 \)     > duJour