TP No 2 - Shell Bash

Operating Systems · lab

Browse all systèmes d'exploitation et cloud documents

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

Advertisement

/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 ?

Advertisement

– 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

Advertisement

"/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

...

Advertisement

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