Outils pour utilisateurs

Outils du site


tp3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tp3 [2019/01/22 10:54] gillestp3 [2021/03/01 10:34] (Version actuelle) – [Q.1 - Création de l'environnement de travail] gilles
Ligne 21: Ligne 21:
    working_directory=tp-corbeille    working_directory=tp-corbeille
    if ! pwd | grep $working_directory; then    if ! pwd | grep $working_directory; then
 +      echo "Vous n'êtes pas dans le dossier $working_directory !!"
 +      exit 1
 +   fi
 +</code>
 +
 +ou sans écho écran
 +
 +<code bash>
 +   #!/bin/bash
 +   working_directory=tp-corbeille
 +   if ! pwd | grep $working_directory > /dev/null 2>&1 ; then
       echo "Vous n'êtes pas dans le dossier $working_directory !!"       echo "Vous n'êtes pas dans le dossier $working_directory !!"
       exit 1       exit 1
Ligne 180: Ligne 191:
 ---- ----
  
-  * Q.6: Grâce à la question 4, vous disposez d'une commande ''recursive-ls.sh'' qui affiche sur la sortie standard l'ensemble des fichiers présents dans une branche du SGF. En vous basant sur la technique du filtre vus en TD, écrivez la commande qui permet d'afficher sur la sortie standard le nombre de caractères, le nombre de lignes et le nombre de mots pour chacun d'entre eux. (cf. la commande ''wc'')+==== Q.filtrage ====
  
 +Le principe du filtrage, vu en TD vous permet d'agir sur chaque ligne de la sortie standard d'une commande. Une << structure >> générique pour un filtre écrit en ''bash'' peut ainsi être : 
 +
 +<code bash>
 +  #!/bin/bash
 +  while read line
 +  do
 +    # do something with $line
 +    ...
 +    # ... and go to next line until stdin is flushed 
 +  done
 +</code>
 +
 +Une telle structure se traduit de la façon suivante sur la ligne de commande.
 +
 +<code bash>
 +  $> cmd
 +  a b c d
 +  e f
 +  g h i j k
 +  l
 +  
 +  $> cmd | while read l
 +   > do
 +   >   echo "ligne : $l"
 +   > done
 +  ligne : a b c d
 +  ligne : e f
 +  ligne : g h i j k
 +  ligne : l
 +</code>
 +
 +Grâce à votre réponse de la question 6, vous disposez d'une commande ''recursive-ls.sh'' qui affiche sur la sortie standard l'ensemble des fichiers présents dans une branche du SGF. En vous basant sur cette technique du filtrage, écrivez une commande ''my-first-filter.sh'' qui permet affiche sur la sortie standard, pour chacune des entrées (arborescente ou non) le nombre de caractères, le nombre de lignes et le nombre de mots pour chacun d'entre eux. (cf. ''man wc'')
  
 ---- ----
  
-  * Q.7: A partir de vos réponses aux questions 5 et 6, vous êtes en mesure d'écrire le script << ''delete-multiple.sh'' >> **qui admet en paramètre un nombre multiple (fichiers ou dossiers) d'entrées** du SGFEcrivez << ''delete-multiple.sh'' >>. Vous serez alors en mesure de réaliser des suppressions multiples et récursives.+==== Q.Vers la corbeille ... ====
  
 +A partir de vos réponses aux questions 6, 7 et 8, vous êtes en mesure d'écrire le ''bash''-script ''delete-multiple.sh'' **qui admet en paramètre un nombre multiple (fichiers ou dossiers) d'entrées** du SGF. Ecrivez << ''delete-multiple.sh'' >>. Vous serez alors en mesure de réaliser des suppressions multiples et récursives qui seront transférées vers votre corbeille.
  
 ---- ----
  
-  * Q.8: Ecrivez le script << **''list-box.sh''** >> qui affiche l'ensemble des fichiers contenus dans la corbeille ainsi que leur date de suppression.+==== Q.10 - Lister le contenu de la corbeille ==== 
 + 
 +Ecrivez le ''bash''-script ''list-box.sh'' qui affiche sur la sortie standard l'ensemble des fichiers contenus dans la corbeille ainsi que leur date de suppression.
  
 ---- ----
  
-  * Q.9: Ecrivez le script << **''restore.sh''** >> qui permet la restauration d'un fichier présent dans la corbeille. A vous d'en définir les modalités. La reconstruction de la branche devra être envisagée le cas échéant.+==== Q.11 - Restauration de contenu ==== 
 + 
 +On souhaite écrire le ''bash''-script ''restore.sh''. ''restore.sh'admet un nombre variable de paramètre correspondant à autant d'entrées de la corbeille que l'on souhaite restaurer. A vous de définir les modalités de fonctionnement de votre paramétrageA noter que sans autre précision de l'utilisateur, la restauration se fera par défaut dans le dossier originel du fichier. Dans tous les cas, la reconstruction d'une branche pourra être envisagée (cf. option '-p' de la commande ''mkdir'').
  
 ---- ----
  
-  * Q.10: Lorsque que vous êtes suffisamment confiant du travail réalisévous pouvez, grâce à la commande ''alias'' modifier votre fichier de configuration ''.bashrc'' afin que la commande **''rm''** soit désormais sécurisée.+==== Q.12 - Finalisation du TP - A FAIRE SI VOUS ETES CONFIANT ==== 
 + 
 +Vous êtes suffisamment confiant du travail réalisé et vous souhaitez désormais faire en sortes que votre gestion de corbeille soit << transparente >> et se substitue à la commande ''rm''. Pour ce faire, les étapes à réaliser sont les suivantes : 
 + 
 +  - Changez dans vos ''bash-script'' la seconde ligne en ''working_directory=$HOME'' ou supprimez toute forme de vérification faite à la question 1. 
 +  - Dans votre dossier ''.sh-trash'' se trouvent vos ''bash''-script. Déplacez ce dossier à la racine de votre compte. 
 +  - Editez le fichier de configuration ''.bashrc'' se trouvant à la racine de votre compte. 
 +  - Ajoutez à la fin de ce fichier la ligne : ''PATH=$PATH:$HOME/.sh-trash'' 
 +  - Ajoutez à la fin de ce fichier la ligne : ''alias rm='delete-multiple.sh' 
 +  - redémarrer un terminal ou reconnectez-vous 
 + 
 +Désormais, chaque frappe de la commande ''rm'' place de façon transparente le fichier effacé dans la corbeille. 
  
 ---- ----
tp3.1548154445.txt.gz · Dernière modification : 2019/01/22 10:54 de gilles