Vous êtes sur la page 1sur 2

IUT de Villetaneuse E.

Viennet
R&T Module I-C1 Système d’exploitation 10/2012

TP No 2 - Shell Bash

Vous rédigerez un compte rendu, sur lequel vous indiquerez la réponse à chaque ques-
tion, vos explications et commentaires (interprétation du résultat), et le cas échéant
la ou les commandes utilisées.

EXERCICE 1 - Itération, chaı̂nes de caractères, expressions


On a un répertoire peuplé de fichiers dont les noms sont de la forme dcp_1234.jpg
ou DCP_1234.JPG, ou encore DCP_1234.jpg, etc, où 1234 est une suite de chiffres quel-
conques.
Écrire un shell script qui renomme tous ces fichiers, pour obtenir photo_124.jpg (tou-
jours en minuscules).

EXERCICE 2 - Lister les utilisateurs


Écrire un script bash affichant la liste des noms de login des utilisateurs définis dans
/etc/passwd ayant un UID supérieur à 100.
Indication : for in $(cat /etc/passwd) permet presque de parcourir les lignes du dit
fichier. Cependant, quel est le problème ? Résoudre ce problème 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 à 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ègles basées sur l’examen rapide du contenu du fichier).
Les fichiers de texte peuvent être affiché page par page avec la commande more (ou
less, qui est légèrement plus sophistiquée, car less is more...).

1- Tester les trois commandes read, file, less.


– comment quitter less ?
– comment avancer d’une ligne ?
– comment avancer d’une page ?
– comment remonter d’une page ?
– comment chercher une chaı̂ne de caractères ? Passer à l’occurence suivante ?
2- Écrire un script qui propose à l’utilisateur de visualiser page par page chaque fichier
texte du répertoire spécifié en argument. Le script affichera pour chaque fichier texte
(et seulement ceux là, utiliser la commande file pour vérifier qu’elle indique « text »)

R&T2 2012-13 - E. Viennet 1


la question “voulez vous visualiser le fichier machintruc ?”. En cas de réponse positive,
il lancera less, avant de passer à l’examen du fichier suivant.

EXERCICE 4 - Créer un script test-fichier, qui précisera la nature du « fichier »


passé en paramètre (fichier ordinaire ou répertoire) et ses permissions d’accès pour
l’utilisateur qui lance le script.
On utilisera des conditions (if/then/else/elif), les opérateurs de test du shell (-d, -f,
etc.) et les commandes de bases (ls, cut, ...).
Exemple de résultats :

Le fichier /etc est un répertoire


"/etc" est accessible par root en lecture écriture exécution

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épertoire


Écrire un script bash listedir.sh permettant d’afficher le contenu d’un répertoire en
séparant les fichiers et les (sous)répertoires.
Exemple d’utilisation : la commande ./listdir.sh affichera :

-------------- Fichiers dans /etc/rc.d --------------------


rc
rc.local
-------------- Repertoires dans /etc/rc.d --------------------
init.d
rc0.d
rc1.d
...

EXERCICE 6 - Étude 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êt du service “réseau”, et est en général lancé via
la commande “service network start”.
Vous n’êtes sans doute pas encore en mesure de comprendre tous les détails de ce script,
mais devez pouvoir en comprendre l’architecture et répondre aux questions suivantes.

1- Quels sont les arguments acceptés 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ù est définie la fonction bash “action”?
4- A quoi sert le fichier /var/lock/subsys/network ?

R&T2 2012-13 - E. Viennet 2

Vous aimerez peut-être aussi