IUT de Villetaneuse
R&T Module I-C1
Syst`eme d’exploitation
TP No 2 - Shell Bash
E. Viennet
10/2012
Vous r´edigerez un compte rendu, sur lequel vous indiquerez la r´eponse `a chaque ques-
tion, vos explications et commentaires (interpr´etation du r´esultat), et le cas ´ech´eant
la ou les commandes utilis´ees.
EXERCICE 1 - It´eration, chaˆınes de caract`eres, expressions
On a un r´epertoire peupl´e de fichiers dont les noms sont de la forme dcp_1234.jpg
ou DCP_1234.JPG, ou encore DCP_1234.jpg, etc, o`u 1234 est une suite de chiffres quel-
conques.
´Ecrire un shell script qui renomme tous ces fichiers, pour obtenir photo_124.jpg (tou-
jours en minuscules).
EXERCICE 2 - Lister les utilisateurs
´Ecrire un script bash affichant la liste des noms de login des utilisateurs d´efinis dans
Publicité
/etc/passwd ayant un UID sup´erieur `a 100.
Indication : for in $(cat /etc/passwd) permet presque de parcourir les lignes du dit
fichier. Cependant, quel est le probleme ? R´esoudre ce probleme en utilisant cut (avec
les bons arguments) au lieu de cat.
EXERCICE 3 - Lecture au clavier
La commande bash read permet de lire une chaˆıne au clavier et de l’affecter `a une
variable. exemple :
echo -n "Entrer votre nom: "
read nom
echo "Votre nom est $nom"
La commande file affiche des informations sur le contenu d’un fichier (elle applique
des r`egles bas´ees sur l’examen rapide du contenu du fichier).
Les fichiers de texte peuvent ˆetre affich´e page par page avec la commande more (ou
less, qui est l´eg`erement plus sophistiqu´ee, car less is more...).
1- Tester les trois commandes read, file, less.
– comment quitter less ?
– comment avancer d’une ligne ?
Publicité
– comment avancer d’une page ?
– comment remonter d’une page ?
– comment chercher une chaˆıne de caracteres ? Passer a l’occurence suivante ?
2- ´Ecrire un script qui propose `a l’utilisateur de visualiser page par page chaque fichier
texte du r´epertoire sp´ecifi´e en argument. Le script affichera pour chaque fichier texte
(et seulement ceux l`a, utiliser la commande file pour v´erifier qu’elle indique « text »)
R&T2 2012-13 - E. Viennet
1
la question “voulez vous visualiser le fichier machintruc ?”. En cas de r´eponse positive,
il lancera less, avant de passer `a l’examen du fichier suivant.
EXERCICE 4 - Cr´eer un script test-fichier, qui pr´ecisera la nature du « fichier »
pass´e en parametre (fichier ordinaire ou r´epertoire) et ses permissions d’acces pour
l’utilisateur qui lance le script.
On utilisera des conditions (if/then/else/elif), les op´erateurs de test du shell (-d, -f,
etc.) et les commandes de bases (ls, cut, ...).
Exemple de r´esultats :
Le fichier /etc est un r´epertoire
Publicité
"/etc" est accessible par root en lecture ´ecriture ex´ecution
Le fichier /etc/smb.conf est un fichier ordinaire qui n’est pas vide
"/etc/smb.conf" est accessible par jean en lecture.
EXERCICE 5 - Afficher le contenu d’un r´epertoire
´Ecrire un script bash listedir.sh permettant d’afficher le contenu d’un r´epertoire en
s´eparant les fichiers et les (sous)r´epertoires.
Exemple d’utilisation : la commande ./listdir.sh affichera :
Fichiers dans /etc/rc.d --------------------
Repertoires dans /etc/rc.d --------------------
--------------
rc
rc.local
--------------
init.d
rc0.d
rc1.d
...
Publicité
EXERCICE 6 - ´Etude d’un script de service unix (lecture)
Ouvrir le fichier /etc/init.d/network dans (X)Emacs (en lecture seule). ce script est
responsable du lancement et de l’arrˆet du service “r´eseau”, et est en g´en´eral lanc´e via
la commande “service network start”.
Vous n’ˆetes sans doute pas encore en mesure de comprendre tous les d´etails de ce script,
mais devez pouvoir en comprendre l’architecture et r´epondre aux questions suivantes.
1- Quels sont les arguments accept´es par le script sur la ligne de commande ? Que fait-il
si on donne un argument invalide ?
2- Que fait le script si le fichier /etc/sysconfig/network n’existe pas ?
3- O`u est d´efinie la fonction bash “action”?
4- A quoi sert le fichier /var/lock/subsys/network ?
R&T2 2012-13 - E. Viennet
2