Vous êtes sur la page 1sur 3

TRAVAUX PRATIQUES DE MATHÉMATIQUES 2005

Introduction à l’environnement Linux/UNIX


Ce bref document a pour but de vous introduire au système Linux/UNIX et à l'environnement de travail que vous
allez utiliser jusqu’à votre départ de la SMA. Ce manuel n'a pas la prétention d'être exhaustif, mais plutôt de
décrire les manipulations de base du système. Des références plus complètes sont données sur la page web du
cours : http://statwww.epfl.ch/teaching/TP/.

L'interface de commande et les variables d'environnement

L'interface de commande, ou shell, permet d'entrer des commandes au clavier et de recevoir des messages en
retour. Elle permet également de définir des variables d'environnement, comme par exemple le type de terminal.

Les variables d'environnement sont un moyen de personnaliser votre environnement de travail, ainsi que
certains programmes. Par exemple, dans chaque fenêtre apparaît à la suite du login ou d'une exécution de
commande réussie, la chaîne de caractères (appelée prompt):
[dupont@smapc001 dupont]$

La dernière partie (dupont) de ce prompt, est la fin du chemin absolu (voir plus bas) du répertoire courant. Elle
varie donc en fonction du niveau du répertoire dans lequel on se trouve. Le shell utilise la variable $PROMPT
pour définir l'allure de l'invite ([dupont@smapc001 dupont]$).

Les variables d'environnement commencent par un dollar ($) et, par convention, sont écrites en majuscules. Seul
le shell tcsh sera présenté, car c'est l'un des plus pratiques et c'est également celui qui se trouve sur vos
machines. Les instructions suivantes permettent de les manipuler pour le shell tcsh :

setenv affiche toutes les variables ainsi que leurs valeurs ;


setenv TEST monpetittestamoi crée ou met à jour la variable $TEST avec la valeur monpetittestamoi ;
echo $TEST affiche la valeur de la variable $TEST.

Fichiers et répertoires

Sous Linux/UNIX, les fichiers sont organisés d'après une architecture en arborescence, similaire à celle utilisée
par les systèmes DOS ou Windows. Les fichiers sont disposés en répertoires, eux-mêmes pouvant être
subdivisés en sous-répertoires. Chaque étudiant possède un répertoire principal, ou répertoire maison (« home
directory », noté ~ ou $HOME). Seul le propriétaire pourra lire ou écrire dans ce répertoire. Ce dernier sera
également accessible depuis n'importe quelle machine des salles MA182 et MA186.

Le chemin, absolu ou relatif, est une notion qu'il faut bien maîtriser. Il représente l'adresse d'un fichier ou d'un
répertoire dans l'arbre du système Linux/UNIX. On différencie le chemin relatif du chemin absolu:

* chemin (« pathname ») absolu:


/usr/people32c/dupont/directory_1/.../directory_N/file

* chemin (« pathname ») relatif au répertoire courant :


directory_1/.../directory_N/file

Le pathname absolu est l'adresse complète d'un fichier quelconque du réseau, donnée à partir de la racine (/); le
pathname relatif est le chemin d'accès au fichier file en partant du répertoire courant.

Commandes principales

Les commandes sont introduites à la suite du prompt. Une commande peut être suivie d'une série d'options et/ou
d'une série d'arguments. Afin d'être cohérent avec le manuel de référence nous présentons les différentes
commandes sous la forme :
NomDeCommande [-xyz...] [nom]

[-xyz...] chaque lettre représente une option ; les options peuvent être utilisées séparément ou de
manière combinée ;
[nom] un argument est un nom de fichier, de répertoire, etc.

L'argument/l'option se trouve entre crochets lorsqu'il/elle est facultatif/ive.

Mise à jour : 1er mars 2005 1


TRAVAUX PRATIQUES DE MATHÉMATIQUES 2005

passwd [name] permet de changer le mot de passe.


man commande affiche les pages du manuel de référence qui concernent commande.
man -k keyword affiche toutes les commandes dont le nom ou la description contiennent keyword.

pwd affichage du chemin absolu du répertoire courant.


ls [-la] [name] liste les noms de fichiers contenus dans name ;
-l avec cette option, on liste les noms de fichiers accompagnés de quelques détails sur
les droits d'accès, la taille, la date de la dernière mise à jour ;
-a avec cette option, on liste également le nom des fichiers commençant par un point
(.) ;
-la liste tous les fichiers, sous forme longue.
cd [directory] changement de répertoire ; on quitte le répertoire courant pour le répertoire directory
; si la commande est sans argument, on est ramené au répertoire principal de
l'utilisateur (home directory).
cd .. revenir au répertoire précédent dans l'arborescence.
cd / revenir à la racine de l'arborescence.
mkdir directory crée un répertoire directory dans le répertoire courant.
rmdir directory détruit le répertoire directory ; il doit être vide.
rm [-i] file détruit le fichier file. Les fichiers ainsi supprimés sont alors irrémédiablement perdus !
Pour pallier ce défaut : http://liawww.epfl.ch/~chaps/FAQUnix/#rm ;
-i cette option demande une confirmation de la destruction.
cp [file1 file 2] copie le fichier file1 dans le fichier file2 ; si file2 existait déjà, son contenu est écrasé ;
cp [file(s) pathname] copie le(s) fichier(s) file(s) dans un autre répertoire défini par son chemin.
mv [file1 file 2] renomme file1 en file2 ;
mv [file(s) directory] déplace le(s) fichier(s) file(s) vers le répertoire directory.

cat file(s) concatène et affiche (sans interruption) le(s) fichier(s) file(s) à l'écran.
more [file] affiche à l'écran le fichier file, page écran par page écran ; pour passer d'une page
écran à la suivante, pressez sur la barre d'espace ; pour passer à la ligne suivante,
pressez sur la touche « retour de chariot » ; pour sortir, pressez sur la touche 'q'.
nedit, xemacs [file] éditeurs de fichiers.

quota -v place disponible. Cette commande vous permet de connaître l'espace disponible sur
votre compte, ainsi que l'espace occupé par vos fichiers. Attention : s'il vous arrive de
dépasser l'espace autorisé pour vos fichiers, vous ne pourrez plus rien écrire sur
votre compte; il se peut même que vous ne puissiez plus vous connecter.

g++ [options] file(s).cc compilation et/ou édition de liens d'un ou plusieurs fichiers contenant des
file(s).o programmes C++ ou des modules objets ; sans l'option -c, la compilation est
directement suivie de l'édition de liens ; on obtient le fichier exécutable, mais le fichier
de compilation (extension '.o') n'existe pas ;
-c n'exécute que la compilation (vérification de la syntaxe), c'est-à-dire la création du
fichier objet '.o' ; l'édition de liens se passe dans une deuxième étape (voir exemples
en annexe) ;
-g permet l'utilisation du debugger lors de l'exécution ;
-o name permet de donner un nom au fichier de sortie. Avec cette option, le fichier s'appelle
name, au lieu de a.out (pour les exécutables) et file.o (pour les objets).

gzip fichier permet la compression d’un fichier. Le nouveau fichier sera fichier.gz ;
gunzip fichier.gz permet de décompresser un fichier. Ce fichier doit être du type .gz.

top permet d’observer la vie d’un système et de détecter les processus « gourmands ».
ps affiche la liste des processus en cours dans une shell ;
ps -fu dupont affiche tous les processus de l’utilisateur dupont en cours sur une machine ;
kill PID termine le processus avec numéro d’identification PID.

lpr [-Pdest] file impression du fichier file ;


-Pdest cette option permet de choisir l'imprimante ;
-Pmalp4 imprimante laser postscript de la salle MA182 au premier étage (réservée pour les
TP de mathématiques).
cancel request-id détruit la requête d'impression spécifiée ; on utilise cancel avant de relancer une
impression qui est restée bloquée dans la file d'attente.
mpage [-42b] [-Pdest] file impression de plusieurs pages du fichier file par feuille de papier ;
-4 valeur par défaut du nombre de pages imprimées par feuille ;
-2 valeur conseillée du nombre de pages par feuille ;
-b élimine le cadre mis par défaut autour du texte.

Mise à jour : 1er mars 2005 2


TRAVAUX PRATIQUES DE MATHÉMATIQUES 2005

Redirection

Par défaut les périphériques d'entrée et de sortie des machines sont respectivement le clavier et l'écran.
L'utilisateur peut modifier à sa guise cette convention. Il faut, pour ce faire, spécifier une nouvelle direction lors de
l'appel de la commande. On ajoute dans le cas d'une redirection de l'entrée le symbole '<' et dans le cas d'une
redirection de la sortie le symbole '>' suivi par la nouvelle entrée/sortie. Il s'agit en général d'un nom de fichier ou
d'un chemin. On peut donner comme exemple la commande cat.

cat file1 > file2 le résultat de la commande cat va se trouver dans le fichier file2 plutôt qu'à l'écran ;
le contenu de file2 est écrasé ;
cat file1 >> file2 le résultat de la commande cat va à la fin du fichier file2, plutôt qu'à l'écran
(concaténation).

Droits d'accès

Pour chacune des trois catégories d'utilisateurs : user (u), group (g), others (o), il y a des droits d'accès aux
fichiers et répertoires : read (r), write (w), execute (x). On peut trouver ces informations par la commande ls -l
file. On peut aussi modifier ces droits au moyen de la commande : chmod. Elle s'utilise de deux manières.
Sachant que read = 4, write = 2, execute = 1, on a la première commande: chmod xyz file où x, y, z ∈
{0,4,5,6,7}.
Exemple 1 : chmod 754 file attribue les accès suivants :

utilisateur\accès r=4 w=2 x=1 TOTAL


user r w x 7
group r x 5
others r 4
Exemple 2 : La seconde commande est plus transparente :
⎧u ⎫ ⎧r ⎫
⎪ ⎪ ⎧+ ⎫ ⎪ ⎪
chmod ⎨g ⎬ ⎨ ⎬ ⎨w ⎬ file
⎪o ⎪ ⎩- ⎭ ⎪x ⎪
⎩ ⎭ ⎩ ⎭
on attribue les accès r, w, x aux utilisateurs u, g, o ; le signe plus (+) attribue un accès, tandis que le signe moins
(-) supprime un accès. Par défaut on a les accès :

user group others TOTAL


fichiers r, w r r 644
répertoires r, w, x r, x r, x 755

Annexe (exemples de compilation)

1) g++ prog.cc module.o


Lance la compilation de prog.cc, effectue l'édition de liens avec module.o et génère le module
exécutable a.out.
a.out
Lance l'exécution du programme.

2) g++ -g prog.cc
Lance la compilation, effectue l'édition de liens, prépare l'exécutable de manière à pouvoir utiliser le
debugger et génère le module exécutable a.out.
ddd a.out
Lance l'exécution du programme sous le contrôle du debugger.

3) g++ -c prog.cc
Lance la compilation (sans l'édition de liens) et génère le module objet prog.o.
g++ -o exec prog.o
Lance l'édition de liens et renomme l'exécutable (exec).
exec
Lance l'exécution du programme.

Mise à jour : 1er mars 2005 3