INSTITUT SUPÉRIEUR D’INFORMATIQUE ANNÉE UNIVERSITAIRE : 2018-2019 ET DE GESTION

INSTITUT SUPÉRIEUR D’INFORMATIQUE ANNÉE UNIVERSITAIRE : 2018-2019 ET DE GESTION DE KAIROUAN DÉPARTEMENT INFORMATIQUE Système d’exploitation Sujets de Mini Projets AUDITOIRE : 1ERE année LFSI 1. Mini projet 1 : système de favoris pour le shell 1.1. Description Lorsque je travaille dans un terminal, certains répertoires reviennent très souvent. C'est par exemple le cas de mon dossier personnel. Le shell offre un raccourci pour se déplacer dans le dossier personnel : la commande cd sans argument. Je ne peux par contre pas sauvegarder d'autre répertoires "favoris" pour pouvoir m'y déplacer facilement. 1.2. Objectif L'objectif de ce mini projet est de créer un petit système de "favoris" pour vos répertoires importants. Votre script devra fournir 4 fonctions :  S (Save) pour sauvegarder un nouveau favori. Cette fonction prend un argument (une chaine sans espace) et ajoute le répertoire courant dans votre liste de favoris.  C (Change) pour se déplacer dans un répertoire favori. Cette fonction prend un argument (un chaine sans espace) et cherche dans vos favoris. Si le favori existe, la fonction change le répertoire de travail, sinon, elle ne fait rien.  R (Remove) pour supprimer un favori de la liste.  L (List) pour afficher la liste de tous les favoris. Exemple d'utilisation $ source favoris.sh $ pwd /home/hyvernat/info202/TP/sujets/TP5 -1- $ S info202-5 Le répertoire /home/hyvernat/info202/TP/sujets/TP5 est sauvegardé dans vos favoris. -> raccourci : info202-5 $ cd $ pwd /home/hyvernat/ $ C info202-5 Vous êtes maintenant dans le répertoire /home/hyvernat/info202/TP/sujets/TP5. $ pwd /home/hyvernat/info202/TP/sujets/TP5 $ R info202-5 Le favoris "info202-5" est supprimé de votre liste. $ cd $ C info202-5 Le favoris "info202-5" n'existe pas. 1.3. Précisions Stockage des favoris Votre script utilisera un fichier (caché) .favoris_bash qui sera créé dans votre dossier personnel. Ce fichier contiendra une ligne par favori. Chaque ligne contiendra  le nom du favori (une chaine sans espace),  la chaine de caractères `` -> ``,  le chemin absolu du répertoire correspondant. Pour simplifier la gestion de ce fichier, il est conseillé de le définir dans une variable au début de votre script: FAV=$HOME/.favoris_bash -2- Note : la variable HOME contient le chemin absolu vers votre dossier personnel... Manipulation du fichier Pour manipuler le fichiers de favoris, il faudra utiliser les choses suivantes.  La commande grep qui permet d'afficher les lignes contenant une chaine de caractères donnée. Remarque, si on veut imposer que la chaine cherchée se trouve en début de ligne, on peut la préfixer par le symbole ^ : o grep "abc" donne toutes les lignes qui contiennent abc, o grep "^abc" donne toutes les lignes qui commencent par abc. D'autres options de la commande grep sont disponibles dans liste des commandes du shell  les redirections CMD > FICHIER et CMD >> FICHIER qui permettent de o remplacer le contenu de FICHIER par le résultat d'une commande, o de rajouter le résultat d'une commande à la fin de FICHIER. Attention, il n'est en général pas possible de rediriger le résultat d'une commande sur un fichier dans le même fichier. Par exemple, $ grep "CHAINE" fichier > fichier n'aura pas l'effet attendu car la redirection > fichier supprime le contenu avant que la commande grep "CHAINE" fichier ne commence. Pour faire ceci, il faut donc rediriger la commande dans un autre fichier temporaire, et remplacer ensuite le fichier d'origine par ce fichier temporaire. 1.4. Pour aller plus loin  Autoriser les noms de favori incomplets : C info202 utilisera le favori info202-5 s'il existe. La commande C devra donc o chercher les favoris "compatibles" o s'il n'y en a qu'un seul, elle l'utilise o s'il y a un favori "exact", elle l'utilise o sinon, elle affiche un message et ne fait rien  Autoriser une chaine pour la commande L afin de ne lister que les favoris contenant une chaine de caractères.  etc. -3- 2. Mini projet 2 : gérer une "TODO list" 2.1. Description Pour éviter d'oublier des choses importantes à faire, je voudrais garder une une liste dans mon ordinateur. J'aimerais pouvoir ajouter des tâches, les lister, et en supprimer. Remarque: je pourrais également utiliser cette fonctionnalité pour garder :  une liste de films à voir,  la liste des livres que j'ai prêtés,  etc. 2.2. Objectif Le script doit fournir une unique fonction todo qui offre 3 fonctionnalités :  lister les tâches en attente  supprimer une tâche  ajouter une tâche Voici un exemple d'utilisation : $ source todo.sh $ todo list 1 - finir TP d'info202 2 - téléphoner à tata 3 - inviter Edith à manger 4 - passer la serpillère dans l'entrée $ todo done 1 La tâche 1 (finir TP d'info202) est faite ! $ todo list 1 - téléphoner à tata 2 - inviter Edith à manger 3 - passer la serpillère dans l'entrée -4- $ todo add 2 réviser la chimie La tâche "réviser la chimie" a été ajoutée en position 2. $ todo list 1 - téléphoner à tata 2 - réviser la chimie 3 - inviter Edith à manger 4 - passer la serpillère dans l'entrée 2.3. Précisions Votre fonction devra analyser son premier argument afin de décider quelle opération effectuer. Il faudra donc se reporter à la section arguments individuels d'une fonction et la description des conditionnelles. Stockage des tâches La liste des tâche doit être sauvegardée dans un fichier (caché) .todo_list qui sera stocké dans votre dossier personnel. Ce fichier contiendra une ligne par tâche, sans numéro. Pour simplifier la gestion de ce fichier, il est conseillé de le définir dans une variable au début de votre script: TACHES=$HOME/.todo_list Note : la variable HOME contient le chemin absolu vers votre dossier personnel... Manipulation du fichier Pour manipuler les tâches, il faudra utiliser les choses suivantes.  La commande nl permet d'afficher les lignes d'un fichier, en ajoutant un numéro de ligne. Il est possible d'ajouter un séparateur entre le numéro et la ligne si vous le souhaitez (voir man nl pour les détails).  pour ajouter une tache en position n, il faudra : o rediriger les n-1 premières taches dans un fichier temporaire avec la commande head et une redirection >, o ajouter la tache dans le fichier temporaire avec une commande echo et une redirection >>, o les tâches à partir de la numéro n dans le fichier temporaire avec la commande tail et une redirection >>, -5- o remplacer le fichiers des tâches par le fichier temporaire. Les commandes head et tail seront utiles pour afficher les premières ou dernières lignes d'un fichier, et il faudra aussi lire la section sur les opérations arithmétiques en bash  pour supprimer la tache en position n, il faudra o rediriger les n-1 premières taches dans un fichier temporaire avec la commande head et une redirection >, o les tâches à partir de la numéro n+1 dans le fichier temporaire avec la commande tail et une redirection >>, o remplacer le fichiers des tâches par le fichier temporaire. 2.4. Pour aller plus loin  Gestion des erreurs (oubli du numéro de tache, etc.)  Gestion de plusieurs fichiers pour des listes différentes.  Filtre sur les taches en cours (avec grep) pour limiter l'affichage.  etc. 3. Mini projet 3 : statistiques sur des fichiers 3.1. Description J'aimerais bien avoir des statistiques sur mes fichiers :  taille totale occupée  taille occupée par les fichiers / répertoires cachés  nombres de petits (moins de 512kio) et gros fichiers (plus de 15Mio)  nombre de fichiers et répertoires vides (qui peuvent probablement être supprimés)  nombres de fichiers Python, ou html, etc.  ... 3.2. Objectif Le script devra fournir une fonction qui analyse le contenu du répertoire courant et de ses sous-répertoires et afficher des statistiques. La quantité de détails dépendra de la valeur de l'argument donné à la fonction :  1 (ou pas d'argument) : peu de détails  2 : un peu plus de détails  3 : beaucoup de détails Voici un exemple d'exécution -6- $ pwd /home/hyvernat/info202/ $ statistiques Analyse de /home/hyvernat/info202/ : - 45 répertoires - 114 fichiers - taille totale : 18M $ statistiques 2 Analyse de /home/hyvernat/info202/ : - 45 répertoires - 1 répertoire caché - 0 répertoire vide - 114 fichiers dont - 3 fichiers cachés - 1 fichier vide - taille totale : 18M $ statistiques 3 Analyse de /home/hyvernat/info202/ : - 45 répertoires - 1 répertoire caché - 0 répertoire vide - 114 fichiers dont -7- - 3 fichiers cachés - 1 fichier vide - 87 fichiers de moins de 512kio - 0 fichier de plus de 15Mio - le plus gros fichier est /home/hyvernat/info202/CM1/Img/RAM_old- plane_4k.jpg Il y a : - 5 fichiers Python - 17 fichiers image - 0 fichier vidéo - taille totale : 18M 3.3. Précisions L'ingrédient principal de cette fonction sera la commande find et des redirections CMD1 | CMD2. Vous pouvez vous reporter aux sections pertinentes dans la liste des commandes du shell. Il n'est pas nécessaire d'écrire des boucles pour cette fonction uploads/Management/ systeme-d-x27-exploitation-sujets-de-mini-projets.pdf

  • 24
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mar 14, 2022
  • Catégorie Management
  • Langue French
  • Taille du fichier 0.2889MB