Vous êtes sur la page 1sur 4

IUT de Villetaneuse

E. Viennet

GTR 2ième année

Introduction au Système UNIX

15/09/03

TP N o 1 - Rappels : utilisation de base

Le support de cours “Introduction à UNIX” est disponible au format HTML dans le réper- toire :

/home/users/TPGTR/CoursUnixGTR

Le fichier toc.html contient la table des matières, et le fichier index.html l’index des commandes. Nous vous conseillons de supprimer les signets (bookmarks) originaux de votre navigateur (netscape), et d’ajouter des signets vers les pages du cours fréquement consultées. Les termes et commandes inconnus utilisés dans ce sujet sont définis dans le support de cours. On pourra aussi utiliser avec profit la commande man, qui permet d’afficher la docu- mentation des commandes UNIX.

EXERCICE 1 - Connexion au système

Chaque étudiant possède un “compte” UNIX à son nom. Connectez vous à votre compte en suivant les indications de votre enseignant.

Changez votre mot de passe, et notez-le en lieu sûr afin de ne jamais l’oublier (sans quoi vous ne pourriez plus travailler).

Vérifiez (echo $SHELL) que votre shell de connexion (celui lancé par défaut) est /bin/bash. Si ce n’est pas le cas, changez le avec la commande ypchsh.

Vous pouvez ouvrir une (ou plusieurs) fenêtres d’interpréteurs de commandes (shell).

Attention, UNIX fait la différence entre les majuscules et les minuscules. La plupart des commandes doivent s’écrire en minuscules. Séparez toujours la commande de ses arguments par un ou plusieurs espaces (par exemple, écrire ls -l et non pas ls-l).

1- Commandes de base : révisez l’utilisation des commandes cd, mkdir, ls, rmdir,

rm, cp, man, date, pwd, mv, echo.

Si nécessaire, utilisez les pour faire le ménage sur votre compte. Organisez vos fichiers pour gagner du temps lors des différents TP. Vous devez avoir dans votre répertoire de connexion les répertoires suivants :

bin : scripts et commandes personnels ;

tmp : essais temporaires, à effacer régulièrement.

TP01, TP02,

Evitez toujours de laisser des fichiers dans votre répertoire de connexion. Utilisez les sous- répertoires. Cette discipline vous fera gagner du temps à long terme.

: exercices du TP 1, 2

EXERCICE 2 - Redirections, méta-caractères, divers

1- Quelles différences voyez-vous entre les ls * et echo * ? Expliquez.

2- Que fait le programme Python suivant ?

import sys

n = int(sys.argv[1])

for i in range(n):

f = open( ’f’ + str(i), ’w’ ) f.write( ’%s\n’ % i ) f.close()

Créez un fichier genf.py dans votre répertoire de TP, puis lancez python genf.py 16. Qu’observez-vous ? Quelle est la taille en octets des fichiers créés ? Pourquoi ?

3- A l’aide d’une seule commande shell, créez un fichier “tous” dont le contenu soit la

concaténation des fichiers précédement créés.

4-

Quelle est la taille du fichier tous ? Combien de lignes comporte-t-il ?

5-

Saisir le programme suivant dans le fichier somme.py.

sum = 0

try:

while 1:

x = float(raw_input("entrez un nombre: ")) sum = sum + x

except:

print ’somme= ’, sum

Que fait ce programme ? Essayez le.

6- A l’aide d’une ligne de commande (redirection) et du programme somme.py, faire affi- cher la somme des nombres contenus dans le fichier tous. Faire la même chose avec un tube (commande cat).

7- A l’aide des commandes grep et wc, afficher le nombre de lignes du fichier tous qui contiennent le chiffre 1.

EXERCICE 3 - Rappel : Langage Python

Dans cet exercice, on va écrire un programme en langage Python qui affiche le nombre de fichiers et répertoires présents dans le répertoire courant.

Le module os a une fonction listdir( rep ) qui retourne la liste des noms des fichiers et répertoires présents dans le répertoire rep.

1- Créer un répertoire “ProgPy” et le fichier source “nbfich.py” avec emacs ; y saisir le code du programme.

2-

Tester le programme en tapant “python nbfich.py”

3- Comment lancer l’exécution en partant d’un autre répertoire ?

4- Pour simplifier l’utilisation de ce programme, on va le rendre “exécutable”. Pour cela :

1. il faut indiquer sur la première ligne du fichier .py qu’il s’agit d’un programme py- thon : la première ligne du fichier doit être #!/usr/bin/env python

2. Ensuite, il faut indiquer au système que ce fichier est exécutable, en entrant la com- mande shell :

chmod (nous étudierons a+x nbfich.py cette commande en détail plus tard).

EXERCICE 4 - Commande find

1- Afficher (avec find) les noms de tous les fichiers du répertoire /usr ayant une taille supérieure à 250Ko.

2- Afficher les noms de tous les fichiers du répertoire /var ayant été modifiés après votre

répertoire de connexion.

3- A l’aide des commandes find et grep, afficher toutes les lignes contenant le mot include dans les fichiers d’extension .h situés dans le répertoire /usr/include et tous ses sous-répertoires.

EXERCICE 5 - Variables d’environnement en shell (sh)

Les variables d’environnement sont des variables transmises par le système d’exploitation à tous les processus. Chaque processus hérite des variables de son père (le processus qui l’a lancé, ici en général le shell). Ces variables peuvent être consultées ou modifiées. La valeur des variables d’environnement est de type chaîne de caractère.

Depuis le shell sh ou bash, on identifie les variables par leur nom précédé d’un $. La com- mande export permet d’indiquer qu’une variable doit être “exportée” vers les processus fils (elle est placée dans “l’environnement”). Exemples :

– Affichage de la variable PATH : echo $PATH

– Crée la variable TRUC, qui vaut “hello” : TRUC=hello (Attention : pas d’espaces autour du signe égal !)

– Exporter la variable TRUC : export TRUC

– Ajouter le répertoire . après le PATH : export PATH="$PATH":. La commande env affiche toutes les variables d’environnement.

Les programmes écrits dans des langages compilés ou interprétés peuvent accéder aux va- riables d’environnement dont ils héritent. En langage C, les fonctions de base sont getenv() et setenv() (voir les pages de manuel pour plus d’informations). En langage Python, le module os contient un dictionnaire nommé environ qui associe à chaque nom de variable d’environnement sa valeur. Par exemple, os.environ[’HOST’] est une chaine de caractères donnant le nom de la machine.

1- Afficher la liste des variables d’environnement. Quel genre d’informations trouve-t-on ?

2- Le shell recherche les commandes dans la liste des répertoires indiqués dans la variable d’environnement PATH.

1. Quelle est la valeur de PATH ?

2. Créer (s’il n’existe pas déjà) dans votre répertoire de connexion un sous-répertoire nommé bin et y placer un exécutable (par exemple le programme nbfich.py créé précedement).

3. Ajouter ce répertoire bin à votre PATH.

4. Vérifier que vous pouvez maintenant lancer l’exécution de nbfich.py quel que soit le répertoire courant.

5. Pour modifier le PATH de façon permanente, placer la commande de modification (3) dans le fichier de configuration de votre shell (~/.bashrc). A l’avenir, vous pouvez placer vos exécutables préférés dans votre répertoire bin.

EXERCICE 6 - Propagation des variables d’environnement.

Étudier la séquence de commandes shell suivante :

0

echo $ZORGLUB

; cette var. n’existe pas !

1

export TRUC=machin

;

cree la variable TRUC

2

TRAC=22

3

echo $TRUC $TRAC

; l’affiche

;

4

sh

; lance un nouveau shell

5

echo $TRUC

; affiche la valeur de TRUC

6

ECHO $TRAC

?

7

export TRUCBIS=hoho

; une autre variable

8

echo $TRUCBIS

9

exit

; termine le second shell

10

echo $TRUC

11

echo $TRUCBIS

; ??

Que se passe-t-il lors de la première commande (ligne 0) ? (comparer avec ce qui arrive lorsque Python évalue une variable qui n’existe pas).

La commande sh (ligne 4) ouvre un nouveau shell, qui hérite des variables de l’ancien. Que s’affiche-t-il à la ligne 9 ? Expliquer pourquoi.