Unité libre: scripts sous unix/ TD No4

Objectifs du TD :  scripts shell simples, fonctions, commande grep et expressions rationnelles, structures de contrôle

exercice 1: fonctions

  1. Ecrire une fonction qui affiche son nombre d'arguments et "pas d'arguments" s'il a été appelé sans paramètre
  2. Ecrire une fonction qui indique si le fichier qui lui est passé en argument existe
  3. écrire une fonction estFichierOrdinaire ayant un nom de fichier en argument et qui indique si ce fichier est un fichier ordinaire : le code de retour de la fonction vaudra 0 si c'est le cas.
  4. écrire une fonction estDossier ayant un nom de fichier en argument et qui indique si ce fichier est un dossier : le code de retour de la fonction vaudra 0 si c'est le cas.

exercice 2: structures de contrôle (if et for)

  1. écrire un script shell qui indique pour chaque fichier du dossier courant si c'est un dossier, un fichier ordinaire ou autre chose.
  2. écrire un script qui  crée une copie de sauvegarde de chaque fichier ordinaire : la copie de sauvegarde sera dans le dossier courant et son nom sera le nom du fichier auquel on aura ajouté ".bak". Ainsi, la copie de sauvegarde du fichier toto.txt sera toto.txt.bak
  3. modifier votre script de façon à 1) ce qu'on puisse lui passer en argument le dossier sur lequel agir et 2) ce qu'il agisse récursivement sur les dossier présents dans ce dossier

Exercice 3: grep, expression rationnelles communes et expansion de noms de fichiers

  1. écrire un script qui indique si une personne (dont le nom sera fourni en argument à votre script) est connectée sur votre poste
  2. Les login des étudiants ont la forme suivante: filiereNiveau-numero avec niveau valant l1, l2, l3, m1 et m2. combien y a-t-il de comptes d'étudiants de l3 ? (ypcat passwd permet d'obtenir la liste totale des comptes utilisateurs du domaine)
  3. Comment obtenir la liste des étudiants de l3appartenant au groupe 1008 ? (on pourra faire un "man 5 passwd" pour obtenir de l'aide sur la structure de fichier contenant la liste des utilisateurs)
  4. écrire un script qui affiche le login d'un utilisateur dont on fournit l'uid
  5. comment obtenir la liste des fichiers dont le nom fini par le caractère 4, dont le nom ne contient aucun chiffre, dont le nom commence par result et contient moins de 8 caractères ?
  6. donnez une commande permettant de copier tous les fichiers contenant 4 ou 1 en avant dernier caractères vers le dossier /tmp
  7. comment obtenir la liste des fichiers dont le nom se termine pas .jpg, .JpG, JPg, ....JPG

exercice 4: oups ! c'est plein

  1. écrire une fonction tailleHome qui retourne le pourcentage d'espace disque utilisé sur la partition /home (rappel: utilisez la commande df)
  2. écrire une fonction tropGros qui redétermine si la taille de /home est supérieur à un seuil passé en argument
  3. écrire une fonction qui détermine la taille en Ko utilisée par un dossier passé en argument
  4. écrire une fonction ayant une liste de fichiers comme argument qui affiche ceux qui font plus d'un certain seuil (le seuil sera le premier argument de la fonction)
  5. écrire un programme qui détermine si /home est plus gros qu'un seuil passé en argument et, dans ce cas, affiche le nom des étudiants et la taille du dossier personnel dont la taille du dossier personnel est supérieure

Bibliographie/liens utiles

Dans une version ultérieure de ce document.