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
- Ecrire une fonction qui affiche son nombre d'arguments et "pas
d'arguments" s'il a été appelé sans
paramètre
- Ecrire une fonction qui indique si le fichier qui lui est
passé en argument existe
- é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.
- é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)
- écrire un script shell qui indique pour chaque fichier du
dossier
courant si c'est un dossier, un fichier ordinaire ou autre chose.
- é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
- 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
- écrire un script qui indique si une personne (dont le nom
sera fourni en argument à votre script) est connectée sur
votre poste
- 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)
- 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)
- écrire un script qui affiche le login d'un utilisateur
dont on fournit l'uid
- 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 ?
- donnez une commande permettant de copier tous les fichiers
contenant 4 ou 1 en avant dernier caractères vers le dossier /tmp
- comment obtenir la liste des fichiers dont le nom se termine pas
.jpg, .JpG, JPg, ....JPG
exercice 4: oups ! c'est plein
- écrire une fonction tailleHome
qui retourne le pourcentage d'espace disque utilisé sur la
partition /home (rappel: utilisez la commande df)
- écrire une fonction tropGros
qui redétermine si la taille de /home est supérieur
à un seuil passé en argument
- écrire une fonction qui détermine la taille en Ko
utilisée par un dossier passé en argument
- é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)
- é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.