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 nbArg
qui affiche son nombre d'arguments et "pas
d'arguments" si elle a été appelé sans
paramètre
- Ecrire une fonction existeFichier
qui indique si le fichier qui lui est
passé en argument existe. Le code de retour de la fonction
vaudra 0 si c'est le cas.
- é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,
1 si le fichier existe mais n'est pas un fichier ordinaire et 2 sinon.
exercice 2: structures de contrôle (if, 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
- écrire un script sommeTaille1.sh
qui affiche la taille des fichiers ordinaires dont les noms lui sont
passés
en paramètre puis la somme des tailles des fichiers. Exemple:
"sommeTaille1.sh f1 f2 test" retourne des tailles des fichiers
ordinaires f1, f2 et test puis leur somme.
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 l3 appartenant
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, ceux dont dont le nom ne contient aucun chiffre,
ceux dont le nom
commence par result et contient moins de 8 caractères ?
Bibliographie/liens utiles
Dans une version ultérieure de ce document.