TP No 2 - Shell Bash

Operating Systems · lab

Voir tous les documents en systèmes d'exploitation et cloud

IUT de Villetaneuse

R&T Module I-C1

Système d’exploitation

TP No 2 - Shell Bash

E. Viennet

10/2012

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 probleme ? Résoudre ce probleme en utilisant cut (avec

les bons arguments) au lieu de cat.

Publicité

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 caracteres ? Passer a 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

Publicité

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 parametre (fichier ordinaire ou répertoire) et ses permissions d’acces 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 --------------------

Repertoires dans /etc/rc.d --------------------

--------------

rc

rc.local

Publicité

--------------

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