Вы находитесь на странице: 1из 153

SYSTMES DEXPLOITATION LINUX

1




Collge de Rosemont

2013




Systmes dexploitation
Linux
Ali KAISSERLI
SYSTMES DEXPLOITATION LINUX


2

SYSTME INFORMATIQUE

Systme Informatique 1
Introduction aux ordinateurs 1

SYSTMES DEXPLOITATION

Introduction aux systmes dexploitation 2

1 - But dun systme dexploitation 2
2 - Constituants dun systme dexploitation 2
3 - Rle dun systme dexploitation 2
4 - Fonctionnement dun systme dexploitation 2
5 - Types de systmes dexploitation 3
6- volution historique des systmes dexploitation 3
7- Quelques notions lies aux systmes dexploitation 4
8- Comment sexcutent les travaux utilisateurs 4
9- Architecture dun systme multi-utilisateurs 4
10 - Systme de gestion des fichiers et scurit 5
11 - Classification des systmes dexploitation 5

HISTORIQUE DE UNIX

1- Historique du systme UNIX 6
2- Quelques systmes dexploitation UNIX 6
3- Caractristiques du systme dexploitation UNIX 6
4 - Schma de principe du systme dexploitation UNIX 8
5 - Le systme dexploitation LINUX 9

III LES PREMIERS PAS 10

Schma de connexion
10
1 - Une session Unix /LINUX 11
2 - Arrt la machine 11
3 - Utilisation du clavier 12
4 - Notion de terminaux virtuels 12

IV L'AIDE EN LIGNE 14

1 - Les pages du man 14
2 - Documentation des packages 17
3 - Les HOWTOs et FAQs 17
4 - La commande locate 17
5 - Les pages `info' 17

SYSTMES DEXPLOITATION LINUX


3

V - FICHIERS ET SYSTMES DE FICHIERS 19

1 - Dfinition dun fichier 19
2 - Structure des fichiers 19
3 - Schma thorique de reprsentation des fichiers dans un espace disque 19
4 - Systme de Gestion des Fichiers (SGF) 20
5 - Systme de Fichiers (File System) (FS) 20
6 - Organisation de lespace disque 21
7 - Mthodes de gestion des donnes sur disque 21
8 - Systme de fichier UNIX 22
9 - Organisation interne du systme de fichiers sous LINUX 25
10 - Les Fichiers 27
10.1 - Schma darborescence de LINUX
11 - Syntaxe dune ligne de commande 33
12 - Les commandes de gestion de rpertoires 33
13 - Les commandes de gestion de fichiers 37
14 - La gestion des droits daccs aux fichiers 44
Changement de propritaire (fichiers) 51
Changement de groupe (fichiers) 51
Gestion des groupes 52
Ajout de nouveaux groupes un utilisateur 52
Changement de groupe de travail 52
Les permissions tendues, les ACL (non standard UNIX) 52
Manipulations des systmes de fichiers 53
Cration d'un systme de fichiers 53
Montage et dmontage dun systme de fichiers 55
15 - Contrle de lespace libre et utilis 58
La commande du 59
16 - Les outils de compression et darchivage 59
17 - Intgrit du systme de fichiers 65

VI SHELL

1 - Introduction 67
2 Le Shell : bash 67

Les mtas caractres 68
Les entres-sorties standards 68
Redirections simples 69
Enchanement de commandes: les pipes (les tubes) (Comm. entre deux processus) 70
Redirections multiples 71
Les alias 72
Historique des commandes 72
Les variables 73
Les variables denvironnements 73
Les variables utilisateur 74
Manipulation des variables 74
Initialisation (ou affectation) 74
Accs une variable 74
SYSTMES DEXPLOITATION LINUX


4
Encadrement dune variable 74
Affiche du contenu dune variable 75
Concatnation de variables 75
Dure de vie dune variable 75
Suppression dune variable 75
Affichage de la liste des variables et de leurs contenus 75
Porte des variables 75
Protection dune variable contre la modification 75
Saisie dans une variable 76
Les tches de fond (processus en backgroud) 76
La commande echo 76
La compltion des noms de fichiers 77
Substitution de commande 77
Gestion des commandes 78
Excution squentielle 78
Excution conditionnelle de commandes ( ou tubes conditionnels): 78
Groupement de liste de commandes 79
Les fonctions 79
Syntaxe de dclaration dune fonction 79

VII LES FILTRES

Quelques dfinitions 81

La commande cut 81
La commande wc 82
La commande tr 82
La commande nl 85
La commande tail 87
La commande head 88
La commande paste 89
La commande sort 90
La commande uniq 92
La commande look 93
La commande split 94
La commande diff 95
La commande cmp 95

SYSTMES DEXPLOITATION LINUX


5

LES EXPRESSIONS RGULIRES 96

La commande grep 97

VIII LES DITEURS DE TEXTE 101

Les diteurs lignes 101
Le filtre-diteur sed 102
Lditeur vi 105
Changement du Mappage du clavier 107

La commande awk (Programmation) 109

Commande find 118

IX - LES PROCESSUS 125

Dfinition des processus 125
Contrle des processus 125
Types de processus et mode dexcution 125
tat dun processus 126
Mort dun processus 126
Commande particulires 126
Commande exec 127
Commande . (dot commande) 127
La commande ps 127
La commande kill 130
La commande su (switch user) 130
La commande top 132
La commande fuser 132
La commande nice 133
La commande nohup 134
Les commandes de contrle de jobs 134
Les processus priodiques ou processus fantmes 136
La commande crontab 136
Les commandes at , batch , atq et atrm 139

VI LA GESTION MMOIRE 142

Ce quest la mmoire 142
Caractristiques des mmoires 142
Classe des mmoires 142
Hirarchie des mmoires 142
Notion de mmoire virtuelle 142
Organisation et gestion de la mmoire virtuelle 142

SYSTMES DEXPLOITATION LINUX


6
Les commandes de gestion de mmoire 143
La commande free 143
La commande vmstat 144
La gestion de la zone swap 145
Les commandes de gestion de la zone swap 146
La commande mkswap 146
La commande swapon 146
tapes suivre pour crer une nouvelle zone swap 146


SYSTMES DEXPLOITATION LINUX


1
I INTRODUCTION

A Ce quest un systme informatique

Un systme informatique ou environnement informatique se caractrise par les lments suivant :

- Composants matriels et logiciels
- Rle de chaque composant et son interface
- Applications informatiques
- Lorganisation et gestion des donnes ( structure classique ou bases de donnes)
- Le systme dexploitation, les langages de programmation et outils de services

B Introduction aux ordinateurs

Un ordinateur a pour fonctions principales :

- le traitement de linformation
- le stockage de linformation
- la communication avec lextrieur

Les caractristiques essentielles de la dfinition dun ordinateur (selon Von Neumann) :

- Organes dentres ( clavier, souris, scanner, lecteur optique, )
- Organes de stockage de linformation (mmoire centrale, mmoires auxiliaires, )
- Unit de calcul arithmtique et logique (UAL)
- Organes de sorties (cran, imprimante, )
- Unit de commande (UC)

Classes dordinateurs

- Micro-ordinateurs ( PC, Mac, )
- Mini-ordinateurs (HP, SUN, IBM (AS/400), DEC (VAX))
- Gros ordinateurs (IBM, CRAY,) (Mainframe)












CPU

Schma gnral dun ordinateur.
ENTRE MMOIRE SORTIE
UAL


UC
SYSTMES DEXPLOITATION LINUX


2
C Introduction aux systmes dexploitation

Pour rendre oprationnelle une installation informatique, le matriel (ordinateur) lui seul ne suffit pas.
Pour le faire fonctionner, il faut ce que lon appelle des programmes ou logiciels.

Donc : une installation informatique = {matriel, logiciel} (hardware, software )

1 - But dun systme dexploitation :

Organiser et contrler efficacement les ressources dune installation informatique.

Parmi les ressources machines nous pouvons citer :

- CPU (control process unit ou micro processeur), mmoire, disques, cdrom, floppy, K7, imprimantes,
ports de communications, terminaux, modems, cartes interfaces.

Dune faon gnrale, toutes les units priphriques qui peuvent tre interfaces avec lordinateur.

2 - Constituants dun systme dexploitation :

Un systme dexploitation est un ensemble de programmes qui coordonnent le fonctionnement des diffrents
composants matriels et logiciels dun systme informatique.

3 Rle dun systme dexploitation :

Le rle principal dun systme dexploitation est une interface entre lhomme et la machine.
Il doit aussi grer efficacement les ressources matrielles et logicielles dune installation informatique.

4 - Fonctionnement dun systme dexploitation :

Dfinition technique dun systme dexploitation : un systme dexploitation est un ensemble de
programmes excutables.

Ces programmes quon appelle services permettent de rsoudre des problmes usuels tels que :

- traitement de linformation
- gestion des ressources physiques
- mise au point de programmes
- utilisation dapplications
- gestion des communications ( connexion directe, rseau)
- gestion mmoire ( allocation, libration)
- CPU ( partage entre les utilisateurs)
- Priphriques
- Protection des informations des utilisateurs
- Partage et change dinformations entre les utilisateurs
- Statistiques dutilisations des ressources et mesures de performance ( Audit)
- Gestion de lespace disque
- gestion de linformations (fichiers)
- excution des programmes
SYSTMES DEXPLOITATION LINUX


3

Un systme dexploitation lance plusieurs fonctions ( tches ) en mme temps ( tches parallles ou tches
qui sexcutent simultanment).

Chaque fonction a une tche bien prcise par exemple :

- gestion dun port de communication
- gestion du clavier
- gestion de lcran
- localisation dun fichier.
- etc.

Autres fonctions importantes :

- partage des ressources (matriels et logiciels)
- gestion des entres/sorties
- gestion des utilisateurs
- enregistrement de tout vnement sur le fonctionnement de la machine
- gestion de lespace disque
- ordonnancement des tches
- etc.

5 - Types de systmes dexploitation :

- mono-utilisateurs ( CPM, MSDOS, Windows )
Gre un seul utilisateur la fois (Il peut lancer plusieurs taches en mme temps).

- Multi-Utilisateurs (multi-users)
Gre plusieurs utilisateurs en mme temps.

exemples:

OS/MVS, OS/400 (IBM)
VMS (DEC)
MPE (HP)
WINDOWS NT
Les systmes dexploitation UNIX.

6 volution historique des systmes dexploitation :

Nous pouvons dire que lvolution des systmes dexploitation suivi lvolution technologique des
ordinateurs.

Fin des annes 1950 : apparition des systmes dexploitation traitement par lots (Batch)
Annes 1960 : Systmes dexploitations multiprogramms et qui offraient le multitraitement
Annes 1970 : Systmes dexploitations multi-modes (multiprogrammation et temps partag)
Apparition des rseaux



SYSTMES DEXPLOITATION LINUX


4

7 - Quelques notions lies aux systmes dexploitation :

Machine nue : pas de systme dexploitation ( tabulatrices, (trieuses, perforatrices ))

Temps partag (Time Sharing) : plusieurs utilisateurs peuvent utiliser la machine en mme temps travers
des terminaux connects cette mme machine. (Mode Conversationnel).

Multi-tches : excution de plusieurs taches en mme temps.

Multiprogrammation : plusieurs opration de natures diffrentes (CPU, Entres, Sorties) peuvent se
drouler en mme temps.

Mono-utilisateur : un seul utilisateur la fois.

Multi-utilisateurs : plusieurs utilisateurs en mme temps.

Systme batch : travaux par lot traitement ou en srie.

Temps rel : prise en compte de certaines oprations immdiatement.

Exploitation en rseau : Utilisation de diffrentes machines avec diffrent systme dexploitation.

Exploitation distribu ou informatique distribu : Transparence totale pour lutilisateur.

8 - Comment sexcutent les travaux utilisateurs :

les travaux batch ( travaux par lots excuts en tches de fonds (background))
Se sont en gnral des travaux qui font beaucoup de calculs et dentres/sorties
Exemple : mise jour dune base de donnes, calculs scientifiques (statistiques).
les travaux interactifs (conversationnel : dialogue entre le programme et lutilisateur)
les travaux en excution permanente (travaux en tches de fonds)

9 - Architecture dun systme multi-utilisateurs.














Types de connexion : local(terminal ou PC) , distance ( modem) ou en rseau .



U.C
SYSTMES DEXPLOITATION LINUX


5


10 - Systme de gestion des fichiers et securit :

Deux problmes importants sont poss un systeme dexploitation Multi-Utilisateurs

- lorganisation des donnes sur disque
- Scurit des donnes.

Organisation des donnes : systme de fichiers

Scurit :

Protection des intrus ( permission daccs)
Protection en cas de panne(partielle ou totale) :

Mirroring
Double configuration
Les disques RAIDs
Sauvegarde des donnes.

11 -Classification des systmes dexploitation :

Nous pouvons classer les systmes dexploitation en trois catgories :

. Les systmes dexploitations constructeurs (IBM, DEC, HP, BULL, )
Systmes trs ferms, aucune possibilit de modification.

. Les systmes propritaires (Microsoft, Beos, )
Systmes ferms avec quelques ouvertures.

. Les systmes ouverts (Open Source) (UNIX).
Systmes trs ouverts, modifiables quon peut implanter sur plusieurs plates formes.
SYSTMES DEXPLOITATION LINUX


6
II LE SYSTME DEXPLOITATION UNIX

1 - Historique du systme UNIX

1969 Version 1 : Conception du systme Unix au sein des laboratoires dATT par Ken
THOMPSON et Denis RITCHIE.
But initial dUNIX tait la cration dun systme de fichiers aussi simple et indpendant
de lapplication.
( 1ere version en assembleur sur PDP 7 de DEC) ( lanctre dUNIX est MULTICS).

1973 Conception du langage C par Denis RITCHIE
Rcriture du systme UNIX en langage C.
1978 Version 7 : rajout du swapping et gestion de gros fichiers
Introduction de linterprteur SHELL (sh : Bourne Shell)
1979-1988 naissance de la version BSD qui integre la memoire virtuelle,la pagination et les
protocoles TCP/IP
Systme V
Apparition de version UNIX sur les machines : IBM, HP, DEC PC
1989 ATT propose UNIX systme V release 4 ( SVR4)
Plusieurs Constructeurs adoptent cette version dUNIX : SUN, NCR, SGI, SIEMENS,
etc.
(Cest la dernire version dvelopper par ATT)
1995 OPEN GROUP, manation de lOSF et de X/OPEN dfinit UNIX 95, qui intgre les
principaux standard existants.

2 - Quelques systmes dexploitations UNIX :

AIX IBM
ULTRIX DEC
HP-UX HP
XENIX Microsoft
SCO-UNIX Santa Cruz Operation
SPIX BULL (Fance)
SINIX SIEMENS
LINUX Systme dexploitation libre
SunOS, Solaris SUN

Autour dUNIX sest cr beaucoup dassociations qui font parallelement la productions de normes pour la
standardisation du systme UNIX.

X/OPEN XPG ( X/OPEN Probability Guide)
OSF Open Software Foundation) OSF/1
IEEE POSIX. (Repris par ISO)
Deviendra le synonyme de systme ouvert

3 - Caractristiques du systme dexploitation UNIX :

Unix est un systme dexploitation multi-tches et multi-utilisateurs, de plus il est interractif.
SYSTMES DEXPLOITATION LINUX


7

La plupart des fonctions de base sont regroupes dans une partie monolothique appele noyau (Kernel) Les
deux autres parties principales dUnix sont construites par le systme de fichiers et une couche de logiciels
servant dinterface pour lutilisateur et qui est applell SHELL .

Unix multi-taches /multi-utilisateurs :

Connexion simultan de plusieurs utilisateurs, chaque utilisateur peut excuter des commandes
(programmes excutables ).

Lexcution dune commande donne naissance une tche, on dit aussi un processus.

Cest le noyau qui contrle le fonctionnement dune tche.

Arborescence et systme de fichiers :

Unix possde une seule arborescence ( arborescence hirarchique).

Plusieurs systmes de fichiers peuvent tre rattachs au systme de fichiers principal qui est la racine(/).

Le principe de rattachement des systmes de fichiers la structure principale se fait par un montage (dou la
notion de montage/dmontage).

Noyau et processus :

Le noyau ( kernel) est charg en memoire RAM au demarrage de lordinateur ( boot).

Le noyau est un fichier qui peut sexecuter de maniere autonome ( standalone) et dont le chemin daccs
est variable selon les systmes UNIX. ( Dans le cas de LINUX, le noyau se trouve dans le rpertoire /boot).

Le noyau est responsable de la gestion des ressources logiques ( processus, fichiers) et physsiques
(processeur, priphriques). Il offre aussi au programmeur un ensemble de fonctions qui permettent dans un
programme C de faire appell aux services du noyau. On nomme ces fonctions appels systmes ou encore
primitives. Il est aussi responsable de la gestion des processus ( taches).

La gestion de fichiers concerne louverture et la fermeture des fichiers, la lecture et lcriture des donnes
depuis et vers les fichiers.

La gestion des priphriques est prise en charge par des pilotes de peripheriques ( Devices Drivers ).

Un pilote se ddie la gestion dune famille de priphriques (disques, bandes, lecteur DAT, liaisons sries).

Il existe plusieurs familles de primitives. Chaque famille appartient lun des principaux standard du monde
UNIX ( POSIX, SVID, XPG, ).

Toutes les primitives dune meme famille, constitue ce que lon apelle une API ( Application Programm
Interface).


Les primitives permettent de programmer des demandes de service a tous les modules du noyau.
SYSTMES DEXPLOITATION LINUX


8

- Gestion des tches : fork() , exit() , exec()
- Gestion des fichiers : open() , close() , read()
- Paramtrage des priphriques : ioctl()

Le SHELL et les commandes :

Le SHELL est linterprteur du langage de commandes sous UNIX, il y a plusieurs interprteurs de
commandes :
sh Bourne Shell ( standard)
ksh Korn Shell
csh C-Shell
bash Bourne Again Shell

Tous ces Shell peuvent cohabiter sous UNIX.

Environnement de dveloppement : C/C++, Perl, Fortran, Mysql, Progress, etc

Environnement rseau : TCP/IP ( communication , rseau, FTP, FTPD , HTTPD, NETSCAPE, TCP , IP ,
TELNET, Internet, etc.).

Normalisation dUNIX : Unix est un systme normalis. (Open group 95)

Interface Graphique : Norme X11 de OSF.

4 Schma de principe du systme dexploitation UNIX

Unix sarticule autour de 4 couches principales :

gestion des processus
- Noyau gestion des fichiers
gestion des priphriques

- Shell : interprteur de commandes
- Les commandes
- Le systme de fichiers

Caractristiques gnrales du systme UNIX

- Unix est ouvert( non-propritaire et normalis )
Indpendant de tout constructeur, de toute machine,
de tout processeur. (noyau crit en C).
- Multi-Utilisateurs et Multi-tches
Temps partag (swapping, pagination, mmoire virtuelle)
Premption, Rentrance
- Unix gre bien les fichiers.
- Protge bien les donnes
- Possde un bon environnement de dveloppement.
5 - Le systme dexploitation LINUX :


Materiel

SYSTMES DEXPLOITATION LINUX


9
Aot 1991:

LINUX Torvals , dveloppe la premire version du noyau (Kernel) de LINUX sur un PC ( 386 /486 AT). Par
la suite, plusieurs programmeurs travers le monde ont pris en charge levolution du systme LINUX.
LINUX est un produit gratuit avec son code source.
LINUX respecte toutes les normalisations dun systme UNIX.
LINUX est un systme dexploitation multi-platformes

Quelques distributions LINUX :

Red hat
Slackware
Caldera
Mandrake
Debian
Suse
WinLINUX
Corel
TurboLINUX
Etc.

LINUX REDHAT : Distribution fonde sur le principe des paquetages et peut tre facilement mise jour.
Elle est disponible sur plusieurs plates-formes (PC, Digital Alpha, Sun Sparc)
Site Internet de RedHat : http://www.redhat.com/
SYSTMES DEXPLOITATION LINUX


10
III LES PREMIERS PAS

Comment utiliser une station de travail LINUX ou comment se connecter un systme Unix/LINUX ?

Il existe plusieurs possibilits pour se connecter un ordinateur fonctionnant avec le systme Unix/LINUX.

1) Terminal ( Liaison physique travers les ports srie) (connexion local)
2/ Terminal et liaison tlphonique ( travers un modem) ((connexion distance)
3) Micro-ordinateur (liaison physique port RS232) (mulation de terminal )
4) Micro-ordinateur, carte rseau ( TCP/IP par exemple) (telnet ou station graphique)

Schma de connexion :

Serveur UNIX



Liaison RTC



Terminal X














Station de Travail






Liaison telnet





Rseau TCP/IP
SYSTMES DEXPLOITATION LINUX


11
1- Une session Unix /LINUX :

Une session de travail LINUX consiste en lexcution dune suite de commandes.

Chaque utilisateur qui veut ouvrir une session de travail du systme Unix/LINUX doit se faire connatre par
son identification et son mot de passe.

login : identification utilisateur
password: mot de passe.

Remarque importante : Unix fait la diffrence en minuscule et majuscule.

Ds que lutilisateur est accept il y a affichage dun prompt.

$ utilisateur simple
# super utilisateur (root)

Pour mettre fin une session :

Il existe 4 possibilits:

la commande exit
la combinaison des touches ctrl et d
la commande kill 9 0
la commande logout

2 - Arrt la machine :

Il faut tre sous super utilisateur (root) et introduire une des lignes de commandes suivantes :

shutdown y g0
shutdown h now (h pour halt)
init 0

Pour redmarrer (reboot) la machine :

shutdown r now (r pour reboot)
init 6

On peut aussi utiliser la combinaison des touches <ctrl> <alt> <del> si elle est autorise.



SYSTMES DEXPLOITATION LINUX


12
3 - Utilisation du clavier

Touche ou combinaison de
touches
Symbole Signification
<enter> ou <return>

Valider une commande
Retour la ligne (ligne suivante)
<backspace> ou <ctrl><h>

^H
Efface le caractre avant le curseur
<ctrl> <C>
^C
Met fin lexcution dune commande
<ctrl><D>
^D
Fin de session
Fin de saisie de donnes dans un fichier
<ctrl><U>
^U
Efface toute la ligne courante
<ctrl><Z>
^Z
Suspend lexcution dune commande
(Pour reprendre lexcution il faut utiliser la commande fg)
<tab><tab>

Liste toutes les commandes UNIX
Compltation des noms de fichiers
<ctrl><A>
^A
Curseur en dbut de ligne courante
<ctrl><E>
^E
Curseur en fin de ligne courante


4 - Notion de terminaux virtuels

LINUX est un systme Multi-Utilisateurs, donc on peut faire plusieurs login en mme temps, sur diffrents
postes de travail.

Question : Comment faire pour mettre en uvre le Multi-Utilisateurs sur une seule station de travail ?

LINUX nous donne la possibilit davoir plusieurs consoles (mode texte) en mme temps, ce que lon
appelle les terminaux virtuels.

Par dfaut nous avons jusqu six (06) terminaux virtuels, plus un terminal pour le graphique (sous
X/window).

Pour passer dun terminal un autre nous utiliserons la combinaison des touches :

< alt > <Fx> (x= 1 6 ( F1, F2..F6))

le terminal principal <alt > <F1>

Si vous dmarrez un terminal graphique, il deviendra comme 7
me
terminal virtuel.

Le passage dun terminal graphique un terminal texte se fait par la combinaison des touches

< CTRL > < alt > < Fx >

Le retour a un terminal graphique se fait par : < alt > < F7 >

SYSTMES DEXPLOITATION LINUX


13

Utilisation pratique des terminaux virtuels :

Rservez toujours le 1
er
terminal pour le compte super-utilisateur (root) , comme poste de commande
(administrateur)

Le reste des terminaux peut tre utilis par des utilisateurs simples.

En cas de blocage, passez au 1
er
terminal (root) pour essayer de dbloquer la situation.

SYSTMES DEXPLOITATION LINUX


14
IV L'AIDE EN LIGNE

LINUX saccompagne dune multitude de programmes, de commandes, outils additionnels et dau moins
autant de documentation et de textes daide. Cette aide en ligne se rpartit comme suit :

- Les pages du man (Commande man) : Fait office de rfrence pour les commandes, les formats de
fichiers, et les appels systme.

- Documentation des packages : D'autres documentations sont disponibles dans les packages

- Les HOWTOs et FAQs : Informations issues du Projet de Documentation LINUX

- La commande locate : cette commande permet de trouver la documentation associe une
commande.

- Les pages `info' : documentation hypertexte

- Plusieurs sites Internet.

Remarque : Si vous cherchez des informations sur les diffrentes commandes et messages d'erreurs, utilisez
en priorit votre systme. Il existe plusieurs sources d'informations :

1 - Les pages du man

La plupart des commandes disponibles sur votre systme possdent une page de `man' associe.

Ces pages sont disponibles instantanment grce la commande man.

Exemple : Recherche des informations quand lutilisation de la commande ls.
La commande man suivie de ls (man ls) , vous affichera la page du man associe.

Cette page est visualise grce la commande less (programme daffichage page par page).

Quelques touches de la commande de pagination

q pour sortir
entre pour passer la ligne suivante
espace pour passer la page suivante
b pour remonter la page prcdente
/ suivi d'une chane de caractres et de la touche entre : pour rechercher
une chane dans la page man.
n pour poursuivre la recherche d'une chane
h aide en ligne (help)

Vous avez la possibilit dimprimer les pages man en utilisant la ligne de commandes suivante :

man <nom_de_commande> | lpr (pour le format ascii).

ou man -t <nom_de_commande> | lpr (pour le format ascii).
SYSTMES DEXPLOITATION LINUX


15

La documentation en ligne est divise en trois guides principaux :

- Guide de lutilisateur ( Users Guide )
- Guide de ladministrateur ( Administrators Guide )
- Guide du programmeur ( Programmers Guide )

Ces guides sont diviss en sections qui sont classes de la faon suivante :


Section Contenu
1 Commandes utilisateurs
8 Commandes dadministration du systme
2 Appels systme
3 Appels bibliothques (langage C, )
4 Priphriques (drivers)
5 Formats de fichiers (fichiers dadministration, )
6 Jeux
7 Divers (description de systmes de fichiers de LINUX, )
9 Noyau
n Commandes Tcl/Tk

Il se peut, que pour une seule commande plusieurs pages soient disponibles.

Une utilisation judicieuse de la commande man vous donnera la maximum dinformation sur le thme
recherch ( commande, structure de fichiers, ).

Les pages sont classes par ordre de recherche qui respecte lordre des sections ci-dessous.
(1,8,2, ).(Ordre qui peut tre modifi par lutilisateur dans le fichier de configuration /etc/man.config de
la commande man)

Exemple :

man swapon

affiche laide issue de la section 8 de swapon (utilise pour contrler le swap)
Si par contre on veut laide sur les appels systmes qui sont classs dans la section 2 on utilisera donc la
commande

man 2 swapon






SYSTMES DEXPLOITATION LINUX


16
La page affiche par la commande man a la prsentation suivante :

commande (section)

Name
commande : brve description

SYNOPSIS
Syntaxe de la commande

Description : description dtaille de la commande et de chaque option de la commande.

Files
Tous les fichiers associs la commande (configuration, donnes utilises par
la commande)

See Also
Tous les lments connexes la commande.

Diagnostics
tat des erreurs

Bugs
Donne quelques problmes qui peuvent rsulter de lexcution de la commande.

Author
Lauteur qui a dvelopp la commande


La commande man

Syntaxe

man [-options] [section] [ commande ou argument]

options :

-a affiche toutes les pages correspondants la commande spcifie.

-f affiche une ligne dexplication

-K argument donne toutes les pages qui contiennent largument spcifi (mot ou phrase)
(Attention : lexcution de la commande man avec cette option peut prendre beaucoup de temps )

-k argument donne la liste des descriptions restreintes qui contiennent largument.
(Attention : cela peut ne pas fonctionner, si la base de donnes na pas t cre au pralable.
Sous Red Hat la cration de la base se fait en excutant le programme /usr/bin/makewhatis

SYSTMES DEXPLOITATION LINUX


17
2 - Documentation des packages

La plupart des packages contiennent des fichiers README et des fichiers de documentation.

Le rpertoire de /usr/doc est utilis pour stocker laide sur les packages.

Pour chaque package il y un sous-rpertoire.

Exemple, la documentation du package tin (version 1.22, mise jour 2) sera stocke dans /usr/doc/tin-
1.22-2.

3 - Les HOWTOs et FAQs

Si vous avez choisi de les installer, la plupart des documentations issues du Projet de Documentation LINUX
sont disponibles sur votre systme dans le rpertoire /usr/doc.

Le rpertoire /usr/doc/HOWTO contient les versions ASCII de tous les HOWTOs actuellement disponibles.
Ces fichiers sont compresss avec l'utilitaire gzip, vous pouvez les consulter en utilisant la commande :

zless 3Dfx-HOWTO.gz

La commande zless utilise les mmes commandes que less, vous pouvez donc facilement naviguer dans le
HOWTO.

Le rpertoire /usr/doc/HOWTO/mini contient les versions ASCII de tous les mini-HOWTOs disponibles. Ils
ne sont pas compresss, utilisez more ou less pour les consulter.

4 -La commande locate

Vous pouvez utiliser la commande locate pour localiser une commande ou un fichier dont vous ne
connaissez pas le nom complet. Cette commande utilise une base de donnes pour localiser l'ensemble des
fichiers de votre systme. Lorsque la base est cre, vous pouvez alors utiliser la commande locate.

Si vous souhaitez connatre tous les fichiers contenant la chane `finger', utilisez la commande :
locate finger

5 - Les pages `info'

Les pages info sont des documents hypertextes qui facilitent la lecture (et l'criture) de documentations.
Vous trouverez un grand nombre de documentations info.
Pour visualiser ce type de document excutez la commande info (sans argument). La liste des
documentations disponibles sera affiche. Si cette liste est vide, vous n'avez sans doute pas install le
package contenant la documentation. Si vous tes un habitu d'emacs, utilisez Ctrl-h Ctrl-i pour activer le
browser info.
info utilise un systme hypertexte. Tout texte en surbrillance est un lien vers d'autres informations. La
touche Tab dplace le curseur sur le lien, et la touche Entre vous permet d'y accder. La touche p est utilise
pour retourner la page prcdente, n pour la page suivante, et u remonte d'un niveau dans la documentation.
Pour sortir, utilisez Ctrl-x Ctrl-c.
SYSTMES DEXPLOITATION LINUX


18
La meilleure faon d'apprendre utiliser info est de lire son fichier de documentation. Le premier cran
d'info devrait vous permettre de l'utiliser rapidement.


Remarque :

Les commandes suivantes sont quivalentes :

man f : whatis
man k : apropos

On peut aussi avoir laide au niveau dune commande en utilisant loption help .
Cette option permet dobtenir la syntaxe dune commande.
SYSTMES DEXPLOITATION LINUX


19
V - FICHIERS ET SYSTMES DE FICHIERS

1 - Dfinition dun fichier :

fichier ( file ) ={ informations logiquement lies en mmoire auxiliaire ( support magnetique ou laser , etc.)
}
Autres dfinitions
= { collection dinformations de mme nature }

= { suite doctets sur support magntique, laser ou autre. }

Le fichier est llment fondamental dun systme dexploitation.
Un fichier peut servir pour stocker :

- les instructions ncessaires au fonctionnement du systme
- la configuration du systme dexploitation
- les donns des utilisateurs
- les programmes
- etc.

2 - Structure des fichiers :

Il existe diffrentes organisations de fichiers. Nous citerons 3 organisations classiques.

suite doctets ( Unix /LINUX) (la fin dun fichier est indique par sa taille)
Suite denregistrements de taille fixe. (organisation squentielle ( taille fixe ))
ISAM (squentiel index (Sequential Indexed Access Method) accs par cl.
(utilisation dune table des indexes, les donnes sont de taille fixe en gnral)

3 - Schma thorique de reprsentation des fichier dans un espace disque :

















Fichier 01
Fichier 04
Fichier 05
Fichier 06
Fichier 03 Fichier 07
Fichier 02
SYSTMES DEXPLOITATION LINUX


20
Pour pouvoir accder un fichier, il faut le localiser sur disque. Donc il faut dfinir une organisation des
fichiers sur disque do lide de dfinir un Systme de Gestion des Fichiers ou un Systme de Fichiers.

4 - Systme de Gestion des Fichiers (SGF)

Un SGF dfinit la structure interne de larborescence, les formats denregistrements, le dcoupage des
disques, les donnes sur les fichiers et tous les outils de manipulation des fichiers.

SGF ={ Services de gestion (organisation des fichiers), Systme de fichiers (oprations) }

5 - Systme de Fichiers (File System) (FS)

Dfinition : Un systme de fichiers dun systme dexploitation est un ensemble de principes et de rgles
selon lesquels les fichiers sont organiss et manipuls.

Objectif : Rendre disponible tout moment les fichiers dun utilisateur, dans une transparence totale.

Chaque systme dexploitation possde son systme de fichiers privilgi, mme sil peut en utiliser
plusieurs.

Le tableau suivant en donne quelques-uns
Systme dexploitation Systme de fichiers
MS/DOS FAT 16 (File Allocation Table 16 bits)
Windows FAT 16
FAT 32
Windows NT NTFS (New technology F.S)
OS/2 HPFS (high performance F.S)
LINUX Ext2fs (Second extended F.S)
UNIX UFS,NFS, etc.

Limites dun systme de fichiers

Le tableau suivant en donne quelques-uns

Systme de fichiers Caractristiques
FAT 16 MS/DOS Adressage des blocs sur 16 bits, maximum de blocs 2
16
=65536 adresses
Unit dallocation le CLUSTER (2k,4k,8k,16k ou 32k).
Limite (2Go)
Partitionnement pour les disques de capacit suprieur 2Go

FAT 32 (Windows 95/98)

Adressage des blocs sur 32 bits, maximum de blocs 2
32
4 giga adresses
Unit dallocation le CLUSTER (4k,8k,16k ou 32k).
Limite (2 To)(teraoctets)
Partitionnement pour les disques de capacit suprieur 2 To

NTFS (Windows NT) Adressage des units dallocation sur 64 bits
Taille maximum dun fichier = 16 Go
Taille dune partition = 16 Eo (1 Eo = 10
18
octets)(exaoctets)
SYSTMES DEXPLOITATION LINUX


21
Ext2fs (LINUX) Unit dallocation cest le bloc = (512 , 1k, 2k, 4k, 8k)
Taille maximum pour un fichier = 2 103 676 blocs
Pour un bloc de 512 octets, taille maximum 1 Go

6 Organisation de lespace disque :

Un disque peut tre utiliser globalement ou partitionn.

Un disque = { une ou plusieurs partitions } (nous pouvons assimiler un disque partitionn comme etant
plusieurs disque logiques)

Une partition = { blocs physiques ou secteurs }

La taille du secteur dpend de la technologie du disque.

Secteur = Unit dchange dinformation entre le disque et la mmoire.

Bloc logique = Unit dallocation pour les fichiers (dpend du systme de fichiers).
( Cluster pour le systme dexploitation MS/DOS)

Autre dfinition dun fichier ={ blocs logiques ou clusters }

Remarque :

- Les blocs allous au fichier peuvent tre contigus ou non sur lespace disque.
- La taille des blocs (ou cluster ) varie dun systme de fichiers un autre, mais pour des raisons
pratiques cette taille doit tre fixe.
- Plusieurs problmes sont poss au systme de fichiers :
. La gestion de lespace libre
. La gestion des fichiers et des blocs allous.

7 - Mthodes de gestion des donnes sur disque :

Gestion des blocs libres

Lallocation et la libration de blocs on lieu dynamiquement chaque fois que la taille dun fichier varie.

Il existe deux mthodes diffrentes de gestion des blocs libres :

a/ La liste chane : Certains blocs libres sont utiliss pour contenir une liste de blocs libres,
plus un pointeur sur le bloc suivant . (MS/DOS, UNIX )

b/ Bit map : Cest un tableau de bits plac dans une zone rserve du disque. Chaque bit
reprsente letat dun bloc de donnes. Il suffit de basculer le bit pour marquer le bloc utilis ou
non . (mthode simple et rapide, intressante pour les disques de grande capacit). (UNIX)



SYSTMES DEXPLOITATION LINUX


22

Gestion de lespace occup par les fichiers :

Un fichier est un ensemble de blocs logiques (ou clusters), le systme de fichiers doit rendre disponible tout
moment les donnes de ce fichier son propritaire.

Plusieurs techniques existent pour grer lespace fichier , nous citeront trois techniques :

- FAT (File Allocation Table) pour MS/DOS, WINDOWS 9x.
Lentre dans le rpertoire de chaque fichier donne le numro du 1
er
bloc du fichier qui un index dans
la FAT qui lui mme pointe sur le bloc suivant et ainsi de suite.

- La table des inodes pour UNIX

- La MFT (Master File Table) (WINDOWS NT).

8 Systme de fichier UNIX :

Objet du systme de fichiers : tablir une correspondance entre un nom de fichier et les donnes places
sur disque. Cette opration doit tre transparente pour lutilisateur. Ladministration du systme de fichiers
ncessite en revanche de connatre les mcanismes internes de fonctionnement de faon configurer et
maintenir correctement le systme.

Lorganisation des fichiers constitue un des points cls de la structure du systme UNIX.

Un concept cl dUnix(LINUX)

Toute ressource matrielle ou logique(donnes) sous Unix (LINUX) est un fichier. ( Mmoire, souris, le
clavier, cran, disque, information sur le systme, etc.) . Tous les programmes du systme dexploitation
Unix (LINUX) utilisent des fichiers.

Ce concept permet une standardisation du systme Unix, tout en le rendant indpendant du matriel.
( do la facult dimplmentation sur plusieurs plate formes ).

Arborescence et Systme de fichiers

Sous UNIX/LINUX nous avons un systme de fichiers hirarchique (Arborescence). Vu de lutilisateur,
cest un arbre.

Un systme de fichiers se structure en rpertoires ( directories)










Rpertoire 2
Racine
Rpertoire 1 Rpertoire 3
F1
F2 F3 F4
2 1
F1
F2
SYSTMES DEXPLOITATION LINUX


23

Les utilisateurs voient une seule arborescence de fichiers.

Cette arborescence est en fait lunification de plusieurs arbres.



























Chaque arbre est stock sur un dique local du systme UNIX ou distant.

Principe :

Le systme de fichiers, vu par lutlisateur, est un arbre hierarchique unique ou sont placs tous les fichiers du
systme.

Le systme dexploitation UNIX doit tre capable de gerer plusieurs disques durs.

De mme chaque disque dur est ventuellement divis en partitions ( disques logiques).

Larbre hirarchique est en realit dcoup en portions qui correspondent aux partitions.

La gestion de chaque partition est faite par une structure appelle file system

Le file file system est lunit de base du systeme de fichiers de UNIX.

Il y a au moins un file system root dans tout systme UNIX.

Rpertoire 2
Racine
Rpertoire 1 Rpertoire 3
F1
F2 F3 F4
2 1
F1
F2
Rpertoire 3
F2
F4
Rpertoire 5
F10
F7
SYSTMES DEXPLOITATION LINUX


24

Notion de partitions :

Cest le partage du disque en plusieurs disques logiques.

1 partition = 1 file system .

Avantage du partitionement :

1 - La scurit de fonctionnement est ameliore quand on dispose de plusieurs systmes de fichiers. Si un
systme de fichiers est endommag, les dgts sont moindres.

2 - Les performances sont ameliors par la diminution du temps daccs aux fichiers. Le morcellement des
fichiers est rduit lespace de la partition o il est stock.

3 - Le partitionement permet le cloisonnement de lespace pour les utilisateurs ou les applications
( notions de quotas).

4 Intressant pour les sauvegardes physiques (taille de la partition = taille de la K7)

Le nombre de partitions depend de lutlisation du systme UNIX.

Exemple :

/ (root)
/usr
/home
/var
/tmp
/opt
/export

lutilisation des differents systmes de fichiers se fait par un mcanisme que lon appelle :

montage / dmontage (mount / unmount)

Les diffrents types de systmes de fichiers que lon peut utiliser sous LINUX.

reiserfs/ext3/ext2 les plus courant sous LINUX
minix premier format du systme LINUX
ISO9660 CD ROM
MS/DOS et VFAT DOS , WINDOWS. / Virtual file allocation table (WIN 9x).
Ncpfs NOVEL
NTFS NT
NFS (Network File systme) systme de fichiers travers le rseau (zone dchange)
proc Sert pour la gestion du systme (na pas doccupation disque)
smb Samba
swap mmoire supplmentaire sur disque ( swapping)
sysV Systeme V
SYSTMES DEXPLOITATION LINUX


25
ufs free BSD et solaris
9 - Organisation interne du systme de fichiers sous LINUX.

Lorganisation dun systme de fichiers UNIX est fonde sur une division de lespace en blocs de taille fixe
de 1024, 2048 octets ou plus.

Unit dallocation = bloc

Notion dinodes :

chaque fichier du systme de fichiers, UNIX associe un numro unique quon appelle inode.
Pour chaque fichier, UNIX conserve un certain nombre dinformations lui permettant didentifier le fichier et
localiser son contenu. Ces informations sont stockes dans une table nomme table des inodes.

Donc linode du fichier est une entre (index) dans la table des inodes.

Chaque entre de la table une taille de 128 octets (ou 64 pour certains systmes de fichiers)

Une entre inode contient les informations suivants :

1 - mode du fichier, type et protection.
2 - le nombre de liens.
3 - numro didentification du propritaire ( UID)
4 - numro didentification du groupe ( GID)
5 - nombre doctets du fichier ( taille)
6 - table daccs aux donnes du fichier ( 15 postes )
7 - date du dernier accs
8 - date de la derniere modification
9 date de cration.

Remarque : le nom du fichier ne figure pas dans lentre inode.

(la structure en langage C dune entre inode est dfinie dans le fichier: /usr/include/linux /ext2- fs.h )

Table daccs aux donnes :

Cest une table de 15 postes dfinis comme suit :

- les 12 premiers postes @ direct de blocs de donnes
- le 13
me
poste @ de bloc d@ de blocs de donnes ( 1
re
indirection)
- le 14
me
poste 2
me
indirection.
- le 15
me
poste 3
me
indirection.

SYSTMES DEXPLOITATION LINUX


26
Schma de principe daccs aux donnes dun fichier :

SYSTMES DEXPLOITATION LINUX


27



1
2
3
.
.
.
.
.
.
12

13





14
















15










Calcul du nombre de blocs quon peut attribuer un fichier :
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc @
128 @
Bloc @
128 @
Bloc @
128 @

Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc @
128 @
(1)
Bloc @
128 @
(128)
Bloc @
128 @
(1)
Bloc @
128 @
(128)
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc @
128 @
(1)
Bloc @
128 @
(128)
Bloc @
128 @
(1)
Bloc @
128 @
(128)
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
Bloc d.
SYSTMES DEXPLOITATION LINUX


28

12 + 128 + 128*128 + 128*128*128 = 2 113 676 blocs

Si taille de bloc = 512 octets taille du fichier = 1.082.202.112 octets
1024 octets taille du fichier = 2.164.404.224 octets
2048 octets taille du fichier = 4.328.808.448 octets

Structure interne dun systme de fichiers LINUX:




Bloc 0




Bloc 1




Blocs 2 n

Blocs n+1 m


bloc de dmarrage (boot block)

(uniquement pour la partition racine, libre pour les autres partitions)
super bloc

Contient des informations sur lorganisation du systme de fichiers (taille du
systme de fichiers, nombre de blocs libres, dbut de la liste des blocs libres,
nombre de inodes libres, dbut de la liste des inodes libres)
Table des inodes

Zones de travail

(Fichiers)


10 - Les Fichiers

Les types de fichiers :

Pour UNIX un fichier est une suite doctets sans aucune hypothse sur la structuration ou la nature des
informations stockes.

UNIX supporte six types de fichiers :

- Fichiers ordinaires : fichiers textes, programmes, sources de programmes, excutables, les donnes,
(data), fichiers binaires.

- Fichiers rpertoires : fichier particulier qui est une table de correspondance entre le nom du fichier
et le numro dinode.

- Fichiers spciaux : associs aux units priphriques (DRIVERS).

- Tubes de communication (pipes) : assurent la communication entre les processus.

- Liens symboliques : permettent daffecter plusieurs noms un fichier.

- Sockets : assurent la communication entre les processus travers un rseau.
Les fichiers rpertoires :
SYSTMES DEXPLOITATION LINUX


29

Le rpertoire est en ralit une table de correspondance entre le nom du fichier et son numro didentification
inode.

Un lment de la table rpertoire = ( numro inode, nom de fichier)

Le numro dinode est dfini sur soit 2 octets ou 4 octets
Le nom du fichier peut avoir 255 caractres. (14 pour certaines version dunix).

Chaque utilisateur possde un rpertoire de ses propres fichiers et peut crer des sous rpertoires.

Chaque rpertoire contient en outre deux entres particulires :

. : qui contient le nom du rpertoire courant
. . : qui contient le nom du rpertoire parent.

Accs aux donnes dun fichier:

Attribution des noms de fichiers :
En principe nous pouvons utiliser nimporte quel caractre de la table ASCII pour lattribution des noms de
fichiers, mais il est dconseill dutiliser les caractres suivant :

Espace Tabulation ? @ # $ & ( ) [ ] , ; = < > | *

Remarque : vitez tout caractre spcial.

vitez lutilisation du signe moins en dbut de nom de fichier.

Un fichier qui commence par un point est un fichier non visible (cach).

UNIX fait la diffrence entre majuscule et minuscule.

A partir du nom du fichier, il y a recherche dans la table rpertoire pour obtenir le numro dinode, qui
servira pour accder aux informations du fichier dans la table des inodes.

Nom du fichier Rpertoire Table des inodes Disque



fichier 1







Reprage dun fichier dans le systme de fichier :
Inode nom

SYSTMES DEXPLOITATION LINUX


30

Rappel : Une seule arborescence pour le systme dexploitation UNIX.

Donc lidentification dun fichier dans le systme de fichiers est donne par le chemin daccs.
Le chemin daccs (pathname en anglais) est un parcours dans larborescence pour arriver au fichier.
Sous UNIX, il existe deux manires pour accder un fichier :

- chemin daccs absolu :

Le chemin daccs absolu est la suite des rpertoires quil faut franchir en partant de la racine (
root) du systme de fichiers pour aboutir au fichier dsir.
Il est dit absolu car il dsigne explicitement le fichier choisi indpendamment de la position lon peut se
trouver un instant donn. Le chemin absolu commence toujours par le caractre / .

Exemples de dsignation dun fichier par le chemin absolu :
/user/dir1/dir2/fichier
/home/linux1/lettre.txt
- chemin daccs relatif :

Le chemin daccs relatif est la suite de noms de rpertoires quil faut franchir partir du rpertoire o
lon se trouve, qui est appel rpertoire courant, pour arriver au fichier dsir.
Le chemin relatif ne commence jamais par le caractre / .

Dans ces conditions, on peut avoir 3 types de chemins relatifs :
partir dun rpertoire courant implicite contenant le rpertoire dir1: dir1/dir2/fichier
Le chemin commence explicitement dans le rpertoire contenant dir1 : ./dir1/dir2/fichier
Le chemin commence dans le rpertoire parent du rpertoire o on se trouve : ../dir_free/fichier

Exemple darborescence :

















Nous voulons accder au fichier essai :
/
home bin root usr
LINUX1
p1.c
fic01 essai
prog
log
f.txt
f1.c
1
2
SYSTMES DEXPLOITATION LINUX


31

Chemin absolu : /home/LINUX1/essai

Chemin relatif partir de (1) : essai ou ./essai

Chemin relatif partir de (2) : ../home/LINUX1/essai

Remarque : Le caractre ~ utilis dans le chemin daccs reprsente le rpertoire de connexion.
Si le rpertoire de connexion est /home/LINUX1 nous pouvons crire ~/essai et cest un chemin absolu.

Accs un fichier :

Chaque fichier UNIX ( rpertoire, fichier ordinaire ou fichier spcial ) possde un mcanisme de protection
dfinissant les conditions daccs aux informations contenues dans le fichier . Les utilisateurs potentiels dun
fichier sont rpartis en trois classes :
- Le propritaire du fichier ( le crateur est automatiquement le propritaire mais il peut cder ses
droits un autre utilisateur ) .
- Les membres du groupe auquel appartient le propritaire (propritaire except) .
- Les autres utilisateurs du systme.

Le super-user a un accs sans restriction tout fichier et tout rpertoire . Aucune interdiction ne peut lui
tre oppose, except celles quil dfinit lui-mme.
Pour chaque classe d utilisateur, les possibilits daccs un fichier sont :
- la lecture
- lcriture
- lexcution

La combinaison des 3 types dutilisateurs avec les 3 types daccs aboutit un jeu de 9 permissions possibles
. Ces permissions sont fixes par dfaut grce la commande UMASK. Elles peuvent tre changes par le
propritaire ou le super-user laide la commande CHMOD.

Notion de modle de fichier :

De manire faciliter la manipulation des noms dans le systme de fichiers, et surtout pour faciliter les
recherches, il existe quelques symboles qui permettent de crer un modle, le Shell gnrant alors
automatiquement tous les noms correspondant ce modle.
* : ce caractre reprsente un nombre quelconque de caractres ( y compris labsence de caractres) .

[ c1,c2,cn] permet la substitution par c1 puis c2 puis cn du caractres correspondant cette position.
[ c1-c2] permet la substitution par tous les caractres de la table ASCII de c1 c2 inclus du caractre
correspondant cette position.
[ !c1-c2] permet la substitution par tous les caractres de la table ASCII en dehors de c1 c2 inclus du
caractre correspondant cette position (complment) .
? permet la substitution par tous les caractres possibles du caractre courant .
SYSTMES DEXPLOITATION LINUX


32
{arg1,arg2,,argn} : permet de faire une slection dans un ensemble
Ce mcanisme de substitution est appel recherche partir de modles ( en anglais pattern matching )
Exemples :
Supposons que notre rpertoire contienne les fichiers suivants :
chap1 , chap2 , chap1.1 , chap1.2 , chap1.3, chap.1 , chap2.2 , chap2.3

Pour imprimer les paragraphes 3 de chaque chapitre, nous pouvons utiliser la commande
Ipr chap1.3 chap2.3
Mais en utilisant la notion de modle on tapera :
Ipr chap?.3
Si maintenant nous voulons uniquement les paragraphes 1 et 3, nous pouvons demander :
lpr chap1.1 chap1.3 chap2.1 chap2.3 Ou bien Ipr chap?.[1,3]
Limpression de tous les fichiers se fera par : Ipr chap*
ls a* , ls *a , ls a*b , ls ?? , ls ??? , ls ???? , ls [a-e]* , ls a[xyz]* , ls [!a-z]* , ls [!ab]* , ls dl ?[!e]
ls f{ic,1,2}* ( ls fic* f1* f2*)

Ce mcanisme fonctionne avec toutes les commandes de recherches et de manipulation de fichiers ( attention
aux suppressions globales de fichiers !), ainsi que dans certains utilitaires tels les diteurs de texte .

10 - Schma darborescence de LINUX :

Il existe une certaine normalisation quant lorganisation des rpertoires sous LINUX.




















Contenu de chaque rpertoire

/ (racine)
boot
root mnt dev etc proc
bin home
opt lib
usr
sbin
tmp
bin lib X11R6
SYSTMES DEXPLOITATION LINUX


33
/boot
tous les fichiers utiles au dmarrage
/dev
tous les fichiers speciaux ( priphriques )
/etc
Administration et configuration du systme.
/bin
Principales commandes ncessaires lors du dmarrage, et lors de lexploitation.
/home
Comptes utilisateurs.
/lib
Fichiers bibliothques
/proc
Pseudo-rpertoire, contient des informations techniques utiles pour le systme
dexploitation en cours dexcution telles que :
- numros de processus en cours dexcution
- configuration matrielle
- etc.
/mnt
Point de montage ( CD ou floppy)
/usr
Usage multiple
/usr/bin
Commandes UNIX complmentaire.
/usr/lib
Bibliothques UNIX
/tmp
Fichiers temporaires
/var
Donnes utiles a lexploitation.
/var/spool
Organisation du travail des imprimantes, messagerie.
/sbin
Commandes UNIX
/opt
contient les logiciels et les applications spcifiques

Quelques fichiers particuliers ( certains sensibles)


/etc/password
/etc/shadow
/etc/group
Fichiers pour la gestion des comptes utilisateurs
Identification des utilisateurs
Mots de passe des utilisateurs
Groupes dutilisateurs

( supprimez lun de ces fichiers votre systme sera bloqu)
/etc/inittab
Sert dterminer le mode du dmarrage du systme.
(Fichier lu par le processus init (PID=1) )
/etc/fstab
/etc/vfstab
Fichiers qui servent pour le montage automatique des systmes de
fichiers.
/etc/X11/XF86config
Fichier de configuration de linterface graphique.
vmlinuz
Le fichier le plus important de tous.
Se situe soit sous la racine, soit sous /boot ( cest le noyau LINUX)

Les attributs des fichiers :

La commande ls -l nous donne un certain nombre dattributs du fichier.

Exemple : ls l /etc/passwd




-
r w-

r - - r - - 1 root
root
root
root
1250
root
Sept 15 15:00 /etc/passwd
SYSTMES DEXPLOITATION LINUX


34










Types de fichier

- fichier ordinaire
d fichier rpertoire
c fichier spcial mode caractre
b fichier spcial mode bloc
l lien symbolique
p tubes (pipes)
s sockets

Droits daccs

- propritaire
- groupe
- autres (public)

Types daccs

r : lecture (read)
w : criture (write)
x : excution

11 - Syntaxe dune ligne de commande :

$commande [options] [arguments ]

commande nom du programme excuter
options comment doit sexcuter ce programme
arguments fichiers en entre ou en sortie ( en gnral)

Remarque :

- Toutes les options commencent par le signe (-) ( moins) ( exception pour la commande tar)
- Pour les noms de fichiers on peut utiliser les modles de fichiers.

Exemples :

ls l
ls l a*
ls
ls /
cp fichier1 fichier2

12 Les commandes de gestion de rpertoires :

ls , cd , mkdir , rmdir , cp , mv , rm , pwd , file.


La commande ls :

Nombres
de liens
Propritaire
(owner)
Groupe
Taille du fichier
en octets
Date et heure dernire
modification
Nom du
fichier
SYSTMES DEXPLOITATION LINUX


35
Syntaxe : ls -labdRpsS arguments (fichiers ou modle de fichiers)

Options :

-l : affiche les attributs de fichiers.
-a : donne la liste de tous les fichiers y compris les fichiers non visibles ( cachs).
-b : affiche les caractres non imprimables.
-d : liste des rpertoires et non leur contenu.
-R : liste rcursive de toute larborescence rattache largument spcifi.
-p : distingue les rpertoires( pour affichage sans couleur).
-s : affiche le nombre de blocs pour chaque fichier.
-S : tri selon la taille par ordre dcroissant.
-h : donne la taille soit en K (kilo octets) ou en M (mga octets)

Exemples :

ls -lap ls -l a* ls [!a-z]
ls -ls ls -d ~ ls ??
ls -a ls -l ../home ls *a

La commande mkdir : Cration de rpertoires

Syntaxe : mkdir [ options ] rpertoires

Options

-p : crer larborescence spcifie si ncessaire.
-m : permet de positionner le mode daccs ( permissions daccs)

Exemples :

mkdir rep01
mkdir -m 700 rep02
mkdir rep01/srep01

Soit larborescence :









On peut la crer avec la ligne de commande suivant :

mkdir p new-rep/srep01 new-rep/srep02 bis-rep/srep01
La commande cd: Changement de rpertoire (Change directory)

linux1
new-rep bis-rep
srep01 srep02
srep01
SYSTMES DEXPLOITATION LINUX


36
Syntaxe : cd [ rpertoire ]

Le nom du rpertoire peut tre dans sa reprsentation absolue ou relative.

La commande cd permet de se positionner dans un rpertoire spcifi. Utilise sans argument , il y a retour
au rpertoire de connexion.

Exemple :

cd /home/linux1/rep01
cd ou cd ~
cd ..

La commande rmdir : Suppression de rpertoires

Syntaxe : rmdir [ options ] rpertoires

Remarque : il faut que les rpertoires soient vides.

Options :

-p : suppression darborescence
Exemples :

rmdir rep01
rmdir -p rep02

La commande cp: Permet de copier un ensemble de fichiers dun rpertoire vers un autre rpertoire.

Syntaxe : 1) cp [ -ifr ] f1 f2 fn rpertoire


ou modle de fichiers

2) cp [ -ifr ] rpertoire rpertoire

Options :

-i : forme interrogative de copie, dans le cas ou les fichiers destination existent.
-f : force la suppression des fichiers destination existants ( options par dfaut)
-r : copie une arborescence. (duplication de larborescence source sous le rpertoire
destination)

Exemples :

cp /etc/passwd /etc/group .
cp /etc/passwd /etc/group ~
cp -r rep1 rep2
La commande mv: Dplacement de fichiers dun rpertoire vers un autre.

SYSTMES DEXPLOITATION LINUX


37
Syntaxe : mv [ -options ] fichier(s) rpertoire

Options :

-i : confirmation de lopration, dans le cas ou les fichiers destination existent.
-f : force le dplacement, mme si les fichiers cible existent.
-b : cration de backup pour les fichiers cible existant.

Deux cas se prsentent:

1) fichiers rpertoire

remarque : Il faut que le rpertoire destination existe ( sinon cest un changement de nom)

a) Les mme noms que les fichiers source nexistent pas dans le rpertoire donn en argument. Dans ce
cas il y a dplacement des fichiers.

b) Les noms existent, dans ce cas il y a crasement des fichiers existant.

remarque : on peut utiliser loption de confirmation ( -i ) ou loption backup ( -b ).

Exemples :

mv f1 rep01
mv -i f_existe rep02 (confirmation de lcrasement)
mv b fexiste rep02 (cration dun backup avec le suffixe ~ , loption S permet de dfinir son
propre suffixe)

2) rpertoire rpertoire

Le rpertoire source et le rpertoire cible doivent exister.

mv rep01 rep02

a) rep01 nexiste pas sous rep02, dans ce cas cest un dplacement de rep01 sous rep02.
b) rep01 existe sous rep02, il y a avertissement du systme.

Exemples :

mv bS.bak f1 f2 ( f2 devient f2.bak, et f1 devient f2)

La commande rm applique aux rpertoires:

rm -r : Supprime une arborescence ( effacement de toute larborescence y compris les fichiers) ( utiliser
avec prcaution), on peut utiliser la forme interrogative.

La commande pwd : affichage du rpertoire courant sous sa forme absolu.

La commande file : Identifie les types de fichiers.

SYSTMES DEXPLOITATION LINUX


38
Syntaxe : file [ -options ] fichiers (ou modle de fichiers)

Options :

-f liste : les fichiers identifier le type sont dans le fichier liste.
-l : suit les liens symboliques
-s : pour le super-user (root) donne le type de partitions.

Exemples :

file * (tous les fichiers du rpertoire courant)
file a*
file -s /dev/hda1
file -s /dev/hda2

13 Les commandes de gestion de fichiers :

ls , file, cat , touch, cp , more, less, mv , rm , stat

La commande touch :

A deux utilisations :

- Cration de fichiers vides.
- Modification des attributs date pour des fichiers existants.


Syntaxe : touch [ -options ] [[[CC]YY]MMDDHHmm[.ss]] fichiers (ou modle de fichiers)

CC : sicle-1
YY : anne
MMDDHHmm : Mois Jour Heure Minutes
ss : Secondes

Options :

-a : date dernier accs au fichier
-m : date dernire modification du fichier
-c : date de cration du fichier

1) Cration de nouveau fichiers (vides)

a) touch fichier1 fichier2 fichiern

Le systme cre ces fichiers avec comme dates ( cration , accs , mise jour) la date du systme.

b) touch 10102000 fichier(s)

Dans ce cas lutilisateur donne comme date : 10 octobre 20h00.

SYSTMES DEXPLOITATION LINUX


39
Attention : si la date est incomplte , le systme la considre comme un nom de fichier.

2) Fichiers existent dj : il y a modification des attributs date des fichiers.

Exemples :

touch -d "sun dec 17 16:02:19" fiction
touch -t 12151010 fichier
touch fichier ( date du systme)

On peut utiliser un fichier de rfrence

touch -ficref fichier(s) dans ce cas le ou les fichiers prendront les date de fref.

La commande cp : Copie de fichiers

Syntaxe : cp [-options] fichier1 fichier2

Copie de fichier1 dans fichier2

Options :

-i : forme interrogative, utile pour les fichiers existants
-f : si le fichier cible existe, il sera cras.
-b : cration dun backup.
-u : pas de copie si le fichier cible a une date de cration identique ou postrieure.

Exemples:

cp f1 f2
cp -b f1 f3 si f3 existe il deviendra f3~ avant la copie.

La commande rm : Suppression de fichiers.

Syntaxe : rm [ -options ] fichier(s)

Options :

-i : forme interrogative, utile pour les fichiers sensibles
-f : force la suppression pour les fichiers protgs en criture
-r : rcursive (pour les rpertoires)
-- : signale la fin des options. Utile pour les fichiers dont les noms commencent par ( - ).

Remarque importante : attention quand vous utilisez les metacaractres ne faites jamais rm *

Exemples :

rm -i a*
rm -f [a-e] *
rm -- -f1
SYSTMES DEXPLOITATION LINUX


40

La commande mv: Renommer un fichier ou dplacements de fichiers.

Deux fonctions :

- renommer un fichier
- dplacer des fichiers

Syntaxe : mv [ -options ] fichiers ou rpertoire.

Options :

-i : forme interrogative, utile pour les fichiers sensibles
-f : force le dplacement, mme si le fichier cible existe et protgs en criture
-b : cration de backup avant dplacement du fichier cible.

1) Fichier cible existe.

mv fsource fdestination : changement de nom , fsource devient fdestination.
mv -i fsource fdestination : confirmation avant changement.
mv -b fsource fdestination : copie de sauvegarde avant changement.
( copie de sauvegarde de fdestination, fsource aura pour nom fdestination)

Remarque : on peut combiner les options i et b

2) Fichier cible nexiste pas :

mv fsource fdestination (simple changement de nom) ( les options -i et -b nont pas deffet)

3) Fichier source est un rpertoire, fichier cible est un fichier ordinaire :

a) mv rep01 fdestination fdestination () , le systme peut donnee une erreur.

Remarque : On peut forcer ce changement en utilisant loption f
mv -f rep01 fdestination
Si on utilise loption b pas de message derreur ( cration de backup)

b) mv rep01 fdestination fdestination ( ) : cest un simple changement de nom.

La commande cat : Donne le contenu dun fichier sur cran ( de prfrence un fichiers texte)

Syntaxe : cat [ -options ] fichier(s) ou modle de fichiers

Options :

-n : donne une numrotation des lignes
-e : affiche le signe $ la fin de chaque ligne
-v : utiliser avec les options e et t (visualisation)
-t : affiche la place des tabulations ^I , les caractres non imprimable avec ^ lettre
SYSTMES DEXPLOITATION LINUX


41

Exemples :

cat /etc/passwd
cat -evt /bin/ls

Autre utilisation de la commande cat : cration de petits fichiers

cat > fichier
bonjour
merci
blanc
rouge
^D (ctrl D pour arrter la saisie)

cat > fichier << stop
bonjour
merci
blanc
rouge
stop (arrte la saisie)


La commande stat : Donne quelques caractristiques sur les fichiers

Syntaxe : stat fichier(s) ou modle de fichiers .

Exemple : stat fichier(s).
La commande more : Cette commande permet de visualiser page par page, un ou plusieurs
fichiers ou donne a l'cran.

Syntaxe : more [-options] [fichier(s)]

Options :

-num : spcifie le nombre de lignes par page
-d : affiche un message en bas de page pour continuer , arrter ou help.
-c : effacement complet de l'cran avant de passer la page cran suivante.
-s : plusieurs espaces en fin de fichier sont runis en un seul espace.
-w : fin de la commande more la fin du fichier
+num : la sortie des donnes doit commencer la ligne indique
+/critre : avant l'affichage, la commande more cherche d'abord
l'occurrence du critre de recherche dfini.

Exemple : more fichier (s)
..
..
..

(x%) ce niveau pour obtenir un help dutilisation de more en introduisant ? ou h
ou lune des touches suivantes :

barre d'espace affiche la page suivante
entre la ligne suivante est affiche
D ou ^D affiche les 11 prochaines lignes
f saute une page cran et passe a la suivante
SYSTMES DEXPLOITATION LINUX


42
b ou ^b page cran prcdente
q ou Q fin de la commande more
= affiche le numro de la ligne active
v dite les donnes avec vi
h affiche la liste des commandes disponibles (help)
/texte recherche le texte en question dans les donnes
' saute l'emplacement d'ou a t lance la dernire recherche
z affiche la page suivante
s saute une ligne cran et passe a la suivante
n recherche le dernier texte recherche
!commande excution de la commande spcifie dans un shell spar
^L redessine l'cran
:n permet de sauter dans le fichier suivant
:f affiche le nom et le nombre de lignes du fichier courant
:p permet de sauter dans le fichier suivant
. rpte la commande prcdemment tape

La commande less : Affiche le contenu de fichiers lcran avec possibilit de pagination (PgUp,PgDn).

Syntaxe : less [-options] [fichier(s)]


Options :

-h : mme valeur que l'instruction h, elle donne l'aide relative la commande less.
-f : force l'ouverture d'un fichier
-c , C : rafrachir l'cran
-e , E : cette option permet de quitter less lorsque l'on arrive la fin du fichier
-V : afficher le numro de version de less
-z [N] : dfinir la taille de la fentre

Les instructions de la commande less :

h Aide sur les instructions de less.
Espace, ^v, f
ou ^f
Descend l'cran de N lignes. Par dfaut d'une fentre cran
Entre, ^N, e ,
^E , j ou ^J
Descend l'cran de une ligne
d ou ^D Descend l'cran de N lignes. Par dfaut, c'est d'un demi cran
u ou ^U Remonte l'cran de N lignes. Par dfaut, c'est d'un demi cran
b ou ^B ou
ESC-v
Remonte l'cran de N lignes. Par dfaut, c'est une fentre cran
y ou ^Y ou ^P
ou k ou ^K
Remonte l'cran de N lignes. Par dfaut, c'est de une ligne
r ou ^R ou ^L Rafrachir l'cran
q ou Q ou :q
ou :Q ou ZZ
Quitte la commande less
g ou < ou ESC-
<
Va a la ligne N dans le fichier. Par dfaut, a la premire ligne
SYSTMES DEXPLOITATION LINUX


43
G ou > ou
ESC->
Va a la ligne N dans le fichier. Par dfaut, la dernire ligne.
p ou % Va a la position N pourcent dans le fichier
:n Examine le prochain fichier.( il faut que les fichiers soient spcifies dans la ligne de
commande).
:p Examine le prcdent fichier.( il faut que les fichiers soient spcifies dans la ligne de
commande).
:x Examine le premier fichier de la liste.( il faut que les fichiers soient spcifies dans la
ligne de commande).
:e[nom_fichier] Examine un nouveau fichier
= ou ^G ou :f imprime les informations du fichiers que vous tes en train de regarder. ( imprime le
nom, le nombre de ligne, la taille,...)
V imprime le numro de version de less qui est lance
/texte Recherche en descendant dans le fichier le nombre de ligne qui contient l'occurrence
texte
?texte Mme chose que prcdemment, mais en remontant le fichier
13 Le concept de liens :

un fichier UNIX lui attribut un numro unique quon appelle inode.

Un chemin daccs de larborescence correspond un fichier et un seul. Inversement un fichier correspond
un chemin dacces unique ( en gnral ). Cependant, il est possible de definir plusieurs chemins dacces
logiques qui pointent vers le mme fichier physique.

On dit alors que le fichier a plusieurs liens.

Sous Unix, il existe deux types de `liens' entre fichiers, que l'on nomme gnralement liens matriels (ou
physiques) (hard link) et liens symboliques (ou logiques)(symlink).

Les liens symboliques ont t introduits pour pallier la limitation des liens matriels.

Les liens matriels :

Un lien matriel est simplement une manire de nommer un fichier. Un fichier peut avoir plusieurs noms.
Un fichier n'est effac rellement que lorsque son dernier nom est supprim. Le nombre de noms d'un
fichier est indiqu par la commande ls l. Il n'y a pas de notion de nom `original' , tous les noms d'un fichier
ont exactement la mme importance. Tous les liens matriels d'un fichier se trouvent gnralement dans
le mme systme de fichiers contenant les donnes du fichier.

Les liens matriels ne sont pas autoriss pour les rpertoires et entre deux systmes de fichiers.

Il faut effacer tous les liens matriels dun fichier pour le supprimer physiquement du disque.

Les liens symboliques :

Un lien symbolique est en fait d'un petit fichier spcial, qui contient un chemin d'accs. Ainsi un lien
symbolique peut pointer vers un systme de fichier diffrent de celui qui l'accueille. Il peut galement
pointer, grce NFS, vers un systme de fichiers appartenant une autre machine. Enfin, un lien symbolique
ne pointe pas ncessairement vers un fichier existant.
SYSTMES DEXPLOITATION LINUX


44

En supprimant un lien symbolique, on ne supprime pas le fichier rfrenc, en ralit on ne casse que le lien.

Pour mettre en uvre cette notion on utilise la commande ln.

ln cre des liens entre fichiers. Par dfaut il s'agit de liens matriels. Si l'on utilise l'option -s, les liens
seront symboliques (logiques).

Syntaxe :

1) ln [options] source [dest]
2) ln [options] source
1
...source
n
rpertoire

Si on n'indique que la source, un lien vers ce fichier est cr dans le rpertoire courant. Le nom de ce lien
sera le mme que celui du fichier vis. La source ne doit pas exister dans le rpertoire courant.
Si on indique que deux noms de fichiers, un lien sera cr avec le nom dest pointant vers le fichier
source. (Le nom dest ne doit pas exister).

Si le dernier argument indique un rpertoire existant, ln crera des liens sur chacun des fichiers source
indiqus dans ce rpertoire. Les noms seront gaux ceux des fichiers source viss.

Il est interdit d'indiquer plus de deux arguments si le dernier nom n'est pas un rpertoire. Par dfaut, ln ne
supprime pas les fichiers ni les liens symboliques existants (ln donne une erreur si dest existe dj).
On peut toutefois forcer l'crasement avec l'option -f.

Avec les implmentations actuelles, seul le Super-User peut crer un lien matriel sur un rpertoire, et
encore, c'est souvent totalement impossible. POSIX interdit ln de crer des liens physiques sur un
rpertoire (mais n'interdit pas les liens matriels entre diffrents systmes de fichiers).

Options :

-f : forcer l'crasement du fichier destination s'il existe.
-d, -F, --directory : autoriser le Super-User crer un lien matriel sur un rpertoire.
-i, --interactive : demande la confirmation avant de supprimer les fichiers destination.
-n, --no-dereference : Lorsque la destination est un rpertoire rel (et non pas un lien symbolique sur
un rpertoire), il n'y a pas d'ambigut. Le lien est cr dans ce rpertoire. Mais lorsque la destination
est un lien symbolique vers un rpertoire, il y a deux possibilits pour traiter la demande. 1) ln
peut considrer la destination comme un rpertoire normal, et crer le lien dans celui-ci. 2) la
destination peut galement tre considre comme le lien symbolique lui-mme crer. Dans ce cas,
ln doit dtruire, ou archiver, le lien existant avant de crer le nouveau lien. Le comportement par
dfaut est de considrer la destination comme un rpertoire part entire.
-s, --symbolic : Crer des liens symboliques la place des liens physiques. Cette option produit
souvent des messages d'erreurs sur les systmes qui ne supportent pas les liens symboliques.
-v, --verbose : afficher le nom de chaque fichier avant de le lier.
-b, --backup : Crer une copie de sauvegarde des fichiers craser ou dtruire.
-S SUFFIXE, --suffix=SUFFIXE : Ajoute le SUFFIXE indiqu chaque fichier de
sauvegarde cr. Si cette option n'est pas indique, on utilisera la valeur de la variable
d'environnement SIMPLE_BACKUP_SUFFIX. Si la variable SIMPLE_BACKUP_SUFFIX
n'existe pas, la valeur
par dfaut est `~'.
SYSTMES DEXPLOITATION LINUX


45
--help : Affiche un message d'aide sur la sortie standard, et termine correctement.

Exemples:

ln -b f1 f1-lien ( si f1-lien existe , ln le sauve dans f1-lien~)
cp /etc/passwd .
ln passwd passwd-l1
ln passwd passwd-l2
rm passwd
ln passwd-l1 passwd


Utilisation pratique des liens :

1) Lorsque le chemin daccs un fichier est trop long on cr un lien pour faciliter lcriture.
2) donner des noms explisites a un fichier

Exemples :

La disquette sous LINUX est rfrence par /dev/fd0
Je peux au niveau de mon repertoire de connexion ou courant crer un lien pour faciliter son criture :
ln /dev/fd0 diskette.

3) Protger certains fichiers sensibles contre toutes destructions.
( en gnral les liens sont cres dans un autre rpertoire : ln * rep-like )

4)Pour les liens symboliques sont intressant dans le cas de dplacement de rpertoires. (cas dans
certaines applications ou packages)

14 La gestion des droits daccs aux fichiers :

Le systme dexploitation UNIX/LINUX est un systme Multi-Utilisateurs o laccs aux fichiers est
conditionn par un jeu de permissions spcifiques au fichier.

Notion dutilisateurs et de groupes

Chaque utilisateur est dsign de manire unique par son login (ou numro de compte). De plus, chaque
utilisateur appartient un ou plusieurs groupes.

Les droits d'accs un fichier :
Un fichier ou un rpertoire appartient toujours un utilisateur et un groupe. D'autre part, un fichier peut
tre accessible en lecture, en criture et en excution. Les permissions sont distinctes pour l'utilisateur
propritaire du fichier, pour le groupe propritaire et pour le reste du monde
Sous UNIX/LINUX, tout utilisateur possde un numro identificateur (UID) (associ un nom) et appartient
un groupe identifi galement par un numro (GID) (associ un nom). Ainsi, pour un fichier donn, les
utilisateurs du systme peuvent tre classs en trois catgories :
SYSTMES DEXPLOITATION LINUX


46
Le propritaire du fichier. (Owner) (u)
Les membres du groupe propritaire du fichier. (Group) (g)
Les autres utilisateurs. (Other). (o)
Les accs possibles un fichier peuvent tre classs en trois catgories :
La lecture. (r)
L'criture. (w)
L'excution. (x)
Le tableau suivant donne une signification des droits daccs appliqus aux diffrents types de fichiers.
Type de fichier Lecture criture Excution
Fichier ordinaire Consultation du
contenu.
Modification,
rcriture,
suppression

Cration dun
processus dont le
code est le contenu
du fichier
Fichier rpertoire Contenu du
rpertoire (ls ou dir)
Possibilit de crer,
dplacer ou de
supprimer des
fichiers (cp, mv, rm)
doit tre associe au
droit dexcution
Accs au rpertoire

Il est possible d'interdire ou d'autoriser chacun des trois types d'accs pour chacune des trois catgories
d'utilisateurs.
Les droits daccs un fichier dmarrent la racine.
Exemple : /home/linux1/rep01/fichier01
Par ailleurs, il existe un utilisateur privilgi (root) qui a tous les droits d'accs aux fichiers.

Remarque : Le propritaire est au mme titre que le groupe ou les autres, si un droit est supprim, il na
aucun privilge sur son fichier ( ex : lecture : il ne pourra pas lire son fichier).

Les commandes ( ls -l) et (stat) permettent dafficher les droits daccs un fichier.

- rwx rwx rwx 1 owner group 100 Sep21 10:00 mon_fichier

En gnral, la mise en place de ces protections est ralise grce 9 bits (3 triplets, chaque triplet
reprsentant les trois types d'accs (r,w,x) pour une des trois catgories d'utilisateurs (u,g,o) ) contenus dans
chaque inode dun fichier.

En ralit, chaque inode contient trois bits supplmentaires assurant des protections spciales quon appelle
droits lors de lexcution ou droits dendossement :

Le set-uid bit (SUID) pour un fichier binaire excutable, indique que le processus correspondant
une excution du programme se verra attribu comme, numro d'utilisateur, le numro identificateur
du propritaire du fichier. Les droits d'accs du processus sont donc les mmes que ceux de
SYSTMES DEXPLOITATION LINUX


47
l'utilisateur qui a cr le fichier. Cette faon de procder permet tous les utilisateurs de modifier un
fichier de donnes durant lexcution du programme.
Lexemple type est la commande passwd qui durant son excution permet lutilisateur qui la
lance de modifier son mot de passe dans le fichier des mots de passe qui est protg en criture et
qui appartient root.
Attention, utiliser le positionnement de ce bit avec beaucoup de prcautions, il peut en effet
donner beaucoup de privilges l'utilisateur excutant le programme.
Le set-gid bit ( SGID) qui joue le mme rle que le set-uid bit mais pour l'identificateur de groupe.
Tout utilisateur excutant un fichier binaire dont le set-gid bit est positionn se verra attribuer les
privilges qui incombent au groupe propritaire du fichier. A utiliser galement avec beaucoup de
prcautions.
Le sticky bit qui assure le maintient d'un programme excutable dans la zone de mmoire pagine,
mme lorsque aucun processus actif ne correspond une excution de ce programme.

Remarque sur la reprsentation symbolique des droits daccs :

1) Droits simples : rwx rwx rwx
2) Droits combins : rws (SUID) rws (SGID) rwt (Sticky) (Droit dexcution autorise)
rwS rwS rwT (Droit dexcution non autorise)
Mot descripteur du mode dun fichier.
SUID SGID Sticky R W X R W X R W X
Propritaire Groupe Public
Codage numrique des droits daccs : (Numrotation Octale)
SUID SGID Sticky R W X R W X R W X
4 2 1 4 2 1 4 2 1 4 2 1
0 7 0 7 0 7 0 7

On peut voir cette valeur avec la commande stat.

Exemple : pour le fichier /etc/passwd nous avons la valeur octale : 0644 ( rw-r--r--)

Permissions par dfaut :

Unix fixe par dfaut les droits daccs un fichier 666 (-rw-rw-rw-) et un rpertoire 777 (-
rwxrwxrwx) (ou 775 pour certaines version dUNIX) lors de la cration.

On peut restreindre ces permissions lors de la cration de fichiers, cest le rle de la commande umask.

La commande umask : met en place la valeur de la variable umask qui sert de filtre pour fixer la valeur
attribuer aux permissions daccs des nouveaux fichiers.

Syntaxe : umask [filtre]

SYSTMES DEXPLOITATION LINUX


48
Le filtre est une valeur octale, qui sert comme deuxime oprande une opration logique ( qui ressemble
une soustraction) dont le premier oprande est la valeur par dfaut attribuer par UNIX.

Si ce filtre est omis la commande umask donne la valeur courante de la variable umask.

umask s : Affiche les permissions correspondantes au masque, sous forme symbolique.

Attention ! : Le changement ne s'applique qu' la prsente session et na deffet que sur les nouveaux
fichiers. Pour la rendre permanente, on peut intervenir soit sur le fichier ~/bash_profile pour un utilisateur
ou sur le fichier /etc/profile pour tous les utilisateurs.

La valeur par dfaut est de 022 pour lutilisateur root et de 002 pour les autres, mais chaque administrateur
systme peut la positionner en fonction des besoins.

Exemple de calcul de permissions effectives, affectes lors de la cration de fichiers

Type de fichier Permissions UNIX Valeur umask
(filtre de
protection)
Permissions attribues
Fichier ordinaire
(ou fichier spcial)
666 ( rw- rw- rw-) 022 644 ( rw- r-- r--)
002 664 ( rw- rw- r--)
Fichier rpertoire 777 ( rwx rwx rwx )


022 755 ( rwx r-x r-x )
002 775 ( rwx rwx r-x )

Exemples : (pour les fichiers ordinaires)

Valeur umask Permissions accordes
001 666
002 664
003 664
004 662
005 662
006 660
007 660
010 660

Changement des droits :

De faon gnrale, l'utilisateur qui cre un fichier en devient le propritaire, et le groupe auquel l'utilisateur
appartient (au moment de la cration) devient le groupe du fichier.

Remarques pralables

Les droits accords au propritaire, au groupe et aux autres dpendent du processus qui a cr le
fichier et du masque des droits.
SYSTMES DEXPLOITATION LINUX


49
D'autre part l'administrateur (root) peut tre amen effectuer des changements de proprit (par
exemple pour permettre un travail en groupe) et des changements de droits sur des ensembles de
fichiers et de rpertoires, les tendre ou les restreindre.
Le super user root n'est pas soumis ces restrictions, il a le pouvoir absolu sur le systme de fichiers.
En contre-partie, il peut tre considr comme responsable de tout dysfonctionnement !

CHANGER LES PERMISSIONS SUR LES FICHIERS
Les droits d'accs peuvent tre modifis par le propritaire des fichiers ou par root .
La commande chmod permet de modifier les permissions daccs aux fichiers.

Syntaxe :

chmod [-R] mode fichier(s) (ou modle de fichiers)

Deux modes pour changer les permissions :

1) mode symbolique :

chmod [ qui ][ oprateur ][ quoi ] fichier(s) (ou modle de fichiers)

qui oprateur quoi
u : user
g : groupe
o : other
a : all (u,g,o)
+ : ajout
- : retrait
= : affectation
r : lecture
w : criture
x : excution ou accs
s : SUID ou SGID
t : sticky bit
Exemples:

chmod u+x fichier : ajouter le droit d'excution au propritaire du fichier
chmod ug+w fichier : ajouter le droit d'excution au propritaire et au groupe
chmod go-rwx fichier : enlever tous droits d'accs tous les utilisateurs, sauf au propritaire

Option R (rcursif)

Permet de modifier les permissions daccs toute une arborescence.

Exemple :

chmod -R go-rwx /home/linux1 : enlve toutes les permissions d'accs des fichiers de larborescence
linux1 tous sauf au propritaire

Affectation des permissions daccs :

Pour chaque groupe, elle permet de fixer les nouveaux droits qui remplacent les anciens. Si une catgorie
n'est pas prsente, ses anciens droits sont conservs.

Exemples:

SYSTMES DEXPLOITATION LINUX


50
chmod u=rwx,g=rw,o=r fichiers : fixe les permissions prcdentes des fichiers, en les fixant
-rwxrw-r

chmod u=rwx,g=r fichiers : fixe les permissions -rwxr--??? en ne changeant pas les permissions
prcdentes du groupe other

chmod u=rwx,g=r,o= fichiers : fixe les permissions -rwxr-----

2) mode octal :

Cest laffectation des permissions daccs aux fichiers sous forme octale.

chmod 0xxx fichier(s) (ou modle de fichiers)
(valeur octale)
Pour chaque groupe, elle permet de fixer les nouveaux droits qui remplacent les anciens. Aucune
conservation des anciens droits.

Exemples:

chmod 700 /home/linux1 : fixe les permissions rwx --- ---

chmod 777 /home/linux1/fic01 : fixe les permissions rwx rwx rwx (tout est permit pour tout le
monde)

Les 2 commandes suivantes sont quivalentes :

chmod 764 test et chmod u=rwx,g=rw,o=r test

Les droits tendus ( ou droit dendossement)

Le droit SUID (Set User ID)

La prsence de ce droit permet un fichier excutable binaire de s'excuter sous l'identit et les droits de
son propritaire, la place des droits de l'utilisateur qui excute ce fichier. Il s'agit d'un dispositif de
scurit essentiel qui autorise un utilisateur quelconque de bnficier de droits plus tendus que les siens
(souvent ceux de root), pour excuter la commande agir sur d'autres fichiers indispensables, juste le temps et
sous le contrle de l'excution de la commande, SANS qu'il soit ncessaire d'attribuer ces droits en
permanence sur les fichiers.

Exemple significatif

Examinons les droits du fichier excutable /usr/bin/passwd, qui permet de grer les mots de passe travers
le fichier /etc/shadow (contient les mots de passe crypts).

ls -l /etc/shadow donne -r-------- root root shadow

ls -l /usr/bin/passwd donne -r-sr-xr-x root bin passwd

SYSTMES DEXPLOITATION LINUX


51
Nous remarquons que tout utilisateur peut excuter la commande passwd, mais personne ne possde le droit
d'criture dans le fichier /etc/shadow. Le positionnement du SUID permet, pendant lexcution de la
commande d'agir en tant que root, donc le droit de mettre jour ce fichier des mots de passe.

Comment affecter ce droit un fichier excutable?

chmod u+s fichier

chmod 4555 fichier

Le droit SGID (Set Group ID)

Pour un fichier excutable, il fonctionne de la mme faon que le SUID, mais transpos aux membres du
groupe.

Comment affecter ce droit un fichier excutable?

chmod g+s fichier
chmod 2555 fichier

Le "sticky bit" ( ou bit collant)

Permet de maintenir, en mmoire ou en zone swap un programme frquemment utilis.
Ce droit spcial, a surtout un rle important sur les rpertoires. Il rglemente le droit w sur le rpertoire, en
interdisant un utilisateur quelconque de supprimer un fichier dont il n'est pas le propritaire. Ce droit
not symboliquement t occupe par convention la place du droit x sur la catgorie other de ce rpertoire,
mais bien entendu il ne supprime pas le droit d'accs x (s'il est accord). Sa valeur octale associe vaut 1000.
Par exemple : Le sticky bit est prsent sur le rp. /tmp

Le SGID :

Appliqu un rpertoire, le fichier dfini dans ce rpertoire appartient tout le groupe du rpertoire.
Appliqu un fichier de donnes, cela gnre un accs exclusif en ecriture.

Valeurs absolues des Droits daccs (en octal)

Valeur Octale Signification
4000 SUID
2000 SGID
1000 Sticky bit
0400 Lecture propritaire
0200 criture propritaire
0100 Excution propritaire
0040 Lecture Groupe
0020 criture Groupe
0010 Excution Groupe
0004 Lecture Autres
0002 criture Autres
0001 Excution Autres
SYSTMES DEXPLOITATION LINUX


52
Changement de propritaire (fichiers):

Chaque fichier crer sous LINUX appartient un propritaire et un groupe. Seul le propritaire tous les
droits sur ce fichier ( ne pas oublier que le super utilisateur root tous les droits), il est le seul qui peut
changer ses droits daccs.

Sous UNIX/LINUX il est possible de faire un transfert de propritaire, changer le propritaire dun fichier.

Attention : cette opration sous UNIX nest possible quen tant super utilisateur (sous LINUX aussi), il est
possible que sous certaines version dUNIX un utilisateur quelconque peut leffectuer.

La commande chown

Syntaxe : chown [-options] nouveau_propritaire fichier(s) (ou modle de fichiers)

Remarque : nouveau_propritaire doit exist dans /etc/passwd .
On peut aussi utiliser le numro didentification de lutilisateur (UID)

Options :

-v : Visualisation de lopration pour chaque fichier.
-R : Rcursivit de lopration pour toute une arborescence

Autre syntaxe : Changement du propritaire et du groupe en mme temps

chown nouveau_propritaire.nouveau_groupe

Changement de groupe (fichiers):

Mme principe que pour le changement du propritaire de fichiers. (Souvent les deux changements vont de
pair)

La commande chgrp :

Syntaxe : chgrp [-options] nouveau_groupe fichier(s) (ou modle de fichiers)

Remarque : nouveau_groupe doit exist dans /etc/group
On peut aussi utiliser le numro didentification du groupe (GID)

Options :

-v : Visualisation de lopration pour chaque fichier.
-R : Rcursivit de lopration pour toute une arborescence

Exemples dutilisation des commandes chown et chgrp

o Lors de la cration dun nouvel utilisateur, la cration du rpertoire de travail pour cet
utilisateur est faite sous root , donc pour pouvoir travailler sur ce rpertoire, root fait un
changement de propritaire et de groupe.
o Lors de linstallation de nouveaux logiciels
SYSTMES DEXPLOITATION LINUX


53
o Applications dveloppes en interne, pour les rendre disponible tous.

Gestion des groupes :

Dfinition de plusieurs groupe pour un utilisateur

On peut faire cette opration, soit la cration de lutilisateur (Mode graphique ou Mode texte), soit par la
suite.

Quelques commandes utiles (sous root):

adduser ou useradd (Cration de nouveau utilisateurs)

groupadd (Cration de nouveaux groupes)

Ajout de nouveaux groupes un utilisateur.

usermod -G group U utilisateur

id [-options] [utilisateur]

Affiche des informations sur un utilisateur. Utilise sans argument donne des informations sur lutilisateur
courant. Ces informations sont : UID , GID et les GID des autres groupes.
Options : -u UID uniquement, -g GID uniquement, -n (avec u ou g) uniquement les noms.

Changement de groupe de travail

A louverture dune session lutilisateur se logue avec un groupe (groupe initial).
Si cet utilisateur possde plusieurs groupes, il peut passer dun groupe un autre, cela signifie que les
nouveaux fichiers vont appartenir ce groupe. Cela est par le biais de la commande newgrp

Syntaxe : newgrp [-] [groupe]

Fait un login avec le groupe spcifi. ( pour revenir au groupe initial, il faut faire un exit)
Si aucun groupe nest spcifi, login avec le groupe initial.
Si le moins est spcifi, rinitialisation de lenvironnement.

Les permissions tendues, les ACL (non standard UNIX)

Il est possible de spcifier dans certains systmes UNIX des droits d'accs supplmentaires. Ces droits
d'accs consistent en une Liste de Contrle d'Accs (Access Control List = ACL), dans laquelle on indique
explicitement quels accs sont donns une (ou plusieurs) personne en particulier, ou un (ou plusieurs)
groupe prcis, sur un fichier prcis. Ces accs viennent modifier les accs de base. On peut ainsi ne donner
aucun accs de base sur un fichier pour Group et Other (seul l'utilisateur possde alors des droits de base), et
mettre une permission tendue pour qu'un utilisateur spcifique puisse quand mme lire ce fichier.

Les ACL's peuvent tre manipuls par trois commandes:

acledit : dition pleine page des ACL
aclget : visualisation des ACL existants
SYSTMES DEXPLOITATION LINUX


54
aclput : positionnement des ACL en mode ligne de commande

La commande li -e permet de savoir si des ACL's sont positionns ou non sur un (ou plusieurs) fichier.

15 Manipulations des systmes de fichiers :

Qu'est-ce qu'un systme de fichiers ?

Un systme de fichiers est un ensemble de mthodes et de structures de donnes quun systme
d'exploitation utilise pour grer les fichiers sur un disque. C'est une organisation de fichiers sur disque.

Sous UNIX/LINUX un systme de fichiers est identifi par partition ou disque logique.

Sous UNIX/LINUX nous pouvons avoir plusieurs partitions et sur chaque partition nous pouvons dfinir un
type de systme de fichiers (ext2, swap, msdos, nfs, etc.).

Remarque : La cration dune partition est faite avec la commande fdisk. La cration dune ou plusieurs
partitions ne peut tre faite que lors de linstallation du systme dexploitation UNIX/LINUX ou si lon
dispose despace libre sur disque ou sur un nouveau disque.

Cration d'un systme de fichiers.

Pour pouvoir utiliser une partition, il faut quelle soit initialise en crant un systme de fichiers.

Il existe deux commandes sous LINUX pour crer un systme de fichiers :

mkfs : commande qui permet de formater plusieurs types de systmes de fichiers.
mke2fs : commande spcifique pour la cration du systme de fichiers ext2 de LINUX. (qui en
ralit fait appel mkfs)

La commande mkfs :

Syntaxe : mkfs [ -V ] [ -t fstype ] [ fs-options ] filesys [ nb_blocs ]

mkfs est utilis pour formater un systme de fichiers LINUX sur un priphrique, gnralement une partition
de disque dur. filesys est soit le nom du priphrique (ex: /dev/hda1, /dev/sdb2) ou le point de montage ( /,
/usr, /home) du systme de fichiers. nb_blocs est le nombre de blocs utiliser pour le systme de fichiers.

En fait, mkfs est simplement une interface pour les divers formateurs de systme de fichiers.
(mkfs.type_de_fs) disponibles sous Linux. Le formateur du systme de fichier voulu est
recherch dans un certain nombre de rpertoires (/sbin, /sbin/fs, /sbin/fs.d, /etc/fs, /etc) (la liste exacte est
dfinie au moment de la compilation mais contient au moins /sbin et /sbin/fs).Veuillez consulter la page de
manuel spcifique au systme de fichier dsir pour plus de dtails.

Options :

-V : Gnre plus de messages, notamment toutes les commandes excutes
-t fstype : Indique le type de systme de fichiers formater, par dfaut ext2 est utilis.

fs-options
SYSTMES DEXPLOITATION LINUX


55

Options spcifiques au systme de fichiers crer. La plupart des options suivantes sont supportes par la
majorit des formateurs de systme de fichiers. Attention, il peut y avoir des exceptions.

-c : Vrifie le priphrique pour liminer les secteurs dfectueux avant de formater le systme de
fichiers.
-l nom_de_fichier : lit la liste des secteurs dfectueux depuis le nom_de_fichier
-v : gnre plus d'affichage.

La commande mke2f s: Cration dun systme de fichiers ext2 (LINUX).

Syntaxe :

mke2fs [ - c | - l nom de fichier ] [ -b taille de bloc ] [ -f taille du fragment ]
[ -i octets par inode ] [ -N nombre dinodes ] [-n] [ -m pourcentage de blocs rservs]
[ -o crateur OS] [ -q ] [ -r niveau de rvision du fs ] [ -R options du raid ]
[ - v ] [ - F ] [ - L label volume ] [ -M dernier rpertoire de montage]
[ - S ] [ -T type de systme de fichiers] [-V] fichier spcial [ nombre de blocs]

DESCRIPTION

mke2fs est employe pour crer un systme de fichiers LINUX ext2 sur un fichier spcial (device
(/dev/hdxx , /dev/fdx) (gnralement une partition disque) selon le nombre de blocs spcifis (Si omis
mke2fs prend toute la partition).

OPTIONS

-b taille de bloc
Taille du bloc (unit dallocation ) en octets. Tailles
valides: 1024, 2048 et 4096 octets. Si omise, mke2fs
dtermine la taille en fonction du systme de fichiers.(Voir option
T)
-c

Vrification de blocs dfectueux avant la cration du systme de
fichiers.
-f taille-fragment Indique la taille des fragments en octets.
-i octets-par-inode

Spcifie le ratio octets/inode. Option lie la taille des blocs
dindexation. Cette valeur ne doit pas tre infrieure la taille du
bloc du systme de fichiers
-N Permet lutilisateur de dfinir le nombre dinodes de son systme
de fichiers.
-l nom de fichier Les mauvais blocs sont numrs dans nom de fichier.
-m % de blocs
rservs
Indiquent le pourcentage des blocs rservs pour le super-utilisateur.
(5% par dfaut)
-q Mode silencieux
-v Visualisation de toutes les oprations de mke2fs
-F Force mke2fs sexcut mme si le device nest pas un fichier
spcial en mode bloc.
-L label_volume Nom de volume du systme de fichiers
-M Pour dtermination du point de montage partir de largument
spcifi
SYSTMES DEXPLOITATION LINUX


56
-R options Pour dfinir les options RAID

Exemple de cration dun systme de fichiers :

mke2fs /dev/hda5 (on suppose de la partition /dev/hda5 est libre)
mke2fs /dev/fd0 (cration du systme de fichiers ext2 sur disquette)

Montage et dmontage dun systme de fichiers

Avant que l'on puisse utiliser un systme de fichiers, celui-ci doit tre mont. Le systme d'exploitation
ralise alors diverses tches de vrification afin de s'assurer que tout fonctionne correctement. Comme tous
les fichiers d'UNIX sont dans une seule arborescence, l'opration de montage fera apparatre le contenu du
nouveau systme de fichiers comme s'il s'agissait d'un sous-rpertoire existant dans un systme de fichiers
dj mont.

Utilisation de systmes de fichiers :

Commande mount : monter un systme de fichiers.

Syntaxe :

mount [-hV]
mount a [-fnrvw] [-t type]
mount [-fnrvw] [-o options [,...]] device point-de-montage
mount [-fnrvw] [-t type] [-o options] device point-de-montage

mount -t type device point-de-montage

Cette commande de montage permet de rattacher le systme de fichiers se trouvant sur le device spcifi
(dont le type est prcis) dans le point-de-montage qui doit tre un rpertoire. Le contenu prcdent de
ce rpertoire devient invisible.

mount -h : affiche un message d'aide
mount -V : affiche un numro de version
mount [-t type] : fournit la liste des systmes de fichiers actuellement monts (ventuellement ceux
du type indiqu uniquement).

La plupart des devices peuvent tre indiqus sous forme de noms de fichiers (spcial bloc), comme
/dev/hda1, mais il y a galement d'autres possibilits. Par exemple, dans le cas d'un montage par NFS,
device peut ressembler host:/dir.

Le fichier /etc/fstab : contient des lignes dcrivant les priphriques habituellement monts, leurs
rpertoires, et leurs options. Ce fichier est utilis dans trois cas :

1) La commande mount -a [-t type] (gnralement excute dans un script de dmarrage) monte tous
les systmes de fichiers indiqus dans ce fichier (ou uniquement ceux du type indiqu), l'exception
de ceux dont la ligne contient le mot-cl noauto.
2) Lorsque l'on monte un systme de fichiers mentionn dans ce fichier, il suffit d'indiquer le point de
montage, ou le device .
SYSTMES DEXPLOITATION LINUX


57
3) Normalement, seul le Super-Utilisateur peut monter des systmes de fichiers. Nanmoins, si la ligne
du fichier /etc/fstab contient l'option user, n'importe quel utilisateur peut monter le systme de
fichiers correspondant.

Exemple : Si une ligne de /etc/fstab contient
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
pour monter ce systme de fichiers (qui un CDROM), il suffit dexcuter soit mount /dev/cdrom ou
mount /cd

Les programmes mount et umount maintiennent une liste des priphriques actuellement monts dans le
fichier /etc/mtab. Si mount est invoqu sans arguments, cette liste est affiche. Quand le systme proc est
mont (disons sur /proc), les fichiers /etc/mtab et /proc/mounts sont trs semblables. Le premier contient un
peu plus d'informations, par exemple les options de montage, mais n'est pas obligatoirement jour.

Options de la commande mount:

L'ensemble exact des options utilises lors d'une invocation de mount est dtermin d'abord en lisant les
options du fichier /etc/fstab pour ce systme de fichiers, puis en appliquant les options prcises par
l'argument -o, et finalement en appliquant les options -r ou -w si elles sont mentionnes.

-v : mode visualisation.
-f : fonctionnement normal sauf pour l'appel systme final qui n'est pas excut. Ceci simule le montage
du systme de fichiers. Cette option, en conjonction avec -v permet de dterminer ce que la commande
mount essaye de faire.
-n : montage sans criture dans /etc/mtab.
-r : montage du systme de fichiers en lecture seule. Un synonyme est -o ro.
-w : montage du systme de fichiers en lecture/criture. Il s'agit de l'option par dfaut. Un synonyme en
est -o rw.
-t type : l'argument la suite de -t est utilise pour prciser le type de systme de fichiers.
Les types actuellement supports sont mentionns dans linux/fs/filesystems.c: minix, ext, ext2, xiafs,
hpfs, fat, msdos, umsdos, vfat, proc, nfs, iso9660, smb, ncp, affs, ufs, sysv, xenix.Le type par dfaut est
iso9660. Si aucune option -t n'est mentionne, ou si le type auto est prcis, la recherche de type est
effectue sur le superblock (minix, ext, ext2, xia, iso9660 sont supports). Si cette recherche choue,
et si /proc/filesystems existe, alors tous les types de systmes de fichiers lists seront essays, sauf
ceux marqus "nodev" (par exemple proc et nfs).
Le type auto peut tre utile pour des disquettes montes par l'utilisateur. On peut indiquer plusieurs
types, spars par des virgules. Une liste de systmes peut galement tre prfixe par no pour
indiquer les types qu'il ne faut pas tester. (Ceci prend son sens avec l'option -a).

Par exemple, la commande :

mount -a -t nomsdos,ext : monte tous les systmes de fichiers, l'exception de ceux de type msdos
et ext.
-o : les options de montage sont indiques par l'argument -o suivi d'une liste d'options spares par des
virgules. Certaines d'entre-elles ne sont utiles que lorsqu'elles apparaissent dans le fichier /etc/fstab

Les options suivantes sont communes au montage de tous les systmes de fichiers :
async : toutes les entres/sorties sur le systme de fichiers seront asynchrones.
auto : peut tre mont par l'argument -a.
defaults : utilisation des options par dfaut : rw, suid, dev, exec, auto, nouser, et async.
SYSTMES DEXPLOITATION LINUX


58
dev : interprter les fichiers spciaux de priphriques prsents sur le systme de fichiers.
exec : permettre l'excution de fichiers binaires.
noauto : ne peut tre mont qu'explicitement (l'invocation de mount avec l'argument -a ne montera
pas le systme de fichiers).
nodev : ne pas interprter les fichiers spciaux de priphriques prsents sur le systme de fichiers.
noexec : ne pas permettre l'excution de fichiers binaires sur le systme de fichiers mont. Ceci peut
tre utile sur un serveur qui contient des fichiers binaires pour des architectures autres que la sienne.
nosuid :ne pas tenir compte des bits Set-UID ou Set-GID.
nouser :ne pas autoriser d'utilisateur ordinaire (non root) monter le systme de fichiers. C'est le
comportement par dfaut.
remount: remonter un systme de fichiers dj mont. Ceci est utilis pour changer les attributs de
montage, principalement pour autoriser l'criture sur un systme en lecture seule.
ro : montage du systme en lecture seule.
rw : montage du systme en lecture/criture.
suid : prendre en compte les bits Set-UID ou Set-GID des fichiers se trouvant sur le systme
mont.
sync : toutes les entres/sorties sur le systme de fichiers seront synchrones.
user : autoriser les utilisateurs ordinaires (non root) monter le systme de fichiers. Ceci entrane
l'utilisation des options noexec, nosuid, et nodev ( moins qu'elles ne soient explicitement
surcharges, comme dans une ligne d'option user,exec,dev,suid).

Fichiers associs mount

/etc/fstab table des systmes de fichiers
/etc/mtab table des systmes de fichiers monts
/etc/mtab~ fichier de verrouillage
/etc/mtab.tmp fichier temporaire

Le fichier /etc/fstab

Le fichier /etc/fstab est utilis pour dfinir des options par dfaut pour certains systmes de fichiers.
Sur chaque ligne de ce fichier, on trouvera la dfinition d'un systme de fichiers avec certains
paramtres. Chaque ligne se compose de la faon suivante :

device point de montage type de systme de fichiers options dump ordre de
vrification
o:
options : est une liste de valeurs spares par virgule (options pour la commande mount)
dump : est utilis par la commande dump pour voir si le systme de fichier doit tre sauvegard (0
= pas de sauvegarde, 1 = sauvegarde voulue)
ordre de vrification : dterminera dans quel ordre les systmes de fichiers doivent tre vrifis (0
signifiant pas de vrification)

Exemple de fichier: /etc/fstab

/dev/hda1 / ext2 defaults 1 1
none /proc proc defaults 0 0
/dev/hda5 swap swap defaults 0 0
/dev/fd0 /mnt/floppy vfat noauto,uid=1008 0 0
/dev/cdrom /mnt/cdrom iso9660 user,noauto,ro 0 0
SYSTMES DEXPLOITATION LINUX


59

Ligne 1 : montage du systme de fichiers racine lors du dmarrage. L'option defaults
signifie que ce systme de fichiers peut tre mont avec mount a .

Ligne 2 : montage du pseudo systme de fichiers proc.

Ligne 3 : montage du systme de fichiers de swap.

Ligne 4 : montage dune disquette. L'option noauto vite que la disquette ne soit monte au
dmarrage et par l'utilisation de la commande mount -a.

Ligne 5 : montage du CD-ROMM. Avec l'option ro pour le monter en lecture seul, noauto
pour viter de le monter automatiquement et user pour permettre n'importe quel
utilisateur du systme de le monter.

La commande umount : Dmonte un systme de fichiers

Syntaxe :

umount [options] [ device ou point-de-montage]

Options :

-a : dmonte tous les systmes de fichiers mentionns dans /etc/mtab
-h : Aide dutilisation de umount
-v : mode verbeux (visualisation de loperation)
-t type : ne dmonte que les systmes de fichiers de type spcifi.

Exemple : Montage et dmontage dun systme de fichier msdos

mount t msdos /dev/hda1 /mnt
umount /mnt ou umount /dev/hda1

16 - Contrle de lespace libre et utilis

La commande df

Cette commande nous renseigne sur loccupation des systmes de fichiers monts.

Syntaxe : df [ -options ] [ nom ]

[nom] peut dsigner un device ou un point de montage.

Options :

-a, --all Information sur tous les systmes de fichiers monts
-i, --inodes Affichage des informations sur les inodes (occupation, disponible)
-k, --kilobytes Affichage en blocks de 1 Ko
-t, --type=type Affichage dinformations sur les types de systmes de fichiers spcifis

SYSTMES DEXPLOITATION LINUX


60
Remarque : La commande df donne un pourcentage doccupation de chaque systme de fichiers, ceci
permettra ladministrateur systme de surveiller de prs lespace disque.

La commande du

La commande du permet de visualiser les informations relatives lespace disque occup par un rpertoire
(ou un fichier). Le rsultat est donn en blocs , y compris les blocs dindirections.
La taille du bloc dpend du systme de fichiers.

Syntaxe : du [ -options ] [rpertoires ou fichiers]

-a, --all Affiche lespace allou en blocs pour tous les fichiers et tous les rpertoires
-b, --bytes Affiche les quantits en octets.
-c, --total En plus de la sortie normale, affiche le total de tous les arguments donnes.
-h, --human Ajout dun des suffixes K,M,G (ko, Mo, Go)
-s, --summarise Naffiche que le total pour chacun des rpertoires donn en argument.
-x, --one-file-system le systme de fichier courant.

16 - Les outils de compression et darchivage

Introduction :

La sauvegarde de donnes est un point important et parfois abord avec prudence par les utilisateurs. LINUX
permet la cration d'archives par la commande tar, mais permet aussi le gain de place grce des outils de
compressions comme gzip et bzip.
Le format rsultant, tar.gz ou tar.bz2, est trs largement rpandu pour le tlchargement de programmes sur
le web.

Archivage :

La commande tar (tape archive) permet l'archivage de donnes. Celle-ci permet non seulement de crer des
archives, mais aussi de les manipuler. Ainsi, on peut consulter la liste des fichiers archivs, complter ou
mettre jour une archive. tar peut galement dposer directement les archives sur un priphrique donn ou
accder des fichiers distants.

Compression :

Les commandes gzip et gunzip

gzip (GNU zip) est un programme de compression destin remplacer la commande compress.
gzip produit des fichiers avec une extension .gz

gunzip peut dcompresser des fichiers crs par gzip, compress ou pack. La dtection du format d'entre est
automatique.

Les commandes bzip et bunzip

bzip2 est un programme de compression de donnes de trs haute qualit. Il compresse 15% prs comme
les meilleurs compresseurs actuels.
SYSTMES DEXPLOITATION LINUX


61
bzip2 a la possibilit de rparer partiellement certaines erreurs partir d'une archive corrompue.
bzip2 est similaire gzip dans son utilisation en ayant la mme structure.
bzip2 existe sur Windows et sur Unix.

La commandes cpio

cpio comme la commande tar permet de crer des archives.

Commande : gzip/gunzip

gzip est un utilitaire de compression/dcompression en ligne de commande.

gzip remplace le fichier compresser par un fichier de mme nom avec une extension .gz

Il a la particularit de ne compresser que les fichiers intgres, par exemple il refuse la compression des liens
symboliques.

gunzip est quivalent gzip -d, peut dcompresser tous les fichiers d'extension .gz, .z et .Z . Il reconnat
galement les formats .tgz et .taz, raccourcis pour .tar.gz et .tar.Z.
Cet outil peut dcompresser des fichiers crs avec gzip, zip, compress ou pack,

On peut galement utiliser zcat pour dcompresser l'gal de gunzip -c.

Syntaxe :

gzip [ -options ] [ fichiers ]
gunzip [ -options ] [ fichiers ]

Option Fonction
-c
renvoie le rsultat sur la sortie standard. Pour une meilleure compression, il est prfrable de
concatner les diffrents fichiers en entre (voir tar et cpio)
-d pour la dcompression (identique la commande gunzip)
-f force la compression/dcompression sans valider toutes les vrifications
-h affiche une page d'aide succincte
-l
affiche diffrentes informations (place compresse, dcompresse, ratio de compression, nom
dcompress, mthode de compression, date du fichier dcompress) (formats possibles : gzip,
deflate, compress, lzh, pack)
-n ne sauve pas le nom original du fichier compresser
-N sauve le nom original du fichier. Option par dfaut
-q supprime toutes les alertes
-r compresse/dcompresse une structure arborescente de faon rcursive
-S .suf
permet de changer le suffixe par dfaut (.gz). Utilis pour forcer une dcompression sur tout type de
fichier en apposant un suffix blanc : gunzip -S "" *
-t teste l'intgrit d'un fichier compress
-v affiche le nom et le ratio de compression de chaque fichier
SYSTMES DEXPLOITATION LINUX


62
-#
permet de changer le rapport vitesse/taux de compression. -1 est le plus rapide, et -9 le meilleur taux
de compression. Par dfaut, l'option vaut 6

commande : bzip2, bunzip2

bzip2 est un utilitaire de compression/dcompression dont le taux de compression trs lev.

bzip2 utilise la mme composition d'options que gzip. Il permet cependant de prendre en paramtre une liste
de fichiers : chacun sera alors compress et aura pour nom le nom original avec une extension .bz2

bunzip2, quivalent bzip2 -d, dcompresse tous les formats en .bzip, .bz, .bz2, .tbz et .tbz2.

Syntaxe :

bzip2 [ -options] [ fichiers ]
bunzip2 [ -options ] [ fichiers ]

Option Fonction
-c renvoie le rsultat sur la sortie standard
-d force la dcompression
-z force la compression
-t vrifie l'intgrit du fichier sans le dcompresser
-f force l'criture du fichier. crase par consquent les versions pralables.
-k n'efface pas les fichiers d'entre
-s limite l'espace mmoire utilis pour la compression/dcompression
-q supprime toutes les alertes

Commande tar :

tar est un utilitaire darchivage. Il s'utilise en ligne de commande et ses options sont trs varies, permettant
des manipulations au sein de l'archive elle-mme.

tar produit ce que lon appelle des fichiers tar (tarfiles)

Les options principales (ce que lon appelle des fonctions) de la commande tar sont : A c d r t u x, suivies
par des options facultatives. Les derniers arguments sont des noms de fichiers ou de rpertoires.

La commande, par dfaut fait larchive (sauvegarde) de toute larborescence rattach au rpertoire spcifi.

Syntaxe :

tar fonction [ options ] [ nom d'archive ] [ fichiers archiver ]

Nous pouvons citer les trois commandes les plus courantes :

tar cvf fichier.tar rpertoire pour crer l'archive fichier.tar partir de rpertoire.
SYSTMES DEXPLOITATION LINUX


63
tar tvf fichier.tar pour afficher la liste des fichiers contenue dans un archive
tar xvf fichier.tar pour extraire une archive.


Option Principale Fonction
A concatne une archive la suite dune autre archive
c cre dune nouvelle archive
d recherche les diffrences entre une archive et un systme de fichiers
r ajoute un fichier en fin d'archive
t donne la liste des fichiers contenus dans une archive
u met jour les fichiers plus rcents que ceux contenus dans l'archive
x extrait les fichiers d'une archive
Option facultative Fonction
v affiche l'ensemble des oprations effectues
m
Au moment de lextraction, ne conserve pas lheure et la date
antrieure; les fichiers auront la date de lextraction.
--delete supprime un fichier d'une archive
-C DIR dplace l'archive dans le rpertoire DIR
--checkpoint affiche le nom des rpertoires contenus dans l'archive
-f [hte:]F
utilise l'archive F ou le priphrique F. L'hte permet d'accder des
fichiers distants.
-h
permet d'archiver les fichiers points par des liens symboliques, et non
les liens.
-I
filtre une archive avec bzip2, permet de dcompresser les fichiers en
.bz2
-k n'crase pas les anciens fichiers d'une archive
-K FILE commence partir du fichier FILE dans l'archive
-N DATE ne stocke que les fichiers plus rcents que la DATE
-O extrait les fichiers vers la sortie standard
-p extrait toutes les informations sur les droits et protections
--remove-files efface les fichiers aprs les avoir archivs
--same-owner extrait les fichiers du mme propritaire
-V NAME cre une archive de nom NAME
-w demande une confirmation pour chaque action
-W vrifie l'archive aprs l'avoir crite
-X FILES exclut les fichiers de la liste FILES
-Z filtre l'archive avec compress
-z filtre l'archive avec gzip
--exclude=fichier(s) Exclut les fichiers spcifis de la liste des fichier archiver
M Multivolumes (Plusieurs supports de mme type)
SYSTMES DEXPLOITATION LINUX


64
T fichier La liste des fichiers archiver est dans fichier
--use-compress-
program=prog_compress
Utilise program_compress pour la compression et dcompression des
fichiers archivs


Commande cpio :

La commande cpio copie les fichiers dont les noms sont donns en entre standard dans la sortie standard.

Il existe trois (03) modes dutilisation de la commande cpio.

1) Sauvegarde (mode output)

Syntaxe : cpio o [options]

2) Restauration (mode input)

Syntaxe : cpio i [options]

3) Copie de fichiers ( ou darborescence) (mode pass)

Syntaxe : cpio p [options]

Option Fonction
B Fixe la taille des blocs dE/S 5120 octets (si omis bloc = 512 octets)
a Fixe la date dernier accs des fichiers la date courante ( -i , -p)
d Cre de nouveaux rpertoires au besoin (-i , -p)
f
Cre un fichier darchive avec la liste des fichiers dont le nom ne
correspond pas au modle spcifi.
m
Ne modifie pas la date dernire modification ( si omis la date dernire
modification = date courante lors de la restauration)
t Donne la liste des fichiers dune archive cpio ( -i )
u
Copie inconditionnelle. Des fichiers anciens peuvent remplacer des
fichiers plus rcents (-i , -p )
V Visualisation de lopration
Remarque : cpio est utilise le plus souvent avec la commande find.

Commande dd :

Cest une commande de copie brute doctets dun fichier vers un autre. Les fichiers peuvent tre des fichiers
spciaux. Lors de la copie la commande dd peut faire des conversions de caractres. La taille des blocs est
fixe par lutilisateur, ce qui permet de lire nimporte quel support (ex : K7 ou BM).

dd copie par dfaut, copie l'entre standard vers la sortie standard.

La commande dd est utilise pour faire des duplications de disquettes.
SYSTMES DEXPLOITATION LINUX


65

Elle permet aussi de faire des copies de partitions et de disques.

Syntaxe :

dd [--help] [if=fichier] [of=fichier] [option1=valeur1] [option2=valeur2]

Options

Tous les nombres peuvent tre suivis d'un multiplicateur correspondant : b=512, c=1, k=1024, w=2,
xm=nombre m

if=fichier Lire les donnes depuis le fichier indiqu plutt que depuis l'entre
standard.
of=fichier Ecrire les donnes dans le fichier mentionn, et non pas sur la sortie
standard.
Si conv=notrunc n'est pas indiqu,le fichier est limit la taille
spcifie par seek= (0 octets si seek= n'est pas fourni).
ibs=nombre Lire le nombre indiqu d'octets en une fois
obs=nombre Ecrire le nombre indiqu d'octets en une fois
bs=nombre Lire et crire le nombre indiqu d'octets en une fois. A priorit sur
ibs et obs.
cbs=nombre Convertir le nombre indiqu d'octets en une fois
skip=nombre Ignorer le nombre indiqu de blocs (dont la taille est fournie par
ibs) au dbut de la lecture.
seek=nombre Ignorer le nombre indiqu de blocs (dont la taille est fournie par ibs)
au dbut de l'criture.
count=nombre Copier seulement le nombre indiqu de blocs (dont la taille est
fournie par ibs).
conv=conversion[,conversion]... Modifier le fichier comme indiqu par 'argument conversion, qui
peut prendre les valeurs suivantes

ascii Convertir l'EBCDIC en ASCII.
ebcdic Convertir l'ASCII en EBCDIC.
ibm Convertir l'ASCII en EBCDIC IBM.
block Complter les blocs se terminant par un saut de ligne
avec des espaces, jusqu' atteindre la taille mentionne par cbs.

unblock Remplacer les espaces en fin de blocs (de taille cbs)
par un saut de ligne.
lcase Transformer les majuscules en minuscules.
ucase Transformer les minuscules en majuscules.
swab Echanger par paire les octets lus en entre.
noerror Continuer mme aprs des erreurs de lecture.
sync Complter chaque bloc lu avec des NULs pour
atteindre la taille ibs.

Exemple :

SYSTMES DEXPLOITATION LINUX


66
dd if=/dev/fd0 of=image-diskette (image de la disquette dans un fichier sur disque)

dd if=/dev/rmt0 of=fichier-disque bs=32000 conv=ascii (lecture dune bande magntique dun systme ibm)

17 - Intgrit du systme de fichiers

Le systme LINUX, pour des raisons defficacit ncrit pas en permanence sur disque toutes les
informations de gestion des systmes de fichiers. Dans le cas dun arrt anormal du systme il peut donc y
avoir incohrence dans les structures du disque.

Larrt anormal peut tre du :

o arrt intentionnel par linterrupteur marche/arrt
o un reset sans utilisation de la procdure normale darrt
o plantage du systme.

Pour la coupure de courant , si on possde un onduleur , on peut faire un arrt normal, sinon cela rentre dans
le cas danomalie.

Les problmes du un arrt anormal du systme peuvent se rsumer comme suit :

o blocs utiliss par plus dun inode ou par un inode et la liste des blocs libres
o blocs rfrencs par un inode ou par la liste des blocs libres sont en dehors des limites du
systme de fichiers.
o Nombre de liens incorrects sur un fichier.
o Test de taille : incohrence entre la taille du fichier et le nombre de blocs du fichier
o Mauvais format dinode
o Blocs non rfrencs
o Test de rpertoires : fichiers pointant sur des inodes non allous, numros dinode hors des
limites de la table des inodes, fichiers non rfrencs dan un rpertoire, liens sur des
rpertoires.
o Test du super bloc : nombre dinodes incohrent avec le nombre de blocs de la table.
o Format de la liste des blocs libres incorrect.
o Total des blocs libres ou des inodes incorrect.

Le contrle du systme de fichiers et sa rparation en cas danomalies seront effectus par la commande
fsck .
La commande fsck

Syntaxe :

fsck [ options ] [ fichier-spcial ]

La commande fsck ne peut tre faite que sur des systmes de fichiers dmonts et que lon travail en mode
maintenance.

Sans options, ni fichier spcial, la commande fsck verifie tous les systmes de fichiers spcifis dans le
fichier /etc/fstab.
SYSTMES DEXPLOITATION LINUX


67

Les options varient d'un systme UNIX l'autre. Les options les plus utilises sont les suivantes :

Option Signification
-a La rparation automatique du systme de fichiers, sans demande de confirmation (
utiliser avec prudence ).
-r Demande confirmation avant de rparer le systme de fichiers.
-t <fstype> Spcifie le type de systme de fichiers vrifier.
-v Affiche des informations supplmentaires sur ce que fsck est en train de faire.
-l Affiche la liste des noms de tous les fichiers contenus dans le systme de fichiers.
-s Dresse la liste des super blocs avant de contrler le systme de fichiers.

La commande fsck distingue plusieurs phases (5 passes):

Phase 1 Checking inodes, blocks and sizes : compare l'information du super bloc et l'tat actuel (sur le
nombre total de blocs, la taille de la liste des inodes, les informations de gestion des fichiers dans la liste
des inodes, )

Phase 2 Checking directory structure (pathnames) : vrifie si toutes les entres des rpertoires
correspondent aux inodes, si les numros d'inodes sont valides et s'ils ne sont pas vides.


Phase 3 Checking directory connectivity : vrifie si les blocs de donnes ne sont rfrencs qu'une fois
par un inode.

Phase 4 Checking reference counts : correspondance entre le nombre de rfrences dans le rpertoire et
le contenu du compteur de rfrences de l'inode (au minimum 1 ).


Phase 5 Checking group summary information : vrification si les blocs mentionns dans la liste des
blocs libres ne sont pas affects un quelconque fichier et si le nombre total de blocs est gal la somme
des blocs libres et occups.

Le bon fonctionnement de fsck suppose lexistence dun rpertoire lost+found sous la racine de chaque
systme de fichiers. Ce rpertoire sert rcuprer les inodes qui ne sont relis aucun rpertoire. Si la
commande fsck narrive pas rectifier tout seul les problmes, il faudra que vous rpondiez vous mme
chacune des questions conscutives une anomalie dtecte.

VI SHELL

1 - Introduction

Le SHELL est un interprteur de commandes.
Le SHELL est indpendant des commandes externes
Le SHELL est un programme dont la fonction principale est de servir dinterface entre les utilisateurs et le
Noyau (Kernel).

Le SHELL peut tre utilis de deux manires :

SYSTMES DEXPLOITATION LINUX


68
o Interprtation et excution des commandes en interactif
o Excution dun programme en langage Shell. Ce que lon appelle : Procdures de
commandes ou Scripts Shell

Les diffrents SHELL existant sous LINUX

sh Bourne SHELL Shell standard
ksh Korn SHELL Shell tendu
bash Bourne Again Shell Shell sous LINUX
csh C-SHELL Proche du langage C.

2 Le Shell : bash

Caractristiques supportes par le bash

o Les mta caractres
o Les redirections des entres-sorties standards.
o Les enchanements des commandes (pipes)(tubes)
o Historique des commandes
o Les alias
o Les variables
o Les tches en background ou taches de fond (taches parallles)
o La compltation des noms de fichiers.

Rappel sur quelques touches du clavier :

Touche ou combinaison de
touches
Symbole Signification
<enter> ou <return>

Valider une commande
Retour la ligne (ligne suivante)
<backspace> ou <ctrl><h>

^H
Efface le caractre avant le curseur
<ctrl> <C>
^C
Met fin lexcution dune commande
<ctrl><D>
^D
Fin de session
Fin de saisie de donnes dans un fichier
<ctrl><U>
^U
Efface toute la ligne courante
<ctrl><Z>
^Z
Suspend lexcution dune commande
(Pour reprendre lexcution il faut utiliser la commande fg)
<tab><tab>

Liste toutes les commandes UNIX
Compltation des noms de fichiers
<ctrl><A>
^A
Curseur en dbut de ligne courante
<ctrl><E>
^E
Curseur en fin de ligne courante

Les mta caractres :

Le tableau suivant donne une liste des caractres qui ont une signification particulire pour le Shell


Quottes simples Aucune interprtation pour certaines commandes
SYSTMES DEXPLOITATION LINUX


69
" "
Quottes doubles Interprtation de certains mta caractres
\
Back Slach Protge le mta caractre qui suit.
``
Anti-quotte Substitution de commandes
$
Signe du dollar Utilis pour faire rfrence une variable et aussi avec les commandes
( )
Les parenthses Cration de processus fils
{ }
Les accolades Regroupement de commandes ou dfini un ensembles de selection
&
Et commercial Utilis pour les taches de fonds.
|
Barre verticale Utilis pour les tubes
>,>>,<,<<
Utilis pour les redirections

Le entres-sorties standards :

UNIX/LINUX est un systme dexploitation conversationnel. Les appels dentres/sorties ont t conus de
manire liminer les diffrences daccs existant entre les diverses units priphriques.
Notion de priphrique standard
On appelle priphrique standard, tout dispositif que lutilisateur emploie pour communiquer avec le systme
et qui lui est attribu sans spcification particulier de sa part .
Exemples : cran, clavier.
La plupart des commandes reoivent leur entre de donnes de lentre standard et envoient leur sortie
rsultat sur la sortie standard.
Sur le systme UNIX/LINUX, il y a 3 priphriques standard attribus chaque utilisateur, ce sont :
lentre standard qui correspond au clavier
la sortie standard qui correspond lcran
la sortie derreurs standard qui correspond aussi lcran ( bien que ce soit un fichier diffrent de la
sortie standard ) . Toutes les erreurs sont affiches sur cette sortie.





Sortie des Erreurs


Redirections simples

Unix/LINUX donne la possibilit lutilisateur de modifier les affectations par dfaut des organes
dentres/sorties standard. Cette opration sappelle rediriger les entres/sorties standard. Divers aiguillages
sont possibles.
Les informations peuvent tre prises ou ranges laide dun fichier spcial (associ un priphrique) en
sortie ou en entre dun autre programme. Ceci est permis par le fait que les fichiers Unix/LINUX ne sont
pas figs suivant un critre daccs ( squentiel , direct ) , ni selon une allocation despace ( taille des fichiers
) .
Pratiquement, il existe trois symboles de redirections des entres/sorties correspondant aux divers objectifs
de laiguillage :
Commande UNIX
Entre Sortie Rsultat
cran
Clavier
cran
SYSTMES DEXPLOITATION LINUX


70
< : prendre lentre dans
> : mettre la sortie au dbut de
>> : mettre la sortie la fin de

largument qui suit lun de ces trois symboles est un nom de fichier ( fichier ordinaire disque ou fichier
spcial ) .
la syntaxe pour oprer une redirction a donc lallure suivante dans sa version la plus simple :
commande > nom_fichier
Nota :
Il peut y avoir une ou plusieurs redirections dans la mme commande.
Les redirections sont lies la commande elle-mme, cest dire que les entres/sorties standard sont
restaures automatiquement dans leur destination par dfaut ds que la commande est acheve .
En sortie, si le fichier de redirection existe, il est pris et donc rinitialis si on a utilis loption >. Si le
fichier nexiste pas, il est automatiquement cr mme avec loption >>.

exemples :

l -l > liste

La liste des fichiers du rpertoire courant est place dans le fichier liste.

cat fic2 >> fic3

Le fichier fic2 est copi dans le fichier fic3 partir de la fin de ce dernier.

a.out < fichdata

Le programme a.out prendra les donnes quil aurait normalement lues sur le clavier, dans le fichier
fichdata .

La redirection de lentre et de la sortie standard se fait implicitement sans prciser explicitement en
particulier sil sagit de lentre ou de la sortie. Il est possible aussi de rediriger la sortie derreurs
standard. Dans ce cas il est videmment ncessaire de la prciser explicitement puisquelle concide avec
la sortie standard. UNIX/LINUX attribut chaque entre/sortie standard un numro logique :

Entre standard 0
Sortie standard 1
Sortie derreurs standard 2

Par suite, pour rediriger la sortie derreurs standard on tapera :

commande 2>fich_erreur

Si on dsire rediriger simultanment la sortie derreurs et la sortie standard dans le mme fichier la
syntaxe est la suivante :

commande >fich 2>&1
SYSTMES DEXPLOITATION LINUX


71

nota : le nombre qui dsigne lorgane standard doit tre coll au symbole de redirection sinon le shell
linterprte comme un argument de la commande.

Le fichier spcial /dev/null peut tre utilis pour rediriger les sorties standards, comme un ficher
poubelle.

Enchanement de commandes : les pipes ( les tubes) (Communication entre deux processus)

La sortie standard dune commande peut servir dentre standard un autre commande. Pour cela, le
systme ouvre et gre un fichier de type FIFO ( first in first out ) qui servira de tampon de communication
entre les deux commandes. cest ce type de connexion quon appelle tube ( en anglais pipe )

Physiquement, le tube est reprsent par le symbole "|" qui signifie crer un tube entre les deux
commandes de part et dautre du | ( i.e. relier la sortie standard de la premire commande lentre
standard de la seconde )

La syntaxe est la suivante :

commande1 | commande2

On peut ainsi chaner plusieurs commandes avec le signe | , les rsultats intermdiaires ntant plus
affichs au terminal . Seul le rsultat final est visualis, sauf sil est lui-mme redirig.

Exemple :

trier lcran alphabtiquement ligne ligne un fichier . On tapera la commande :

cat fichier | sort

Le rsultat saffichera directement sur la sortie standard ( lcran ). Cest bien entendu, cette sortie qui est
trie, le fichier reste lui inchang.


Redierctions multiples

Il est clair que la redirection vers un fichier, pendant lexcution dune commande dtourne le rsultat de
la sortie standard ( lcran ) : il ny a quune seule sortie.

Cependant , il peut tre utile de bnficier de plusieurs sorties simultanment , cest a dire de pouvoir
rediriger le rsultat de lexcution dune commande vers plusieurs fichiers dont , ventuellement la sortie
standard .

La commande tee ralise cette opration .

Syntaxe :

tee [-a] [-i] [fich1 fich2 ]

Description :
SYSTMES DEXPLOITATION LINUX


72

La commande tee lit le fichier dentre standard et le recopie sur le fichier de sortie standard et
ventuellement sur les autres fichiers dont les noms sont passe en arguments . Cette commande peut tre
combine avec une redirection ou un tube .

options :

-i ignore les interruptions

-a provoque lcriture en fin de fichier , a la suite du texte dj existant dans le fichiers mentionns dans
la commande , donc sans craser leur contenu .

Exemples :

tee fic1 fic2

criture dans le fichier fic1 et fic2 et sur lcran de ce qui est saisi au clavier

tee a fic1 fic2 < fic3

criture a la fin des fichiers fic1 et fic2 et sur lcran du contenu du fichier fic3 .

who | tee fic1 fic2

criture du rsultat de lexcution de la commande who dans les fichiers fic1, fic2 et sur lcran.

Rsum dutilisation des redirections :

1- commande > fic_res Envoie le rsultat de la commande dans fic_res (crasement)

2 commande >> fic_res Ajout la suite de fic_res

3 commande < fin_in La commande lit les donnes en entre partir de fic_in

4 commande << chane de caractres Lit lentre standard, et la fin de saisie est la chane de
caractre en dbut de ligne de saisie.

Exemple :

cat << end > fichier




end (marque la fin de saisie)

Les alias

Un alias est un synonyme dune ou plusieurs commandes.
SYSTMES DEXPLOITATION LINUX


73
On peut aussi le dfinir comme une abrviation de commande.

Dfinition dun alias sous bash (la dfinition peut tre diffrente dun shell un autre).

La commande alias permet de dfinir des alias

Syntaxe :

alias nom_alias=ligne de commandes

On peut utiliser les mta-caractres pour la dfinition des alias.

exemples :

alias ll=ls l | less
alias dir=ls
alias rm=rm i

Un alias peut faire rfrence un autre alias.

La commande alias sans arguments donne la liste des alias prdfinis.

La dfinition dun alias en cours de session, nest valide que pour la session.
(Pour rendre disponible les alias, on peut les mettre dans les fichiers dinitialisation de la session tels que :
~/.bash_profile, ~/.bashrc, )

Pour supprimer un alias, on utilise la commande unalias nom_alias, unalias a (pour supprimer tout les
alias.

Historique des commandes

Le bash permet de conserver lhistorique des commandes que lutilisateur a excut durant plusieurs
sessions.

tout moment lutilisateur peut parcourir la recherche dune ligne de commande conserve dans
lhistorique, il suffit dutiliser les flches directionnelles : .

Il est possible aussi dutiliser le caractre ! pour manipuler lhistorique :

!! Permet de rexcuter la dernire commande de lhistorique.
!ls Permet de rexcuter la dernire commande de lhistorique qui commence par ls
!nn (nn : nombre) nn-ime commande de lhistorique.
!-nn nn-ime commande partir de la fin
!?fn? commande de lhistorique qui contient le mot fn

La commande history permet dafficher le contenu de lhistorique.

history [nn] (nn : nombre de lignes partir de la fin]
exemple : history 20 affiche les 20 dernires lignes de lhistorique)
SYSTMES DEXPLOITATION LINUX


74
history | less affiche tout lhistorique

Chaque utilisateur possde son propre fichier historique qui est ~/.bash_history , quon peut afficher avec
la ligne de commande : less .bash_history.

Le nom du fichier historique, ainsi que sa taille et le nombre de lignes de commandes conserver peuvent
tre dfinis par lutilisateur, pour cela il existe les variables denvironnement :

HISTFILE, HISTSIZE et HISTFILESIZE.

Les variables

Une variable est une zone mmoire nomme dont le contenu est utilis soit dans une ligne de commande,
soit dans une programme shell (script).

Types de variables

Sous UNIX/LINUX on distingue 3 types de variables :

Les variables denvironnement (TERM, PATH, )
Les variables de position utilises comme paramtres dans des fonctions ou des scripts
Les variables dfinies par lutilisateur.
Les variables denvironnement

Principales caractristiques :

sont dfinies en majuscule
initialises dans les scripts de connexion
leurs noms ont une signification particulire pour le systme. (ne pas utiliser comme noms de
variables utilisateur)

Variables de positions

Ces des variables positionnelles prdfinies, sont utilises soit dans des fonctions ou des scripts.
Elles sont crites sous la forme $i ( i dsigne la position de largument sur la ligne de commande)

Liste des variables de position : $1 $9, $0, $*, $#, $@, $?, $$, $!

Exemple :

proc01 fic01 chaine1 lintrieur de proc01 : $1 reprsente fic01 et $2 reprsente chaine1

Les variables utilisateur

Lutilisateur peut dfinir autant de variables que ncessaire. Ces variables doivent tre en minuscule.

Manipulation des variables

Initialisation (ou affectation) :
SYSTMES DEXPLOITATION LINUX


75

nom_variable=valeur (attention ne pas laisser despace avant et aprs le signe gal (=))

La taille du nom dune variable est illimit, toute fois choisir des noms significatifs et ne pas utiliser les
caractres spciaux.

La valeur peut tre entre simple ou double quottes selon le cas.

Le contenu dune variable est une suite de caractres dont la taille est en fonction de la taille mmoire
disponible.

Accs une variable :

[commande] $nom_variable

exemple :

fichier=/etc/passwd
cat $fichier

f_in=/etc/passwd
f_out=password
cp $f_in $f_out
Une variable peut faire rfrence une autre variable

a=bonjour
b= "$a tout le monde"

Encadrement dune variable :

Pour dlimiter le nom dune variable par rapport aux autre caractres de la chane on encadre le nom de la
variable par des accolades {} .

Exemple :

deb=ceci est le dbut d
tout="${deb}e la ligne de test" donne la chane : ceci est le dbut de la ligne de test

Affiche du contenu dune variable :

La commande echo permet dafficher le contenu dune ou plusieurs variables

echo $var1 $ar2 .

(on peut aussi utiliser la commande printf )

Concatnation de variables :

On peut concatner plusieurs variables en une seule variable.

SYSTMES DEXPLOITATION LINUX


76
var1=cours
var2=linux
var3=$var1$var2

Dure de vie dune variable :

La dure de vie dune variable est la dure de la session. Si on veut rendre une variable permanente, il faut
la dfinir dans un des fichiers de dmarrage de la session : ~/.bash_profile ou ~/.profile

Suppression dune variable :

La commande unset permet de supprimer une variable.

unset nom_variable

Affichage de la liste des variables et de leurs contenus

Lune des trois commandes suivantes : set , env et declare permet dafficher la liste et le
contenu des variables existantes.

Porte des variables :

La porte dune variable signifie son identification par tous les processus (programmes) lanc par
lutilisateur.

Une variable est dite locale si elle nest reconnue uniquement que par le programme qui la dfinie.

Une variable est dite globale si elle reconnue par tous les programmes lancs par lutilisateur.

La commande export permet de rendre une variable globale.

Protection dune variable contre la modification :

La commande readonly permet de protger une variable contre la modification.

Saisie dans une variable :

La commande read permet de saisir dans une variable (la variable na besoin dtre dfinie)

read var1 var2 var3

Noter que si le nombre de chanes introduites est suprieur au nombre de variables, la dernire variable
prend tout le reste, par contre si le nombre est plus petit, il y aura des variables vides.

Les tches de fond (processus en backgroud)

UNIX/LINUX est un systme dexploitation Multi-Utilisateurs et multi-tches.
Tout utilisateur peut raliser le multi-tches son niveau.

SYSTMES DEXPLOITATION LINUX


77
Le lancement dun programme en parallle peut tre fait en utilisant le caractre & en fin de ligne de
commande.

Lutilisation du multi-tches est intressant pour lancer des travaux qui demande beaucoup de temps ou
programme boucle indfinie, ceci permettra lutilisateur de continuer de travailler (libration du
terminal)

Exemple :

find / -name "a*" > liste_a 2>/dev/null &

Remarques importantes :

Utiliser les redirections pour les tches de fond.
Une tache de fond est arrter lors de larrt de la session (sauf si on indique au systme quon
veut que la tche continue de sexcuter (commande nohup ))

La commande echo

La commande echo permet dafficher une ligne de texte.

Syntaxe :

echo [-ne] [message ...]

echo crit chaque message sur la sortie standard, avec un espace entre chacun d'eux, et un saut de ligne
aprs le dernier.

Options :

-n Ne pas effectuer le saut de ligne final.

-e Interprter les squences de caractres prcdes d'un backslash '\' suivantes :

\a alerte (sonnerie) (beep)
\b retour en arrire d'un caractre
\c supprimer le saut de ligne final
\f saut de page
\n saut de ligne
\r retour chariot
\t tabulation horizontale
\v tabulation verticale
\\ backslash
\nnn le caractre de code ASCII nnn (en octal)

Exemple :

echo -e "\n\n Cours dexploitation UNIX/LINUX \n\n"

SYSTMES DEXPLOITATION LINUX


78
La compltation des noms de fichiers

Pour complter automatiquement les noms de fichiers , on utilise la touche <TAB>.

Exemples :

1. Pour lancer l'interface graphique Xwindows (commande startx & ), on tape sta<TAB>.
2. Pour lister un fichier more fic<TAB>.

Si videmment il ny a quun seul nom qui correspond.

Si plusieurs possibilits existent, et pour viter toute ambigut on utilisera deux fois la touche <TAB>.

Exemples :

cp fic<tab><tab> donne la liste de tous les fichiers qui commencent par fic

d<ta><tab> donne la liste de toutes les commandes qui commencent par d

<tab><tab> donne le nombre de commandes de LINUX.


Substitution de commande

La substitution de commande permet daffecter le rsultat dune commande une variable.

Pour raliser cette opration, sous bash, il y a deux (02) moyens pour le faire :

les quottes inverses ( ``)
le signe du dollar ($)

Exemples :

v_liste_a=`ls a*` ou v_liste_a=$(ls a*)
echo $v_liste_a

echo Date du jour $(date) qui est diffrent de : echo Date du jour $(date)

Il est possible davoir plusieurs niveau de substitution de commande.

Exemples :

message=$(echo "Date du jour : $(date)"
echo $message

Gestion des commandes

Le shell accepte la combinaison des commandes de diverses manires.

SYSTMES DEXPLOITATION LINUX


79
o les pipes (ou tubes)
o regroupement de commandes ou liste de commandes
o commandes conditionnelles
o les fonctions

Excution sequentielle :

Sous le shell on peut aligner plusieurs commandes les unes la suite des autres, il suffit de les spares par
des points virgule ; .

Exemples :

who ; date ; ls

Excution conditionnelle de commandes ( ou tubes conditionnels):

Il existe deux oprateurs denchanement conditionnel des tubes :

- && oprateur logique qui signifie si vrai
- || oprateur logique qui signifie sinon


Exemples :

cat fic01 && cp fic01 fic02

La commande de copie nest excute que si le fichier fic01 existe.

cat fic03_bis || mv fic03 fic03_bis

Il ny a changement de nom que si fic03_bis nexiste pas

On peut combiner les oprateurs logiques && et || , en utilisant les () si ncessaire pour encadrer
les expressions logiques.

Groupement de liste de commandes:

Deux formes dutilisation :

o utilisation des accolades {}
o utilisation des parenthses ()

Utilisation des accolades :

{ cde1; cde2; cde3; ;}

Cette forme dutilisation ne cre pas de processus fils.

Exemples :

SYSTMES DEXPLOITATION LINUX


80
{ who; exit;} ce regroupement met fin la session

{who; date; ls;} > listing

Utilisation des parenthses :

(cde1; cd2; cde3)

Cette forme dutilisation cre un processus fils

Exemples :

( who; exit) ce regroupement ne met pas fin la session

pwd
(cd /etc; ls l passwd)
pwd

Les fonctions:

Les fonctions sont des facilits pour dfinir des groupes de commandes directement lintrieur du shell
comme une variable. Lexcution dune fonction est plus rapide quune procdure.
Comme une variable, une fonction a un nom et sa dure de vie est la dure de la session, sauf si elle est
dfinie dans un des fichiers dinitialisation de dmarrage de session.

Syntaxe de dclaration dune fonction :

nom() { liste;} (laisser un blanc aprs la premire accolade.

Exemple :

ll() { ls l | less;}

Lappelle de cette fonction se fera par son nom :

ll

On peut dans une fonction utiliser les paramtres de position ($1 $9)

Attention : ne jamais utiliser le nom dune commandes comme nom de fonction.

On peut dfinir des fonctions rcursives.
SYSTMES DEXPLOITATION LINUX


81
VII LES FILTRES


Un filtre est une commande qui effectue un traitement sur des fichiers contenant du texte. Le rsultat du filtre
galement du texte, est affich sur la sortie standard. La combinaison de plusieurs commandes filtre ( pipes
et redirections) permet de dfinir de nouveaux filtres.

Quelques dfinitions

Fichier texte = { lignes }
Une Ligne = { caractres } + retour chariot ( valeur octale = 12)
Une Ligne = { champs }
Un sparateur dlimite les champs.
Chaque commande UNIX utilise un sparateur par dfaut, en gnral c'est la tabulation ou le blanc.

La commande cut

Permet d'extraire une partie de chaque ligne d'un fichier texte.
L'extraction peut tre faite au niveau caractre ou au niveau champs.

Syntaxe:

1) Slection au niveau caractre de chaque ligne du fichier spcifi

cut -cliste_caractere --output-delimiter=chaine [fichier...]

liste_caractere peut tre dfinie comme suit : cdeb
1
-fin
1
,deb
2
-fin
2
,pos
1
,,deb
n
-fin
n


deb
i
-fin
i
: suite de caractres, si fin
i
est omis, il y a extraction jusqu la fin de la ligne
si deb
i
est omis, il y a extraction du dbut de la ligne jusqu' fin
i

pos
i
: reprsente un seul caractre dfini par sa position dans la ligne.

Chane peut tre un seul caractre ou une suite de caractres de la ligne.

--output-delimiter=chaine : permet de dfinir un sparateur (de plusieurs caractres) en sortie entre les
chanes ( ou champs) extraites.

Exemples :

cut -c1-10 fichier ou cut -c-10 extraction du 1
er
caractre au 10
me
.

cut -c1-10,5,15-20,30- de 1 10 , 5 , de 15 20 et 30 la fin de ligne

2) Slection au niveau champs

cut -fliste_champs [-d sparateur] [-s] --output-delimiter=chaine [fichier(s)]

Extraction des champs indiqus dans la liste_champs. Les champs sont spars, par dfaut, par une
Tabulation. (Le principe de dfinition des champs est le mme que pour liste_caractrere)
SYSTMES DEXPLOITATION LINUX


82

L'option -d, permet de dfinir un sparateur autre que la Tabulation.
Si le sparateur est un espace le dfinir entre quottes.

Exemples :

cut -f1 -d: /etc/passwd : extrait le champs nom utilisateur du fichier passwd
cut -f1,5 -d" " fichier : Extrait le champs 1 et 5 avec comme sparateur l'espace.

cut -f1,2 -d: --output-delimiter="" /etc/passwd
cut -f1,2 -d: --output="" /etc/passwd (donne le mme rsultat)

La commande wc

Comptage de mots (word count).
Affiche le nombre d'octets, de mots et de lignes d'un fichier.

Syntaxe :

wc [-clwL] [ fichier(s) ]

Options :

-c Afficher uniquement le nombre d'octets.
-w Afficher uniquement le nombre de mots
-l Afficher uniquement le nombre de sauts de lignes
-L Affiche la taille de la plus grande ligne du fichier.

Si plusieurs fichiers sont mentionns, wc ajoute une ligne finale de statistiques, contenant le cumul les
valeurs, prcd du nom `total'. Les statistiques sont affiches dans l'ordre suivant : nombre de lignes, de
mots, et d'octets. Par dfaut wc affiche les trois valeurs. Les options permettent de n'en afficher que
certaines d'entre elles.

Exemple :

who | wc l donne le nombre dutilisateurs connects
echo n | wc l donne la valeur zro (0)

La commande tr

Filtre de traduction (translation) des caractres d'un fichier. Permet aussi d'liminer des caractres.

tr copie son entre standard sur sa sortie standard en effectuant l'une des manipulations suivantes :

Transposer, et ventuellement runir les caractres dupliqus de la chane rsultante.
Runir les caractres dupliqus ( ramener une seule occurrence)
Supprimer des caractres

Syntaxe :

SYSTMES DEXPLOITATION LINUX


83
1) Translation des caractres

tr chane_1 chane_2

Lit l'entre standard et pour chaque caractre de chaine_1 le remplace par le caractriser correspondant de
chaine_2

Exemple :

tr abcdefg 1234567 : Remplacement de : a 1, b 2, ... g 7

Si taille(chaine_2) < taille(chaine_2) , les caractres de chaine_1 qui n'ont pas de correspondant seront
remplaces par le dernier caractre de chaine_1.

Exemple :

tr abcd 12 < fichier : a 1, b 2, c 2, d 2
tr abcdefg 1 < fichier: tous les caractres de chaine_1 seront remplaces par 1

2) Suppression de caractres

tr -d chane_1

tr supprime tous les caractres de lentre standard qui sont dfinies dans chaine_1

Exemple :

tr d xyz < fichier Supprime les x,y et z du fichier spcifi. Rsultat sortie standard.

3) Ramener une seule occurrence, une suite du mme caractre.

tr -s chane_1

Exemple :

tr s \012 < fichier Suppression des lignes vides.
tr s abcdefg Ramne une seule occurrence les letters abcdefg

4) Complment (par rapport la table ascii)

tr -dc chane_1
tr -cs chane_1
tr c chaine_1 chaine_2

Traite tous les caractres de la table ascii sauf ceux dfinis dans chaine_1

Exemple : tr -cd [a-zA-Z]\012 suppression de tous les caractres autre que lalphabet et la fin de
ligne.

Utilisation des ensembles de caractres (identique aux expressions rgulires).
SYSTMES DEXPLOITATION LINUX


84

Chane_1 et chane_2 peuvent tre dfinies comme les expressions rgulires, cest dire une liste de
caractres.

- Squences avec BackSlash.

\a Controle-G.
\b Controle-H.
\f Controle-L.
\n Controle-J.
\r Controle-M.
\t Controle-I.
\v Controle-K.
\ooo Le caractre de valeur octale ooo, s'tendant sur 1 3 chiffres.
\\ BackSlash.

- Intervalles.

[m1-n1m2-n2] `m-n' reprsente tous les caractres compris entre m et n, en ordre croissant. m
doit tre infrieur n, sinon une erreur se produit. Par exemple, `[0-9]' est quivalent `0123456789'.

- Rptition de caractres.

La notation `[c*n]' dans chane_2 se dveloppe en n copies du caractre c.
`[y*6]' est quivalent `yyyyyy'.
La notation `[c*]' dans chane_2 se dveloppe en autant de copie de c que le nombre de caractres
que chaine_1.

- Classes de caractres.

La notation [:nom-classe:] correspond l'ensemble de tous les caractres appartenant une classe
prdfinie. Les classes suivantes peuvent tre utilises :

alnum Lettres et chiffres.
alpha Lettres.
blank Espaces blancs horizontaux.
cntrl caractres de controles.
digit Chiffres.
graph caractres imprimables, sauf l'espace.
lower Lettres minuscules.
print caractres imprimables, y compris l'espace.
punct caractres de ponctuation.
space Espaces blancs horizontaux ou verticaux.
upper Lettres majuscules.
xdigit Chiffres hxa-dcimaux.

Un usage classique de tr est la conversions de minuscules en majuscules.

Exemples :

SYSTMES DEXPLOITATION LINUX


85
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
tr a-z A-Z
tr '[:lower:]' '[:upper:]'

Une utilisation pratique pour nous est la suppression des accents d'un texte.

tr "" "aceeeeiioouuACEEEEIIOOUU"

Quelques exemples destins illustrer diverses combinaisons des options :

Supprimer les octets nuls : tr -d '\000'

Afficher chaque mot sur une ligne indpendante. Ceci convertit tous les caractres non alphanumriques en
sauts de lignes, puis regroupe les lignes blanches successives en un seul saut de ligne :

tr -cs '[a-zA-Z0-9]' '[\n*]'

Convertir les squences de sauts de lignes en un seul saut de ligne (ceci supprime les lignes blanches) :

tr -s '\n'

La commande nl

Numroter les lignes d'un fichier.

Syntaxe :

nl [-h type_en_tte] [-b type_corps] [-f type_pied_page] [-p] [-d cc] [-v numro_dpart] [-i incrment]
[-l lignes] [-s sparateur_lignes] [-w largeur_numros] [-n{ln,rn,rz}] [--header-numbering=style] [--
body-number-ing=style] [--footer-numbering=style] [--first-page=nombre]
[--page-increment=nombre][--no-renumber][--join-blank-lines=nombre] [--number-separator=chane]
[--number-width=nombre] [--number-format={ln,rn,rz}] [--section-delimiter=cc] [--help] [--version]
[fichier(s)]

Description :

nl copie les fichiers indiqus sur la sortie standard en ajoutant des numros toutes les lignes, ou
certaines d'entre-elles. Si aucun nom de fichier n'est fourni, ou si le nom `-' est mentionn, l'entre standard
sera copie.
nl considre que ses entres sont composes de pages. Par dfaut, le numro de ligne est rinitialis 1
au dbut de chaque page. nl traite tous ses fichiers d'entre comme un unique document. Il ne rinitialise
pas les numros de ligne ou de page entre les fichiers.
Une page est compose de 3 sections : un en-tte, un corps, et un pied de page. Chacune de ces sections
peut ventuellement tre vide. Chacune peut galement tre numrote de manire diffrente des autres. Le
dbut des sections de chaque page est indiqu dans le fichier d'entre par une ligne ne contenant qu'une
chane de dlimitation comme suit :

\:\:\: dbut de l'en-tte
\:\: dbut du corps de la page
\: dbut du pied de page
SYSTMES DEXPLOITATION LINUX


86

Les deux caractres utiliss pour ces chanes peuvent tre modifis par une option indique plus bas, mais
l'organisation et la longueur des chanes sont figes. Les chanes de dlimitation des sections sont
remplaces par des lignes vides en sortie. Tout texte rencontr avant le dlimiteur de dbut d'entte est
considr comme appartenant au corps de la page. Ainsi, un texte ne contenant aucun dlimiteur sera
considr comme une unique section "corps de page".

Options:

-h, --header-numbering=style (voir --footer-numbering.)
-b, --body-numbering=style (voir --footer-numbering.)
-f, --footer-numbering=style : Choisit le type de numrotation pour les lignes de la section "pied-de-page"
de chaque page logique. Quand une ligne n'est pas numrote, le numro de ligne n'est pas incrment,
mais le caractre sparateur de numro de ligne est quand mme ajout celle-ci. Les styles possibles sont :

a numroter toutes les lignes
t ne numroter que les lignes non-vide (comportement par dfaut pour le corps de page)
n ne pas numroter les lignes (comportement par dfaut pour les en-ttes et les pieds de page)
pregexp ne numroter que les lignes contenant une correspondance avec l'expression rgulire
regexp
-p, --no-renumber : Ne pas rinitialiser la numrotation en dbut de page
-v, --first-page=valeur : Dmarrer en dbut de page la numrotation la valeur indique (par dfaut:1).
-i, --page-increment=valeur : Incrmenter les numros de ligne de la valeur indique (par dfaut 1).
-l, --join-blank-lines=nombre Considrer que nombre (par dfaut 1) lignes vides conscutives reprsentent
une seule ligne logique pour la numrotation. Seule la dernire ligne sera numrote. Quand il y a moins
de nombre lignes vides conscutives, ne pas les numroter. Une ligne vide ne doit contenir aucun caractre,
pas mme d'espaces ou de tabulations.
-s, --number-separator=chane : Sparer, en sortie, le numro de ligne et le texte de celle-ci avec la chane
mentionne (Par dfaut, il s'agit du caractre Tabulation).
-w, --number-width=largeur : Formater le numro de ligne avec la largeur indique (par dfaut 6 caractres).
-n, --number-format={ln,rn,rz} : Slection du format de numrotation des lignes :

ln align gauche, pas de 0 en dbut de nombre.
rn align droite, pas de 0 en dbut de nombre (attitude par dfaut).
rz align droite, complt gauche par des 0.

-d, --section-delimiter=cc : Utiliser les deux caractres cc mentionns ici pour les indicateurs de dbut de
sections. Si un seul caractre est fourni, le second conserve la valeur ':'. Pour saisir '\', utiliser '\\'.

--help Afficher un message d'aide sur la sortie standard et terminer normalement.
--version : Afficher un numro de version sur la sortie standard et terminer normalement.


Exemples :

Les exemples suivants traitent le fichier /etc/passwd

Contenu du fichier (quelques lignes)

root:x:0:0:root:/root:/bin/bash
SYSTMES DEXPLOITATION LINUX


87
bin:x:1:1:bin:/bin:
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
operator:x:11:0:operator:/root:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
linux2:x:500:500:Cours Linux:/home/linux2:/bin/bash
linux1:x:501:501:Cours Linux:/home/linux1:/bin/bash
trav:x:503:503::/home/trav:/bin/bash
linux3:x:504:505::/home/linux3:/bin/bash

1) Exemple 1 : Slection des lignes numroter (option b), motif en dbut de ligne.

nl -s" --> " -v10 -i10 -w4 -nrz -b p"^linux\|^root" /etc/passwd

0010 --> root:x:0:0:root:/root:/bin/bash
ftp:x:14:50:FTP User:/var/ftp:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
0020 --> linux2:x:500:500:Cours Linux:/home/linux2:/bin/bash
0030 --> linux1:x:501:501:Cours Linux:/home/linux1:/bin/bash
trav:x:503:503::/home/trav:/bin/bash
0040 --> linux3:x:504:505::/home/linux3:/bin/bash

2) Exemple 2 : Slection des lignes numroter (option b), motif dans la ligne.

nl -s" --> " -v10 -i10 -w4 -nrz -b p"linux\|root" /etc/passwd

0010 --> root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
uucp:x:10:14:uucp:/var/spool/uucp:
0020 --> operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
0030 --> linux2:x:500:500:Cours Linux:/home/linux2:/bin/bash
0040 --> linux1:x:501:501:Cours Linux:/home/linux1:/bin/bash
work:x:502:503::/home/work:/bin/bash
0050 --> linux3:x:504:505::/home/linux3:/bin/bash

La commande tail

Afficher la dernire partie d'un fichier.

Syntaxe :

tail [-c [+]N[bkm]] [-n [+]N] [-fqv] [--bytes=[+]N[bkm]] [--lines=[+]N] [--follow] [--quiet] [--silent] [--
verbose] [--help] [--version] [fichier...]

tail [{-,+}Nbcfklmqv] [fichier...]

Description

tail affiche la dernire partie (par dfaut : 10 lignes) de chacun des fichiers indiqus.
Si aucun fichier n'est fourni, ou si le nom `-' est mentionn, la lecture se fera depuis l'entre standard.
Si plusieurs fichiers sont fournis, un en-tte est affich avant chaque fichier contenant son nom encadr par
`==>' et `<=='.

SYSTMES DEXPLOITATION LINUX


88
Options :

tail accepte deux formats d'options diffrents. Le nouveau format dans lequel les nombres sont des
arguments prcds par les lettres reprsentant des options, et l'ancien format dans lequel un `+' ou un `-'
est suivi d'un nombre puis d'une lettre d'option.
Si un nombre (`N') est prcd de `+', tail commence l'affichage partir du Nime lment en partant
du dbut du fichier (au lieu de la fin).

-c N, --bytes N : Afficher N octets. N est un entier non nul, ventuellement suivi d'un caractre indiquant
une unit diffrente (b : blocs de 512 octets / k : blocs de 1 Ko / m : blocs de 1 Mo).

-f, --follow : Boucler indfiniment, en essayant de lire de plus en plus de caractres la fin du fichier, celui-
ci devant grandir. Cette option est ignore si la lecture se fait depuis un tube (pipe). Si plusieurs fichiers
d'entre sont indiqus tail affiche un entte ds qu'un fichier est modifi, pour montrer celui qui est imprim.

-l, -n N, --lines N Afficher N lignes. l n'est reconnu que dans l'ancien format d'options.

-q, --quiet, --silent : Ne jamais afficher l'en-tte avec le nom du fichier

-v, --verbose : Toujours afficher l'en-tte avec le nom du fichier

--help Afficher un message d'aide sur la sortie standard et terminer normalement.

--version : Afficher un numro de version sur la sortie standard et terminer normalement.

Exemples :

tail -5 /etc/passw (les 5 dernires lignes)
tail +5 /etc/passwd ( partir de la 5
me
ligne, jusqu' la fin de fichier)
tail 5 f fichier (affichage en continu des 5 dernires lignes du fichier dont la taille augmente.

La commande head

Afficher le dbut d'un fichier.

Syntaxe :

head [-c N[bkm]] [-n N] [-qv] [--bytes=N[bkm]] [--lines=N] [--quiet] [--silent] [--verbose]
[--help] [--version] [fichier...]

head [-Nbcklmqv] [fichier...]


Description

head affiche la premire partie (10 lignes par dfaut) de chacun des fichiers mentionns. La lecture se
fait sur l'entre standard si aucun fichier n'est indiqu, ou si le nom `-' est fourni.

Si plusieurs fichiers sont fournis, un en-tte est affich avant chacun d'eux, mentionnant le nom du fichier
entre `==>' et `<=='.
SYSTMES DEXPLOITATION LINUX


89

Options :

head accepte deux formats d'options : le nouveau o les nombres sont des arguments suivant les
options indiques par des lettres et l'ancien dans lequel les nombres prcdent les lettres d'option.

-c N, --bytes N : Afficher les N premiers octets. N est un entier non nul, suivi ventuellement d'une lettre
indiquant une unit diffrente de l'octet (b :Bloc de 512 octets / k :Bloc de 1 Ko / m :Bloc de 1 Mo).

-n N, --lines N : Afficher les N premires lignes.

-q, --quiet, --silent : Ne pas afficher les en-ttes mentionnant les noms de fichiers.

-v, --verbose : Toujours afficher les en-ttes mentionnant les noms de fichiers.

--help Afficher :un message d'aide sur la sortie standard et terminer normalement.

Exemples :

head 5 /etc/passwd
tail +5 /etc/passwd | head 5
i=10; tail +$i | head 1 (extraction de la 10
me
ligne)

La commande paste

Regrouper les lignes de diffrents fichiers.

Syntaxe :

paste [-s] [-d liste_dlimiteurs] [--serial] [--delimiters=liste_dlimiteurs] [--help] [--version]
[fichier...]

Description

paste affiche des lignes regroupant les lignes correspondantes de chaque fichier, spares par des
Tabulations, et termines par un Saut de Ligne (NewLine). Si aucun fichier n'est indiqu, ou si le nom `-' est
mentionn, la lecture se fait sur l'entre standard.

Options:

-s, --serial : Regrouper toutes les lignes d'un seul fichier la fois, plutt qu'une ligne de chaque fichier.

-d, --delimiters liste_delimiteurs : Utiliser successivement les caractres de la liste_de_dlimiteurs plutt que
les Tabulations pour sparer les lignes regroupes. Quand liste_dlimiteurs est puise, reprendre au dbut
de la liste.

--help : Afficher un message d'aide sur la sortie standard et terminer normalement.

--version : Afficher un numro de version sur la sortie standard et terminer normalement.

SYSTMES DEXPLOITATION LINUX


90
paste -s fic01 fic02 ( entrelacement des lignes de fic01 et des lignes de fic02)
ls | paste - - - - (affichage en plusieurs colonnes)
paste s d\t\n /etc/passwd (regroupement de deux lignes en 1 seule ligne)

La commande sort

Trier les lignes d'un fichier texte.

Syntaxe :

sort [-cmus] [-t sparateur] [-o fichier_de_sortie] [-T rpertoire_temporaire] [-bdfiMnr]
[+POS1 [-POS2]] [-k POS1[,POS2]] [fichier...]

sort {--help,--version}

Description

sort trie, regroupe ou compare toutes les lignes des fichiers indiqus. Si aucun fichier n'est fourni, ou
si le nom `-' est mentionn, la lecture se fera depuis l'entre standard.
Par dfaut, sort crit ses rsultats sur la sortie standard.

sort peut oprer suivant trois modes : tri (par dfaut), regroupement, et vrification de l'ordre.

Les options suivantes modifient le mode opratoire :

-c : Vrifie si les fichiers fournis sont dj tris : s'ils ne le sont pas, afficher un message d'erreur, et
terminer avec un code de retour valant 1.

-m : Regrouper les fichiers indiqus en les triant. Chaque fichier d'entre doit dj tre tri
individuellement. Il est toujours possible de trier plutt que de runir, le regroupement est fourni parce qu'il
est plus rapide dans les cas o il fonctionne.

Si l'une des options globales Mbdfinr est utilise, et si aucun champ cl n'est indiqu, sort compare les
lignes entires en fonction des options globales.

Finalement, si toutes les cls sont gales, en dernier ressort sort compare les lignes octet par octet suivant
l'ordre dfini sur la machine. Cette dernire comparaison accepte l'option globale -r. L'option -s (stable)
inhibe cette comparaison en dernier recours afin que les lignes considres comme gales restent leurs
positions relatives. Si aucun champ cl, et aucune option ne sont fournis, -s est sans effet. Si la
variable d'environnement TMPDIR est configure, sort utilise ce rpertoire pour stocker les fichiers
temporaires la place du rpertoire par dfaut /tmp. L'option -T rpertoire_temporaire permet galement de
slectionner un rpertoire pour placer les fichiers temporaires, elle a priorit sur la variable d'environnement.

Les options suivantes affectent l'ordre des lignes de sortie. Elles peuvent tre mentionnes globalement, ou
appliques un champ cl spcifique. Si aucun champ cl n'est indiqu, les options globales s'appliquent aux
comparaisons des lignes entires, sinon elles sont transmises aux champs cls n'ayant pas d'option spcifique.

-b : Ignorer les blancs en dbut de ligne (ou de champs) pendant la recherche de la cl de tri sur chaque
ligne.

SYSTMES DEXPLOITATION LINUX


91
-d : Trier dans l'ordre des rpertoires tlphoniques : ignorer pour le tri tous les caractres autres que les
lettres, les chiffres et les blancs.

-f : Considrer les minuscules comme leur quivalent en majuscule pendant le tri. Ainsi `b' est trie de
manire quivalente a `B'.

-i : Ignorer pour le tri les caractres en dehors de l'intervalle ASCII octal 040-0176 (bornes
comprises).

-M : Une chane initiale, consistant en un nombre quelconque de blancs, suivi de trois lettres correspondant
une abrviation de mois est convertie en majuscules avant d'tre compare dans l'ordre `JAN' <`FEB' <
... < `DEC.' Les noms invalides sont considres comme infrieurs aux noms valides.

-n : Comparer suivant la valeur arithmtique d'une chane numrique initiale compose d'espaces
ventuels, suivis optionnellement du signe -, et de zro ou plusieurs chiffres, ventuellement suivi d'un
point dcimal et de zro ou plusieurs chiffres.

-r : Inverser l'ordre de tri, afin que les lignes avec la plus grande valeur de cl apparaissent en premier.

-o fichier_de_sortie : crire dans le fichier_de_sortie plutt que sur la sortie standard. Si fichier_de_sortie
est galement un fichier d'entre, sort copie les donnes dans un fichier temporaire avant le tri pour
pouvoir crire correctement ses rsultats dans le fichier_de_sortie.

-t caractre_sparateur : Utiliser le caractre_sparateur afin de distinguer les champs pour rechercher la cl
de tri sur chaque ligne. Par dfaut le sparateur de champs est une chane blanche entre chanes non-
blanches. Ceci signifie qu'avec l'entre ` foo bar', sort distingue deux champs ` foo' et ` bar'. Le
sparateur n'appartient ni au champ prcdent, ni au champ suivant.

-u : Pour l'action par dfaut, ou pour l'action -m, n'afficher que la premire squence de lignes considres
comme gales. Pour l'action -c, vrifier qu'aucune lignes conscutives ne soient gales.

+POS1 [-POS2] : Indiquer un champ utiliser comme cl de tri pour chaque ligne. Le champ consiste en
une portion de ligne dbutant la position POS1, et s'tendant jusqu' POS2 non-incluse (ou jusqu' la fin
de la ligne si POS2 n'est pas mentionne). Les positions des champs et des caractres sont numrotes
partir de 0.

-k POS1[,POS2] : Une autre syntaxe possible pour indiquer les cls de tri. Les positions des champs et des
caractres sont numrotes partir de 1.

Une position est de la forme f.c , o f est le numro du champ utiliser, et c le numro du
premier caractre depuis le dbut du champ (avec +pos) ou depuis la fin du champ prcdent (avec
-pos). La partie .c de la position peut tre omise, auquel cas le caractre considr est le premier du
champ. Si l'option -b est choisie, la partie .c d'une spcification de champ est compte partir du premier
caractre non-blanc du champ (pour +pos) ou partir du premier caractre non-blanc suivant le champ
prcdent (pour -pos). Un argument +pos ou -pos peut galement avoir un prfixe constitu d'une des lettres
d'option Mbdfinr auquel cas les options globales ne s'appliquent pas ce champ. l'option -b peut tre
attache indpendamment aux parties +pos ou -pos d'une spcification de champ. Si elle est hrite d'une
option globale, elle s'appliquera aux deux parties. Si une option -n ou -M est utilise, ceci implique que
l'option -b s'applique aux deux spcifications +pos et -pos. Les cls peuvent s'tendre sur plusieurs
champs.
SYSTMES DEXPLOITATION LINUX


92

--help Afficher : Un message d'aide sur la sortie standard et terminer normalement.

--version : Afficher un numro de version sur la sortie standard et terminer normalement.

Exemples :

sort fichier (tri selon lordre de la table ascii)
sort f fichier (ne fait pas de difference entre majuscule et minuscule)
sort t : +6 /etc/paswd (tri sur le nom du programme excuter au login)
sort t : +6 +0 1 /etc/passwd (2 critres de tri)
echo e "FEB|nJAN" | sort -M

La commande uniq

liminer les lignes dupliques dans un fichier tri.

Syntaxe :

uniq [-cdu] [-f nb_champs] [-s nb_caractres] [-w nb_caractres] [-#nb_champs] [+#nb_caractres] [--
count] [--repeated] [--unique] [--skip-fields=nb_champs]
[--skip-chars=nb_caractres] [--check-chars=nb_caractres]
[--help] [--version] [fichier_entre] [fichier_sortie]

Description

uniq affiche les lignes uniques d'un fichier tri, ne conservant qu'un seul exemplaire de celles dupliques.
Il peut galement ne montrer que les lignes n'apparaissant qu'une seule fois, ou celles apparaissant plusieurs
fois. uniq na de sens que pour un fichier tri .

Si le fichier de sortie n'est pas mentionn, uniq crit sur la sortie standard. Si le fichier d'entre n'est
pas prcise non plus, uniq lit depuis l'entre standard.

Options :

-u, --unique : N'afficher que les lignes uniques.

-d, --repeated : N'afficher que les lignes dupliques.

-c, --count : Afficher galement le nombre d'occurrence de chaque ligne.

-nombre, -f, --skip-fields=nombre : Ignorer nombre champs avant de vrifier l'unicit. Les nombre
premiers champs, et tous les blancs qu'ils contiennent sont ignors. Les champs sont dfinis comme des
chanes de caractres non-blancs, spares par des espaces ou des tabulations.

+nombre, -s, --skip-chars=nombre : Ignorer nombre caractres avant de vrifier l'unicit. Si l'on utilise
conjointement cette option et l'option --skip-fileds, les champs sont sauts pralablement avant de sauter
les caractres.

SYSTMES DEXPLOITATION LINUX


93
-w, --check-chars=nombre : Ne comparer que nombre caractres de chaque ligne, aprs avoir
ventuellement saut les champs et les caractres indiqus.

--help : Afficher un message d'aide sur la sortie standard et terminer normalement.

--version : Afficher un numro de version sur la sortie standard et terminer normalement.

Exemple :

tr -d [ :punct :] texte | tr \012 | tr s \012 | sort | uniq (construction dun dictionnaire des mots
dun texte)

La commande look

Affiche les lignes qui commencent par la chane spcifie.

Syntaxe:

look [-dfa] [-t termchar] chane [fichier]

Description

look affiche les lignes du fichier qui contiennent la chane comme prfixe.

look na de sens que pour un fichier tri.

Si fichier nest pas spcifi, le fichier /usr/share/dict/words est utilis.

Options:

-d Comparaison selon lordre du dictionnaire.

-f Ne fait pas de diffrence entre majuscule et minuscule.

-a Utilise le dictionnaire /usr/share/dict/web2

Le fichier /usr/share/dict/words est un dictionnaire. Le fichier /usr/share/dict/web2 est aussi utilis.
Exemples :

look ampli (donne la liste des mots du dictionnaire par dfaut, qui commencent par ampli )
look ampli my_dict (recherche dans le dictionnaire spcifi)

La commande split

Dcouper un fichier en diffrentes partie (sous fichiers).

Syntaxe :

split [-lignes] [-l lignes] [-b nb_octets[bkm]] [-C nb_octets[bkm]] [--lines=lignes]
[--bytes=nb_octets[bkm]] [--line-bytes=nb_octets[bkm]] [--help] [--version]
SYSTMES DEXPLOITATION LINUX


94
[fichier_entre [prfixe_sortie]]

Description

split cre un ou plusieurs fichiers contenant les sections conscutives du fichier_d_entre.
Si aucun fichier n'est fourni, ou si le nom `-' est mentionn, la lecture se fait depuis l'entre standard.

Par dfaut, split copie 1000 lignes du fichier d'entre (ou ce qu'il en reste) dans chaque fichier de sortie.

Le nom des fichiers de sortie est compos d'un prfixe suivi d'un groupe de lettres, choisi de telle manire
que la concatnation des fichiers de sortie, tris suivant l'ordre alphabtique, restitue le fichier original.

Le prfixe par dfaut est `x'. Si l'argument prfixe_sortie est fourni, celui ci est utilis pour crer les noms
des fichiers de sortie.

Options :

-n, -l n, --lines=n : Copier n lignes du fichier d'entre dans chacun des fichiers de sortie.

-b n[bkm], --bytes=n[bkm] : Copier n octets du fichier d'entre dans chacun des fichiers de sortie. n doit tre
un entier non nul, ventuellement suivi d'un caractre prcisant une unit diffrente :
b : blocs de 512 octets / k : blocs de 1 Ko / m : blocs de 1 Mo)

-C n[bkm], --line-bytes=n[bkm] : Copier dans chaque fichier de sortie autant de lignes compltes que
possible, sans dpasser n octets au maximum. Si une ligne est plus longue que n octets, split
copiera n octets de la ligne dans chaque fichier jusqu' ce qu'il reste moins de n octets sur la ligne, puis
continuera normalement. n est indiqu avec le mme format que dans l'option --bytes.

--help Afficher un message d'aide sur la sortie standard et terminer normalement.

--version : Afficher un numro de version sur la sortie standard et terminer normalement.

Exemples :

wc l gros_fichier (donne 2500 lignes)
split gros_fichier (donne les fichier xaa : 1000 lignes, xab : 1000 lignes et xac : 500 lignes)

La commande diff

Trouver les diffrences entre des fichiers.

Syntaxe :

diff [options] source cible

Description

Dans le cas le plus simple, diff compare le contenu du fichier source et celui du fichier cible. Un nom de
fichier remplac par un tiret - correspond la lecture depuis l'entre standard. Un cas particulier est
reprsent par "diff --" qui compare une copie de l'entre standard avec elle-mme.
SYSTMES DEXPLOITATION LINUX


95

Options :

-a : Traiter tous les fichiers comme du texte, et les comparer ligne--ligne, mme s'ils semblent contenir
des donnes binaires.
-b : Ne pas tenir compte des diffrences concernant des espaces blancs.

-B : Ne pas tenir compte des diffrences qui concernent des lignes blanches.

--brief : Indiquer seulement si les fichiers sont diffrents

-e --ed : Sortir un script valide pour ed.

-i : Ignore les diffrences entre majuscules et minuscules.

-q : Indiquer seulement si les fichiers sont diffrents.

-r Lorsque l'on compare des rpertoires, comparer galement tous les sous-rpertoires rcursivement.

-v --version : Afficher le numro de version de diff.

-w : Ignorer les espaces blancs lors de la comparaison de lignes.

Exemples :

diff fichier.new fichier.old
diff f1 f2 > /dev/null && echo fichiers identiques || echo fichiers diffrents

La commande cmp

Comparaison de deux fichiers.

Syntaxe :

cmp [-l | -s] file1 file2 [skip1 [skip2]]

Description

cmp compare deux fichiers quelconques. La comparaison se fait au niveau octet.

Options :

-l : Affiche le numro de loctet (en dcimal) et les contenus des octets diffrents ( en octal).
tal) for each difference.

-s : Donne uniquement le code retour

skip1 et skip2 : saut doctets pour file1 et file2.

cmp donne les codes retour suivant :
SYSTMES DEXPLOITATION LINUX


96

0 Fichiers identiques.

1 Fichiers diffrents.

>1 En cas derreur

Exemples :

cmp f1 f2
cmp s f1 f2 && echo fichiers identiques || echo fichiers diffrents

LES EXPRESSIONS RGULIRES

Une expression rgulire est un motif qui permet de dcrire un ensemble de chanes. Les expressions
rgulires sont construites comme des oprations arithmtiques, en utilisant des oprateurs divers pour
combiner des expressions plus petites.

Les briques lmentaires sont les expressions rgulires correspondant un simple caractre. La plupart des
caractres, y compris toutes les lettres et les chiffres, sont des expressions rgulires se correspondant
eux-mmes. Tout mta-caractre ayant une signification spciale doit tre protg en le faisant prcder
d'un BackSlash.

Une liste de caractres, encadre par [ et ] peut tre mise en correspondance avec n'importe quel
caractre unique appartenant la liste. Si le premier caractre de la liste est l'accent circonflexe ^ alors la
mise en correspondance se fait avec n'importe quel caractre absent de la liste. Par exemple, l'expression
rgulire [0123456789] convient pour n'importe quel chiffre unique. Un intervalle de caractres ASCII peut
tre indiqu en donnant le premier et le dernier caractre spars par un tiret.

Finalement il existe certaines classes de caractres prdfinies. Leurs noms sont assez explicites
[:alnum:], [:alpha:], [:cntrl:], [:digit:] (chiffres), [:graph:], [:lower:] (minuscules), [:print:]
(affichables), [:punct:], [:space:], [:upper:] (majuscules), et [:xdigit:] (chiffres hxadcimaux).

Par exemple, [[:alnum:]] correspond [0-9A-Za-z], la diffrence que le dernier dpend de l'encodage
ASCII, alors que le premier est plus portable. Remarquez que les crochets dans les noms de classes font
partie intgrante du nom symbolique, et qu'ils doivent donc tre inclus en plus des crochets encadrant la
liste. La plupart des mta-caractres perdent leurs significations spciales au sein des listes. Pour inclure un
] littral, mettez-le en premier dans la liste. De mme, pour inclure un ^ littral, placez-le n'importe ou sauf
au dbut de la liste. Enfin, pour inclure un - placez-le en dernier. Le point . correspond n'importe quel
caractre unique. Le symbole \w est un synonyme de [[:alnum:]] et \W un synonyme de [^[:alnum]].

L'accent circonflexe ^ et le symbole dollar $ sont des mta-caratres correspondant respectivement une
chane vide au dbut et en fin de ligne. Les symboles \< et \> correspondent respectivement une chane
vide en dbut et en fin de mot. Le symbole \b correspond une chane vide l'extrmit d'un mot, et \B
correspond une chane vide ne se trouvant pas une extrmit de mot.

Une expression rgulire correspondant un caractre unique peut tre suivie par lun des oprateurs de
rptition suivants :

? L'lment prcdent est facultatif et doit tre mis en correspondance une fois au maximum.
SYSTMES DEXPLOITATION LINUX


97
* L'lment prcdent doit tre mis en correspondance zro ou plusieurs fois.
+ L'lment prcdent doit tre mis en correspondance au moins une fois.
{n} L'lment prcdent doit tre mis en correspondance exactement n fois.
{n,} L'lment prcdent doit tre mis en correspondance n fois ou plus.
{,m} L'lment prcdent est facultatif et doit tre mis en correspondance m fois au plus.
{n,m} L'lment prcdent doit tre mis en correspondance au moins n fois, mais au plus m fois.

Deux expressions rgulires peuvent tre juxtaposes, l'expression en rsultant correspondra toute
chane forme par la juxtaposition de deux sous-chanes correspondant respectivement aux deux sous-
expression.

Deux expressions rgulires peuvent tre relies par l'oprateur infixe |; l'expression rsultante
correspondra toute chane correspondant l'une ou l'autre des deux sous-expressions.

Les rptitions ont priorit sur les juxtapositions, qui leur tour ont priorit sur les alternatives. Une sous-
expression peut tre entoure par des parenthses pour modifier ces rgles de prcdence.

La rfrence inverse \n, ou n est un chiffre, correspond la sous-chane dj mise en correspondance avec la
nime sous-expression rgulire entre parenthses.

Dans les expressions rgulires simples, les mta-caractres ?, +, {, |, (, et ) perdent leurs significations
spciales, il faut utiliser la place leurs versions avec BackSlash \?, \+, \{, \|, \(, et \).

La commande grep

Affiche les lignes correspondant un motif donn.

Syntaxe :

grep [ -[[AB] ]num ] [ -[CEFGVBchilnsvwx] ] [ -e ] motif | -ffichier ] [ fichiers... ]

Description

grep recherche dans les fichiers d'entre indiqus les lignes correspondant un certain motif.

Si aucun fichier n'est fourni, ou si le nom `-' est mentionn, la lecture se fait depuis l'entre standard.

Par dfaut, grep affiche les lignes correspondant au motif.

Il existe trois variantes principales de grep, contrles par les options suivantes.

-G : Interprte le motif comme une expression rgulire simple (voir plus bas). C'est le comportement
par dfaut.

-E : Interprte le motif comme une expression rgulire tendue (voir plus bas).

-F : Interprte le motif comme une liste de chanes figes, spares par des Sauts de Lignes
(NewLine).La correspondance est faite avec n'importe laquelle de ces chanes.

SYSTMES DEXPLOITATION LINUX


98
De plus, il existe deux variantes du programme : egrep et fgrep. egrep est similaire (sans tre identique)
grep -E, fgrep est identique grep -F.

Toutes les variantes de grep acceptent les options suivantes :

-num :Les correspondances seront affiches avec num lignes supplmentaires avant et aprs. Nanmoins,
grep n'affichera jamais une ligne plus d'une fois.

-A num : Afficher num lignes supplmentaires aprs la ligne correspondante.

-B num : Afficher num lignes supplmentaires avant la ligne correspondante.

-C est quivalent -2.

-V Afficher le numro de version de grep sur la sortie d'erreur standard.

-b Avant chaque ligne, afficher son dcalage (en octet) au sein du fichier d'entre.

-c Ne pas afficher les rsultats normaux. A la place, afficher un compte des lignes correspondantes pour
chaque fichier d'entre. Avec l'option -v (voir plus bas), afficher les nombres de lignes ne
correspondant pas au motif.

-e motif : Utiliser le motif indiqu. Ceci permet de protger les motifs commenant par -.

-f fichier : Lire le motif dans le fichier indiqu.

-h Ne pas afficher le nom des fichiers dans les rsultats lorsque plusieurs fichiers sont parcourus.

-i Ignorer les diffrences majuscules/minuscules aussi bien dans le motif que dans les fichiers d'entre.

-L Ne pas afficher les rsultats normaux. A la place, indiquer le nom des fichiers pour lesquels aucun
rsultat n'aurait t affich.

-l Ne pas afficher les rsultats normaux. A la place, indiquer le nom des fichiers pour lesquels des
rsultats auraient t affiches.

-n Ajouter chaque ligne de sortie un prfixe contenant son numro dans le fichier d'entre.

-q Silence. Ne pas afficher les rsultats normaux.

-s Ne pas afficher les messages d'erreurs concernant les fichiers inexistants ou illisibles.

-v Inverser la mise en correspondance, pour slectionner les lignes ne correspondant pas au motif.

-w Ne slectionner que les lignes contenant une correspondance formant un mot complet. La sous-
chane correspondante doit donc tre soit au dbut de la ligne, soit prcde d'un caractre n'appartenant
pas un mot. De mme elle doit se trouver soit la fin de la ligne, soit tre suivie par un caractre
n'appartenant pas un mot. Les caractres composants les mots sont les lettres, les chiffres et le soulign
(`_').

SYSTMES DEXPLOITATION LINUX


99
-x Ne slectionner que les correspondances qui occupent une ligne entire.

Dans egrep le mta-caractre { perd sa signification spciale, il faut utiliser \{ la place.

Tableau rcapitulatif des expressions rgulires pour la commande grep

Symbole Action Exemple/Observation
.
Nimporte quel caractre de la table ASCII ^.$ 1 ligne qui ne contient que 4 car.
*
Facteur de rptition du caractre prcdent
(0 n)
a*s s, as , aas, aaas,
^
Dbut de ligne ^abc : Recherche en dbut de chaque
ligne du fichier de la chane abc
$
Fin de ligne abc$ : Recherche en fin de chaque ligne
du fichier de la chane abc
\
Protection des mta caractres \.abc : Recherche dans chaque ligne du
fichier de la chane .abc
[ ]
Intervalle de caractres [a-z]
[\037-\100]
[^]
Complment par rapport la table ASCII [^a-z] : autre que minuscule
\{m,n\}
Occurrence du caractre prcdent a\{5\} : aaaaa
^.\{5,7\}$ : 5 7 caractres dans chaque
ligne
^.\{5,\}$ : au moins 5 caractres
^.\{,7\}$ : au plus 7 caractres
+
Facteur de rptition du caractre prcdent
(1 n)
a+s as , aas, aaas,
grep E ou egrep
?
Prsence ou absence du motif prcdent a?s : s,as
grep E ou egrep
( )
Permet de dfinir un ensemble de motifs
spars par le signe |
(a|b|c) : soit a,b ou c
(mot1 mot2|unix|linux)
grep E ou egrep

( )?
Prsence ou absence dun ensemble de
motifs
(a|b|c)?
\< \>
Recherche dun mot bien prcis \<pas\> : mot pas
\n
(1 9)
Rappel dun motif dj dfini dans la liste
Le motif doit tre entre parenthse
((a)|(b)|(c)|\1) : \1 reprsente le motif
b

Exemples supplmentaires :

ls | grep "^.\{3,5\}$" quivalent : ls ???{,?,??}

"a(n)? (simple|easy)? ?problem "
"[Ll]ab(oratorie)?s"
"C (user|programmer)(s)? guide"

"80[234]?86"
"trava(il|ux)"
"[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}" nnn-nnn-nnnn ( 514-123-1234)
SYSTMES DEXPLOITATION LINUX


100

"^[^ :]* :[^ :]* :$1:" /etc/passwd permet de slectionner le UID dun utilisateur

SYSTMES DEXPLOITATION LINUX


101
VIII LES DITEURS DE TEXTE

Les diteurs de texte on pour fonctions :

- la cration dun texte dans un fichier
- la modification et la mise jour dun texte existant.

Linux dispose de plusieurs utilitaires permettant de traiter des fichiers texte. Parmi ces utilitaires, il y a les
diteurs de fichiers texte tel que : ed, ex, sed , vi , pico et emacs

Nous pouvons classer ces diteurs en deux catgories :

- les diteurs lignes : ed, ex
- les filtres-diteurs : sed
- les diteurs pages : vi, pico et emacs

Sous linterface graphique, il y a dautres diteurs.

Les diteurs lignes

Ce sont des diteurs conversationnels, orients vers le traitement dune ou plusieurs lignes par commande.

La forme gnrale dune commande (instruction) ed

[n1[,n2]]commande [paramtres de la commande]

ed est lditeur lignes standard dUNIX.
ed peut tre utiliser de deux manires :

- en conversationnel
- en procdure de commandes (filtre-diteur)

ed utilise les expressions rgulires.

Lappel de ed se fait de la manire suivante : ed [fichier] en conversationnel
ed fichier < fichier_procdures en mode procdure
Exemples dutilisation

1) Conversationnel (affichage du contenu dun fichier)

ed /etc/passwd
1,$p
q

2) Procdure de commandes (affichage du contenu dun fichier)

echo 1,$p > ed_proc01
ed - /etc/passwd < ed_proc01
3) ed fichier << endp
SYSTMES DEXPLOITATION LINUX


102
g/pat1/s//site1/g
g/pat2/s//site2/g
w
endp

Le filtre-diteur sed

sed (stream editor) est un filtre programmable. Il est surtout utilis pour les gros fichiers.
sed dispose de la plupart des commandes de lditeur ed .
sed utilise les expressions rgulires

Deux manires dutilisation :

1) Plusieurs instructions sur la ligne de commandes
2) Utilisation dun fichier de commandes (programme sed )

Syntaxe:

1) sed [-n ] -e instruction1 e instruction2 [fichier]
2) sed [-n ] f programme_sed [fichier]

La forme gnrale dune commande (instruction) sed

[n1][,n2][!]commande [paramtres de la commande]

(le ! est utilis pour la ngation, toutes les lignes autre que : adresses ou motif)

Exemples :

1) sed e s/le/LE/g e s/filter/programme/g fichier : remplacement de le par LE dans tout le
fichier.

2) cat > proc01 <<endp
s/le/LE/g
s/filtre/programme
endp
sed f proc01 fichier

3) sed -n 1,$p /etc/passwd (affichage du contenu du fichier spcifi)

4) cat > fic01 << fintxt
Le cours unix se droule dans la salle 410
Il y a 15 tudiants qui suivent le cours unix
fintxt

sed s/unix/UNIX//LINUX/g fic01 > ficout
mv ficout fic01
cat fic01

SYSTMES DEXPLOITATION LINUX


103
Commandes sed

Insertion de lignes avant : [adr]i : insertion de texte avant la ligne spcifie par adr

Si adr = 1 1
re
ligne
Si adr = $ dernire ligne
Si adr = /chane/ avant la ligne qui contient chane

Insertion de lignes aprs : [adr]a : insertion de texte aprs la ligne spcifie par adr

Exemples :

1) cat > proc02 << endp
2i
nouveau texte 1 avant ligne 2\
nouveau texte 2 avant ligne 2
endp
sed f proc02 fichier

2) cat > proc03 << endp
/410/a
nouveau texte 1 aprs ligne qui contient 410 \
nouveau texte 2 aprs ligne qui contient 410
endp
sed f proc03 fichier

Changement de lignes : [adr1,adr2]c : change les lignes entre adr1 et adr2 par les lignes qui suivent.

Exemple :

1) cat > proc04 << endp
2c
nouveau texte 1 la place de ligne 2\
nouveau texte 2 la place de ligne 2
endp
sed f proc04 fichier

Suppression de lignes : [adr1,adr2]d : supprime les lignes entre adr1 et adr2 .

Exemple :

sed 1,10d fichier : suppression de la ligne 1 10


Affichage de lignes : [adr1,adr2]p : affiche les lignes entre adr1 et adr2 .
( Utiliser loption n de sed pour ne pas dupliquer les lignes en sortie)


Exemple :

SYSTMES DEXPLOITATION LINUX


104
sed -n 1,10p fichier : affichage de la ligne 1 10
sed -n 1,$p fichier : affichage de tout le fichier
sed -n /410/p fichier : naffichage que les lignes qui contiennent 410

Remplacement de chanes : [adr1,adr2]s/chaine1/chaine2/[g] : remplace chaine1 par chaine2 entre
adr1 et adr2 .
( Utiliser loption n de sed pour la commande de remplacement)
[g] : pour remplacer toutes les occurrences de la ligne

Exemples :

sed -n 1,10s/unix/UNIX/g fichier : replacement entre la ligne 1 10
sed -n 1,$s/unix/UNIX/g fichier : replacement dans tout le fichier
sed -n /410/s/unix/UNIX/g fichier : replacement dans les lignes qui contiennent 410

Utilisation des expressions rgulires :

sed reconnat les expressions rgulires. (Voir le chapitre expressions rgulires )

Exemples :

sed n /^ro/p /etc/passwd : Affiche les lignes qui commencent par ro
sed n /bash$/p /etc/passwd : Affiche les lignes qui se terminent par bash
sed s/^/ligne :/ fichier : Ajoute ligne : en dbut de chaque ligne

nl /etc/passwd > password
sed s/^[ ]*[0-9][0-9]*[ ]*// password : suppression des numros de lignes

Utilisation du mta caractre &

cat > fic01 << endtxt
le filtre sed est trs puissant\
Il permet dutiliser les expressions rgulires
endtxt

sed s/expressions rgulires/ & /g fic01 : encadre expressions rgulires

Utilisation des sous expressions

cat > villes << ends
H1X-1A9 :Rosemont
H2X-1A7 : Quartier 1
ends

sed s/\(.\):\(.*\)$/\2:|\1/ villes : Inverse le code postal et le quartier

sed /SAVE/!d fichier : supprime toutes les lignes qui ne contiennent pas SAVE .
sed n /BEGIN/,/END/p fichier : affiche toutes les lignes entre BEGIN et END
Lditeur vi
SYSTMES DEXPLOITATION LINUX


105

vi est un diteur plein page. Il permet dditer plusieurs fichiers en mme temps.

Syntaxe :

vi [fichier1] [fichier2] . (on peut aussi utiliser les mta caractres)
Si le nom du fichier est omis, il y a ouverture dun nouveau fichier sans nom.

vi fonctionne en deux modes :

- mode commande (par dfaut au lancement)
- mode insertion

En mode insertion, le message -- INSERT -- en double brillance apparat en bas dcran.

Le passage du mode insertion au mode commande se fait par la touche ESC (escape) ou CTRL-C.

Le passage mode commande au mode insertion se fait de plusieurs manires, les plus simples, soit la
touche i , soit la touche insert .

Lexcution dune commande se fait de deux manires : soit en tapant la commande directement, soit en
utilisant : pour passer en ligne de commande.

Exemples:

dd supprime la ligne courante.
5dd supprime 5 lignes partir de la ligne courante.
:3,5dd supprime la ligne 3 a la ligne 5.

Commandes qui permettent de passer en mode insertion :

Commande Action
a Insertion aprs le caractre courant
A Insertion aprs la fin de la ligne courante
o Insertion dune nouvelle ligne aprs la ligne courante
O Insertion dune nouvelle ligne avant la ligne courante
i , insert Passage en mode insertion avant le caractre courant
I Insertion en dbut de ligne
c Dbut de remplacement
C Remplacement jusqu la fin de ligne

Commandes sans passage en mode insertion :

dd Efface la ligne courante
ndd Efface n lignes
x Efface le caractre courant
nx Efface les n caractres suivant
. Rpte la dernire modification
p Insre la dernire suppression aprs la ligne courante
SYSTMES DEXPLOITATION LINUX


106
P Insert la dernire suppression avant la ligne courante
u (undo) Annule la dernire commande
Y Copie la ligne courante dans un nouveau tampon
yy Copie de la ligne courante
"xyy Copie de la ligne courante dans le tampon x
"xd Supprime la ligne courante et le met dans le tampon x
"Xd Supprime la ligne courante et lajoute dans le tampon x
"xp Insre le contenu du tampon x, aprs la ligne courante

Mise en mmoire (zone tampon)

vi nous permet dadresser jusqu 26 tampons nomms de a z

Syntaxe dutilisation :

Copie

"x[ n ]yy : x (de a z) , n = valeur (nombre de lignes)
[n]"xyy

Mise jour du tampon

"x[ n ]yy : x (de A Z) , n = valeur (nombre de lignes)
[n]"xyy

Coller un tampon

xp : Insertion du tampon x, aprs la position courante
xP : Insertion du tampon x, avant la position courante

Remplacement de chaines de caractres :

:%s/window/linux/g Change windows par linux dans tout le fichier.
:%s/windows/linux Change windows par linux dans tout le fichier, mais une seule fois par
ligne.
:%s/windows/linux/gc Change windows par linux dans tout le fichier, mais avec confirmation.
:10,20s/windows/linux/g Change windows par linux dans les lignes de 10 a 20.
:s/.*/\U&/ Met en majuscule la ligne courante.
U majuscule
L minuscule
:%s/ ^ m// quivalent de la commande dos2unix pour avoir ^m appuyer sur CTRL-V
puis m enter
:s/[a-zA-Z]/1&/g Ajoute aprs tout caractre dans [a-zA-Z] un 1devant.
:%s ^ windows// limine windows en dbut de ligne.
^ veux dire dbut de ligne
$ veux dire fin de ligne
:/windows/-2,+4d limine 5 lignes autour de la premire occurrence de windows
:s/[ABC]/[abc]/g A devient a, B devient b, C devient c
Remplacement de chaines de caractres avec condition :
SYSTMES DEXPLOITATION LINUX


107

On peut demander a VI de faire une action sur une phrase uniquement si cette dernire contient un motif
textuel.

Syntaxe: :g/chaine/commande

:g/micrisoft/s/windows/linux/g Change windows par linux uniquement dans les lignes ou micrisoft se
trouve
:g/ ^[ ]*$/d Supprime toutes les lignes vides.
:g/linux/t 0 copie en haut du texte toutes les lignes contenants linux
:g/linux/cd 80 centre toutes les lignes contenant linux
:g!/linux/d efface toutes les lignes ne contenant pas linux
:v/linux/d idem

Visualisation et recherche

:/linux/-2,+4p Affiche 5 lignes autour de la premire occurrence de linux .
^linux recherche linux en debut de ligne
:10,20nu visualisation des lignes 10 a 20 avec affichage des numros de lignes
/lin[uU]?x/ recherche linux ou linUx
n Recherche la nouvelle occurrence

Changement du Mappage du clavier

Les touches des claviers peuvent acqurir une fonctionnalit, en mode commande.

On veut affecter une fonctionnalit au caractre v : :map v 10dd
Aprs cette opration la touche v efface 10 lignes partir de la position courante, en mode commande

:map! v 10dd
v aura la fonctionnalit dans les 2 modes.

:map : donne la liste des touches map .

Pour les caractres spciaux on utilise la combinaison CTRL V suivie du caractre introduire.
Pour ESC CTRL V ESC

Pour les touches de fonction : #n : ou n est le numro de la touche fonction.
Pour F7 #7

:unmap touche : supprime la fonctionnalit de la touche.

Exemple:

:map! ^ vDELETE ^ vESClxi
Maintenant, la touche DELETE supprime dans les 2 modes
de mme: :map! ^ vBACKSPAPE ^ vESChxi
Maintenant, la touche BACKSPAPE marche aussi.

SYSTMES DEXPLOITATION LINUX


108
Entre Sortie sous VI.

:w Sauve le fichier dit.
:e Ouvre le mme fichier que celui dit, si on nas pas sauve, cest un puissant undo
:r toto.c Insre le fichier toto.c a la position courante.
:10,20w toto Sauve les lignes de 10 a 20 dans le fichier toto
:r!ls -1 Insre le rsultat de la commande ls -1 dans lditeur la position courante
ZZ Sortie avec sauvegarde
:wq Sortie avec sauvegarde
:x Sortie avec sauvegarde
: r fichier Lit le fichier et place le contenu derrire le curseur

Quelques commandes utiles :

:vi Permet de rtablir laffichage
:q! Permet de sortir sans rien changer.
:e! Permet de rditer le fichier sans sauver une connerie
:u undo annule la dernire insertion.
:se all Affiche toutes les options

Divers

Lappuis de la touche . en mode commande rpte soit la dernire insertion ou la dernire commande.

La touche $ envoie a la fin de ligne.
La touche ^ envoie au dbut de ligne.

En mode commande :

gg dplacement en dbut de texte.
G dplacement en fin de texte.
/chaine/ Recherche de chaine (touche n pour suivant )

Les abrviations

vi permet de dfinir des abrviation . Une abrviation est utile pour des mots ou phrases qui reviennent
souvent.

La dfinition des abrviations se fait en mode ligne de commande ( : )

:ab mnmonique texte

Au niveau de la saisie, lutilisation de labrviation se fait en tapant le mnmonique suivant dun espace.

:ab : donne la liste des abrviations existantes

:unab mnmonique : supprime labrviation.



SYSTMES DEXPLOITATION LINUX


109
diter plusieurs fichiers en mme temps :

vi f1 f2 f3
:n (pour suivant) ou :e #x (x = numro du fichier )
Pour deux fichiers on peut utiliser CTRL ^ pour passer dun fichier un autre.
On peut aussi ouvrir plusieurs fentre par lutilisation de CTRL W n

Le passage dune fentre se fait par CTRL W CTRL^

Utilisation des commandes UNIX sous vi

!!commande : le rsultat de lexcution de la commande UNIX sera insr dans le texte.

:[n1][,n2]!commande : la commande UNIX va agir sur les lignes de n1 n2

:!commande : Excution de la commande UNIX puis retour au vi

Exemple :

:!bash : sortie vers le shell, le retourner au vi se fera par la commande UNIX
exit ou CTRL D

La commande set et le fichier ~/.exrc :

La commande set permet dinitialiser des options modifiant lenvironnement du vi .
Ces options peuvent tre spcifies dans le fichier ~/.exrc ou au cours de lutilisation du vi .

:set number ou :se nu : numrotation des lignes
:set showmode : affiche en bas de lcran du mode.
:set ruler : affiche les coordonnes du curseur

Dans le fichier ~/.exrc on peut aussi dfinir les abrviations et le mappage du clavier.

La commande awk

Prsentation

awk est une commande trs puissante, c'est un langage de programmation elle toute seule qui permet
une recherche de chanes et l'excution d'actions sur les lignes slectionnes. Elle est utile pour rcuprer de
l'information, gnrer des rapports, transformer des donnes entre autres. Une grande partie de la syntaxe a
t emprunte au langage C.

Syntaxes :

1) Mode ligne de commande

awk [-F s ] [-v var=valeur] 'instructions' [ fichier (s) ]
SYSTMES DEXPLOITATION LINUX


110

Les instructions sont spares par des ;

2) Mode programme

awk [-Fs] [-v var=valeur] -f fichier-prog [ fichier (s) ]

Option :

-F s : permet de dclarer s comme sparateur de champ.

-f fichier-prog : permet de dclarer le nom du fichier programme awk.

-v var=valeur : permet de dfinir une variable (var dans l'exemple) qui sera utilise par la suite dans le
programme.

Structure des instructions en mode ligne de commande

[condition]{action1;action2;.;action
n
}

o condition : critres de slection des lignes traiter qui peuvent tre des expressions
rgulires.

action : instruction du langage awk

Exemple:

awk '{print}' /etc/passwd (quivalent cat /etc/passwd )
awk -F":" '{print $1}' /etc/passwd : donne uniquement le premier champ (nom utilisateur)
awk /^r/{print} /etc/passwd : donne uniquement les lignes qui commencent par r .

Structure dun programme awk

Un programme awk se divise en trois sections :

- Section BEGIN qui est excute une seule fois, avant la lecture du (premier) fichier.
- Section principale qui excute pour chaque ligne du (ou des) fichier(s), selon les critres de
slection.
- Section END qui est excute une seule fois, la fin du (dernier) fichier.

Schma de la structure

BEGIN{

Instructions awk

}
{
..
.. Instructions awk
SYSTMES DEXPLOITATION LINUX


111
..
}
END{
..
.. Instructions awk
..
}

Remarque :

Les sections ne sont pas obligatoires, elles dpendent du traitement effectuer.
Un programme awk est un fichier texte, ce nest pas un programme excutable.
Cette structure peut aussi tre utilise en mode ligne de commande.

Exemple :

1) Cration du programme awk

vi p-awk-1
BEGIN{
print Contenu du Fichier /etc/passwd
print =======================
}
{
print $0
}
END{ print ======================================= }

2) Excution du programme awk

awk f p-awk-1 /etc/passwd

Rappel sur un fichier texte

Fichier = { enregistrements} ( ou lignes)

Enregistrement = { champs } / Un champ est dfini en fonction dun sparateur.

Variables prdfinies

Variable Signification
$0 Ligne courante du fichier courant
$1,$2,$3, Les champs de la ligne courante
NF Nombre de champs de la ligne courante
$NF Le dernier champ de la ligne courante
FS Sparateur de champs en entre
FNR Nombre denregistrements lus du fichier courant
NR Nombre denregistrements lus (tous les fichiers confondus)
FILENAME Nom du fichier courant
SYSTMES DEXPLOITATION LINUX


112
ARGC Le nombre dlments du tableau des arguments de la ligne de commande
ARGV Le tableau des arguments de la ligne de commande
RLENGTH Longueur de la chane traite par la fonction match()
RSTART Le point de dpart de la chane trouve par la fonction match()

Les expressions rgulires

Syntaxe Signification
/expression rgulire/ {instructions}
$0/expression rgulire/ {instructions}
Les instructions sont excutes pour chaque ligne
contenant une chane satisfaisant l'expression
rgulire.
expression/expression rgulire/
{instructions}
Les instructions sont excutes pour chaque ligne o
la valeur chane de l'expression contient une chane
satisfaisant l'expression rgulire.
expression !/expression rgulire/
{instructions}

Les instructions sont excutes pour chaque ligne o
la valeur chane de l'expression ne contient pas une
chane satisfaisant l'expression rgulire.

Soit le fichier adresse suivant (nom, numro de tlphone domicile, numro de portable, numro quelconque)
avec comme sparateur de champs :

BERTRAND:514-723-7233:111-585-2121:514-514-5140
CLAUDE:450-724-7299:111-588-2221:514-154-1100
KARIM:250-729-7233:111-586-2120:514-445-6600
KEMAL:512-721-7288:111-585-2121:514-514-5540

Le programme awk suivant vrifie que dans le fichier le numro de tlphone domicile (champ 2) et le
numro de portable (champ 3) sont bien des numros de tlphone.

BEGIN{ print "On vrifie les numros de tlphone"
print "------------------------------------------" }

{ $2 !~/^[0-9]+-[0-9]+-[0-9]+$/ print "Erreur sur le numro de tlphone domicile, ligne n"NR": \ n"$0
$3 !~/^[0-9]+-[0-9]+-[0-9]+$/ print "Erreur sur le numro de tlphone du portable, ligne n"NR": \n"$0 }
END{ print "Vrification termine" }

Les expressions

Oprateurs de comparaison :

< <= == != >= >

Oprateurs arithmtiques :

+ -
/ ^ (exponentiation) * % (modulo)



SYSTMES DEXPLOITATION LINUX


113
Oprateurs daffectation

= += -= /= *= ^= %=

Oprateurs boolens

&& || (ou) ! (ngation)

Oprateurs dincrmentation

++variable --variable variable++
VARIABLE--

Oprateurs utiliss dans les expressions

~ (contient) ! ( qui ne contient pas)

Remarque :

- Les motifs des expressions rgulires peuvent tre utiliss, mais vrifiez la syntaxe.
- On peut utiliser une combinaison des diffrentes expressions (ou critres).

Exemples :

awk -F: $1 == "root" || $3 <= 14 { print} /etc/passwsd : utilisateur root ou UID <=14

awk NR%2 == 0 {print NR $0} /etc/passwd : affiche les numros pairs

awk NR == 3, NR == 5{print $0} /etc/passwd : affiche les 3 5

awk $1 ~/stage/ && $3 > 1000 {print $0} fichier : affiche les lignes dont le champ 1 contient stage et
dont le champ 3 est suprieur 1000

Les fonctions prdfinies

Fonctions numriques

FONCTION ACTION
atan2(y,x) arctangente de x/y en radian (entre -pi et pi)
cos(x) cosinus (radian)
exp(x) exponentielle la puissance x
int(x) partie entire
log(x) logarithme naturel
rand(x) nombre alatoire (entre 0 et 1)
sin(x) sinus (radian)
sqr(t) racine carre
srand(x) dfinition d'une valeur de dpart pour gnrer un nombre alatoire

Fonctions chanes de caractres

SYSTMES DEXPLOITATION LINUX


114
length(x) Renvoie la longueur de la chane x
sub(exp,ch[,In]) Remplace la premire occurrence de lexpression rgulire
exp par la chaine ch dans la chaine In
Si In est omis, $0 est utilis.
gsub(exp,ch[,In]) Idem que sub() mais pour toutes les occurrences de exp
index(x,y) Renvoie (une valeur) la position de chane y dans
chane x , sinon 0
match(ch1,ch2) Renvoie l'indice de la position de la chane ch2 dans la
chane ch1 , repositionne RSTART et RLENGTH
printf(format,valeur) Permet d'afficher sorties formates, la syntaxe est identique
celle de la fonction printf du langage C
split(ch1,tb[,sp]) clate la chane ch1 en plusieurs champs dans le
tableau tb , sp est sparateur de champs (si omis
FS est pris comme sparateur.
split() renvoie le nombre dlments du tableau
sprintf(format,valeur) sprintf renvoie la sortie formate dans une chane de
caractres. (mme principe que printf() )
substr(ch1,pos[,long]) Extrait de la chane ch1 une chane de longueur
long partir de la position pos . Si long est omis
il y a extraction de la position pos jusqu la fin de
ch1
tolower(ch1) Retourne la chane ch1 convertie en minuscule
toupper(ch1) Retourne la chane ch1 convertie en majuscule

Exemples :

gsub("oi","ai") Remplace la chane oi par ai dans chaque ligne lue

n=index("patate","ta") n=3

ch1= cours unix
n=length(ch1) n=10

n=match("PO1235D",/[0-9][0-9]*/) n=3, RSTART=3 et RLENGTH=4

printf("La variable i est gale %7,2f",i) sortie de la variable i avec 7 caractres (ventuellement
caractres vides devant) et 2 chiffres aprs la virgule.

printf("La ligne est %s",$0) > "fichier.int" Redirection de la sortie vers un fichier avec >, on peut utiliser
aussi la redirection >>. Veillez ne pas oublier les "" autour du nom du fichier.

n=split("zorro est arriv",tab," ") tab[1]="zorro", tab[2]="est", tab[3]="arriv", n=3 (nombre d'lments
dans le tableau)

i=3
zone1=sprintf("J'ai %d patates",i) machaine="J'ai 3 patates"
zone2=substr("Zorro est arriv",5,3) machaine="o e"

SYSTMES DEXPLOITATION LINUX


115
Fonctions dentres-sorties

close(nom-de-fichier) , getline [var] , getline [var] < fichier , "commande unix"| getline [var]

Fonctions divers

system("ligne de commandes") Excution dune ligne de commandes UNIX.
Le rsultat peut tre affecter une variable.
Exemple :

commande=system("ls | grep toto") Excution de la commande UNIX "ls |grep toto"

Fonctions dfinies par l'utilisateur

Lutilisateur peut dfinir ses propres foncions et les appeler tout moment dans un programme awk .

Syntaxe :

function nom-de-fonction (liste des paramtres spars par des virgules)
{
instructions
return valeur
}

Exemple :

function add(x,y)
{
return x+y
}
{
print add(5,10)
}

LES STRUCTURES DE CONTRLE

Prsentation

1) Les dcisions : (if, else)
2) Les boucles (while, for, do-while, loop)
3) Les sauts (next, exit, continue, break).

Les dcisions (if, else)

Syntaxe :

if (condition) { bloc dinstructions }
else { bloc dinstructions }

Sil y a une seule instruction excuter, les accolades ne sont pas ncessaires.
SYSTMES DEXPLOITATION LINUX


116

Exemple:

if ($2 == "x") print $1 " n'a pas de mot de passe"
else print $1," a un mot de passe"

Les boucles (while, for, do-while)

Syntaxe de while et do while:

while (condition) { bloc dinstructions }
do { bloc dinstructions } while (condition)
Linstruction do while sexcute au moins une fois.

Exemples:

i=1 ; while(i=<NF) { print $i ; i++ }

i=1; do print i++," ",$1 while(i <= NF)

Syntaxe de for (intervalle de valeurs) :

for (expression; condition; expression) { bloc dinstructions }

Exemple:

for (i=1;i=><NF;i++) print $i

Syntaxe de for (lments dun tableau) :

for( variable in tableau) { bloc dinstructions }

Exemple:

tab[1]="patate"
tab[2]="courgette"
tab[3]="poivron"

Pour afficher le contenu de chacun des lments du tableau on crira:

for (index in tab) print "legume :",tab[index]

Sauts contrls (break, continue, next, exit)

break : permet de sortir d'une boucle.

Exemple :

for (;;;) { instruction(s)
if (condition) break
SYSTMES DEXPLOITATION LINUX


117
instruction(s) }

continue : force un nouveau passage dans une boucle.

next : permet d'interrompre le traitement sur la ligne courante et de passer la ligne suivante.

exit : permet d'abandonner un programme awk , les instructions suivant END sont excutes (s'il y en
a).

Les tableaux

Prsentation

On peut dfinir des tableaux une dimension ou deux dimensions (matrice).

Syntaxe tableau une dimension :

tab[index]=variable : index est un numrique.

Exemple :

for (i=1;i<=NF;i++) mon-tab[i]=I

La fonction delete permet de supprimer soit un tableau (delete tab), soit un lment dun tableau (delete
tab[index]).

Les tableaux associatifs

Cest un tableau unidimensionnel, ceci prs que les indexes sont des chanes de caractres.

Exemple:

age["olivier"]=27
age["veronique"]=25
age["benjamin"]=5
age["veronique"]=3

for (nom in age) print nom " a " age[nom] "ans"

Syntaxe tableau deux dimensions :

tab[ligne,colonne]=variable

BEGIN{ i=1}
{ for(j=1;j<=NF;j++) tab_champs[i,j]=$j ; i++ }

Mmorise tous les champs dun fichier dans la matrice tab_champs.

Commande find
SYSTMES DEXPLOITATION LINUX


118

Recherche de fichiers dans une ou plusieurs arborescence.

Syntaxe :

find [chemin(s)] [expression(s)] [-action]

Description :

find parcourt les arborescences en chacun des chemins mentionns, en valuant les expressions fournies
pour chaque fichier rencontr.

L'valuation de l'expression se fait de gauche droite, en suivant des rgles de prcdence.

Le premier argument commenant par `-' \( \)' ou '!' est considr comme le dbut de l'expression,
tous les arguments prcdents sont des chemins parcourir.

Si aucun chemin n'est mentionn, le rpertoire en cours sert de point de dpart.

Si aucune expression n'est fournie, find donne tous les fichiers des chemins dfinis.

find se termine avec le code de retour 0 si tous les fichiers ont pu tre examins correctement, et
suprieur 0 si une erreur s'est produite.

Expressions

L'expression est constitue d'options spars par des oprateurs : -and ou -or .

Quand un oprateur est manquant, l'opration par dfaut -and est applique.

Options :

-daystart Mesurer les temps (avec -amin, -atime, -cmin,-ctime, -mmin, et -mtime) depuis le
dbut de la journe plutt que depuis 24 heures.
-depth Traiter d'abord les sous-rpertoires avant le rpertoire lui-mme.
-follow Drfrencer les liens symboliques pour accder aux fichiers vers lesquels ils pointent.
-xdev Ne pas parcourir les rpertoires situs sur d'autres systmes de fichiers.

Tests: Les arguments numriques peuvent tre indiqus comme suit:

+n suprieur n, -n infrieur n, n gal n.

-amin n Dernier accs au fichier il y a n minutes.
-anewer file Dernier accs au fichier plus rcent que la dernire modification de file.
-atime n Dernier accs au fichier il y a n*24 heures.
-cmin n Dernire modification du statut du fichier il y a n minutes.
-ctime n Dernire modification du statut du fichier il y a n*24 heures.
-empty Fichier vide. De plus ce fichier doit tre rgulier ou tre un rpertoire.
-false Toujours faux.
SYSTMES DEXPLOITATION LINUX


119
-fstype type Fichier se trouvant sur un systme de fichiers du type indiqu. Les types de systmes
de fichiers dpendent de la version de LINUX.
-gid n Fichier de GID numrique valant n.
-group
nom_groupe
Fichier appartenant au groupe nom_groupe (ventuellement ID numrique).
-ilname motif Identique -lname, mais sans diffrencier les majuscules et les minuscules.
-iname
pattern
Identique -name, mais sans diffrencier les majuscules et les minuscules. Par
exemple les motifs `fo*' et `F??' correspondent aux noms de fichiers `Foo', `FOO',
`foo', `fOo', etc...
-inum n fichier dont le numro d'inode est n.
-ipath motif Identique -path, mais sans diffrencier les majuscules et les minuscules.
-iregex motif Identique -regex, mais sans diffrencier les majuscules et les minuscules.
-links n Fichier ayant n liens.
-lname motif Fichier reprsentant un lien symbolique, dont le contenu correspond au motif
indiqu.
-mmin n Fichier dont les donnes ont t modifies il y a n minutes.
-mtime n Fichier dont les donnes ont t modifies il y a n*24 heures.
-name motif Fichier dont le nom de base (sans les rpertoires du chemin d'accs), correspond au
motif du shell. Les mta-caractres (`*', `?', et `[]') ne sont jamais mis en
correspondance avec un point `.' au dbut du nom. Pour ignorer un rpertoire, ainsi
que tous ses sous-rpertoires, utiliser l'option -prune.
-newer fichier Fichier modifi plus rcemment que le fichier indiqu. L'option -newer n'est affecte
par l'option -follow que si celle-ci la prcde sur la ligne de commande.
-nouser Fichier dont l'U-ID numrique ne correspond aucun utilisateur.
-nogroup Fichier dont le G-ID numrique ne correspond aucun groupe d'utilisateurs.
-path motif Fichier dont le nom complet correspond au motif fourni. Lors du dveloppement des
mta-caractres, `/' et `.' ne sont pas traits diffrement des autres caractres, ainsi par
exemple : find . -path './sr*sc' affichera l'lment de rpertoire intitul './src/misc' (s'il
en existe un). Pour ignorer une arborescence complte de rpertoires, utilisez l'option
-prune plutt que de vrifier chaque fichier de l'arbre. Par exemple, pour ignorer le
rpertoire `src/emacs' et tous ses sous-rpertoires, tout en affichant le nom de tous les
autres fichiers, faites quelque chose comme : find . -path './src/emacs' -prune -o -print
-perm mode Fichier dont les autorisations d'accs sont fixes exactement au mode indiqu (en
notation symbolique ou octale). La notation symbolique utilise le mode 0 comme
point de dpart.
-perm -mode Fichier ayant au moins toutes les autorisations indiques dans le mode.
-perm +mode Fichier ayant certaines des autorisations indiques dans le mode.
-regex motif Nom de fichier correspondant l'expression rgulire motif. Il s'agit d'une
correspondance sur le nom de fichier complet, pas d'une recherche. Par exemple,
pour mettre en correspondance un fichier nomm `./fubar3', vous pouvez utiliser les
expressions rgulires `.*bar.' ou `.*b.*3', mais pas `b.*r3'.
-size n[bckw] Fichier utilisant n units d'espace. Les units sont des blocs de 512 octets par dfaut
(ou si un suffixe `b' suit le nombre n), des octets si un suffixe `c' suit n, des kilo-
octets si un suffixe `k' est utilis, ou des mots de 2 octets si un `w' suit le nombre n.
La taille ne prend pas en compte les blocs indirects, mais elle comptabilise les blocs
des fichiers parpills pas encore allous.
-true Toujours vrai.
-type c Fichier du type c: b fichier spcial en mode bloc, c fichier spcial en mode
caractre, d rpertoire, p tube nomm (FIFO), f fichier rgulier, l liens
SYSTMES DEXPLOITATION LINUX


120
symboliques, s socket.
-uid n Fichier dont l'UID numrique vaut n.
-used n Fichier dont le dernier accs date de n jours aprs la dernire modification de son
statut.
-user
utilisateur
fichier appartenant l'utilisateur indiqu (UID numrique ventuellement)


Actions :

-exec commande : Excute la commande. Tous les arguments suivants de find sont considrs comme
des arguments pour la ligne de commande, jusqu' ce qu'on rencontre un ; . La chane `{}' est remplace
par le nom du fichier en cours de traitement, et ceci dans toutes ses occurrences.

Exemple :

find . name "a*" exec ls l {} \;

-fls fichier vrai : comme -ls mais crit dans le fichier comme le fait -fprint.

-fprint fichier vrai : crit le nom complet dans le fichier. Si fichier n'existe pas au dmarrage de find , il
est cr. S'il existe, il est cras. Les noms de fichiers ``/dev/stdout'' et ``/dev/stderr'' sont traits de manire
spcifique, ils correspondent respectivement la sortie standard, et la sortie des erreurs.

-fprint0 fichier vrai : Comme -print0 mais crit dans le fichier comme le fait -fprint.

-fprintf fichier format vrai : Comme -printf mais crit dans le fichier comme le fait -fprint.

-ok commande : Comme -exec mais interroge d'abord l'utilisateur (en utilisant l'entre standard). Si la
rponse ne commence pas par `y' ou `Y', la commande n'est pas excute, et le test devient faux.

-print vrai : Affiche le nom complet du fichier sur la sortie standard, suivi d'un saut de ligne.

-print0 vrai : Affiche le nom complet du fichier sur la sortie standard, suivi d'un caractre nul. Ceci permet
aux fichiers dont le nom contient un saut de ligne, d'tre correctement interprts par les programmes
utilisant les donnes en sortie de find .

-printf format vrai : Affiche le format indiqu sur la sortie standard, en interprtant les squences
d'chappement `\' et les directives`%'. La largeur et la prcision des champs peuvent tre spcifis comme
dans la fonction printf(3) du langage C. Contrairement -print, -printf n'ajoute pas de saut de ligne la fin de
la chane. Les squences d'chappement et les directives % sont les suivantes :

\a Sonnerie.
\b Effacement Arrire (Backspace)
\c Arrter immdiatement l'impression du format et vider le flux de sortie.
\f Saut de page
\n Saut de ligne
\r Retour Chariot
\t Tabulation horizontale
SYSTMES DEXPLOITATION LINUX


121
\v Tabulation Verticale
\\ Un caractre `Backslash' littral (`\').
`\' suivi de n'importe quel autre caractre est trait comme un caractre ordinaire; ils sont donc
affichs tous les deux.
%% Un caractre pourcentage littral (%)
%a Date du dernier accs au fichier, dans le format renvoy par la fonction C ctime(3).
%Ak Date du dernier accs au fichier, dans le format spcifi par k, qui doit tre soit un `@', soit une
directive pour la fonction C strftime(3). Les valeurs possibles pour k sont indiques ci-dessous,
certaines d'entre-elles ne sont pas disponibles sur tous les systmes, cause des diffrences
entre les fonctions strftime(3) existantes.
@ secondes coules depuis le 1er Janvier 1970 00h 00 GMT.

Champs horaires :

H heure (00..23)
I heure (01..12)
K heure ( 0..23)
l heure ( 1..12)
M minute (00..59)
P AM, ou PM avec la dsignation locale
R heure, sur un cadran de 12 heures (hh:mm:ss [AP]M)
S secondes (00..61)
T heure, sur un cadran de 24 heures (hh:mm:ss)
X reprsentation locale de l'heure (H:M:S)
Z fuseau horaire (par exemple MET), ou rien si le fuseau horaire est indtermin.

Champs de date :

a abrviation locale du jour de la semaine (Dim .. Sam)
A nom local entier du jour de la semaine, de longueur variable (Dimanche .. Samedi)
b abrviation locale du mois (Jan..Dec)
B nom local entier du mois, de longueur variable (Janvier .. Dcembre)
c date et heure locales (Sam Nov 04 12:02:33 EST 1989)
d quantime du mois (01..31)
D date (mm/jj/aa)
h comme b
j jour de l'anne (001..366)
m mois (01..12)
U numro de la semaine dans l'anne, les semaines commenant le Dimanche (00..53)
w jour de la semaine (0..6), 0 correspond Dimanche
W numro de la semaine dans l'anne, les semaines commenant le Lundi (00..53)
x reprsentation locale de la date (mm/jj/aa)
y les deux dernier chiffres de l'anne (00..99)
Y anne (1970...)


%b Taille du fichier en nombre de blocs de 512 octets (arrondi par excs).
%c Date de dernire modification du statut du fichier(format renvoy par la fonction C ctime(3))
SYSTMES DEXPLOITATION LINUX


122
%Ck Date de dernire modification du statut du fichier, dans le format spcifi par k, comme pour la
directive %A.
%d Profondeur du fichier dans l'arborescence des rpertoires, 0 signifiant que le fichier est un
argument de la ligne de commande.
%f Nom du fichier, sans nom de rpertoire.
%F Type de systme de fichiers sur lequel se trouve le fichier. Cette valeur peut tre utilise pour
l'option -fstype.
%g Nom du groupe propritaire du fichier, ou GID numrique si le groupe n'a pas de nom.
%G GID numrique du fichier.
%h Rpertoires en tte du nom de fichier, (tout sauf le dernier nom).
%H Argument de la ligne de commande partir duquel le fichier a t trouv.
%I Numro d'inode du fichier (en dcimal).
%k Taille du fichier, en nombre de blocs de 1 Kilo-Octet, arrondi par excs.
%l Destination du lien symbolique (vide si le fichier n'est pas un lien symbolique).
%m Bits d'autorisation d'accs au fichier (en octal).
%n Nombre de liens physiques sur le fichier.
%p Nom du fichier.
%P Nom du fichier, ainsi que le nom de l'argument de ligne de commande partir duquel le fichier
a t trouv.
%s Taille du fichier en octets.
%t Date de dernire modification du fichier, dans le format renvoy par la fonction C ctime(3).
%Tk Date de dernire modification du fichier, dans le format spcifi par k, comme pour la directive
%A.
%u Nom du propritaire du fichier, ou UID numrique si l'utilisateur n'a pas de nom.
%U UID numrique du propritaire du fichier.

Un caractre `%' suivi de tout autre caractre est limin (mais le second caractre est affich).

-prune vrai si l'option -depth n'est pas fournie; ne pas descendre dans l'arborescence du rpertoire en cours.
faux si l'option -depth est fournie, et sans effet.

-ls vrai, affiche le nom du fichier en cours dans le format `ls -dils' sur la sortie standard. La taille est compte
en blocs de 1 Ko, moins que la variable d'environnement POSIXLY_CORRECT soit positionne, auquel
cas la taille est calcule en blocs de 512 octets.

Oprateurs

Dans l'ordre de prcdence dcroissante :

( expr ) Force la prcdence.

! expr Vrai si expr est fausse.

-not expr Comme ! expr.

expr1 expr2 ET (implicite); expr2 n'est pas value si expr1 est fausse.

expr1 -a expr2 Comme expr1 expr2.

SYSTMES DEXPLOITATION LINUX


123
expr1 -and expr2 Comme expr1 expr2.

expr1 -o expr2 OU; expr2 n'est pas value si expr1 est vraie.

expr1 -or expr2 Comme expr1 -o expr2.

Exemples :

find . type d print
find /home user linux1 print
find /home user 501 print

find / -perm 0002 print

find / -mtime 8 print : = 8jours
find / -mtime +8 print : >= 8jours
find / -mtime -8 print : <= 8jours

find . size 100c print : = 100 caractres
find . size +100c print : >= 100 caractres
find . size -100c print : <= 100 caractres

find . size 100 print : = 100 blocs de 512 octets

find /home -user linux1 name .* print
find /home \( -user linux1 a name .* \) print
find /home \( -user linux1 o user linux2 \) print

find /home !-user linux1 exec rm {} \;
find /home !-user linux1 ok rm {} \;
find /home !-user linux1 ok rm i {} \;

find / \( -name a.out o name *.o \) -atime +7 exec rm {} \;

find / core exec rm {} \;

find . type f print | xargs grep n mot : Recherche de tous les fichiers ordinaires qui contiennent la
chane de caractres mot


Redirection des messages derreurs

find / -name "ab*" print 2>/dev/null

Recherche en arrire plan

find / -user root print > liste 2>/dev/null &

find . \( -type d a exec chmod 771 {} \; \) -o \( -name *.BAK -a exec chmod 600 {} \; \)

SYSTMES DEXPLOITATION LINUX


124
find . type d exec mkdir /usr/projet/{} \;

find fichier

find ?????

find -ls mtime 1



SYSTMES DEXPLOITATION LINUX


125
IX - LES PROCESSUS

Dfinition des processus

Unix est un systme multi-tches et Multi-Utilisateurs, chaque instant on trouve donc plusieurs tches
sexcutant en mme temps. Les diffrentes tches en cours dexcution sont des processus. chaque
processus Unix attribut un numro didentification quon appelle PID ( Process Identification ).

Un processus nest rien dautre quun programme en cours dexcution.

Une image du processus est caractrise par :

o une zone code
o une zone de donnes
o des fichiers ouverts
o un tat des registres
o un rpertoire courant
o des variables denvironnement
o un espace mmoire allou
o un tat dexcution
o lutilisateur responsable du processus

Il existe un nombre maximal des processus pouvant tre grs simultanment.

Contrle des processus

Le contrle des processus sous Unix est ralis par quelques appels systme parfaitement dfinis. Ces appels
sont utilisables par tous les programmes utilisateurs, par exemple le shell.

La cration dun nouveau processus se fait par duplication du processus crateur, qui est le pre et le
processus cr est le fils. Donc le processus pre cr un processus fils son image, mais avec une tche
diffrente.

Par exemple, sous bash, chaque fois quon excute une commande Unix, le shell cr un nouveau processus.

la cration de tout nouveau processus, Unix lui attribut un numro didentification (PID).

Au dmarrage du systme le premier processus cr est le processus init (PID 1), qui son tour cr tous les
autres processus, et, larrt du processus init tout sarrte.

Types de processus et mode dexcution :

o Processus systmes (Exemple : init, swapper, etc.)
o Processus utilisateur (toute commande ou programme lanc par lutilisateur)
o Dmons (processus spciaux) qui ne sont pas rattachs un terminal ou un utilisateur. Ce
sont des processus qui tournent en permanence en arrire plan. Ce sont des processus qui sont
lancs par init, ne sarrtent qu larrt du systme (ou un arrt forc). Exemple : lpd, cron,
inetd, ftpd)
o Processus priodiques (ou fantmes) : des programmes qui sexcutent priodiquement.
SYSTMES DEXPLOITATION LINUX


126

tat dun processus :

un instant t , il ny a quun seul processus qui utilise le CPU, cest dire en excution. Un processus passe
par neuf (09) tats :

1) Actif (user running) mode utilisateur, peut tre interrompu par un autre processus
2) Actif noyau (kernel running) : excution en mode noyau, ne peut tre interrompu.
3) ligible et charg (ready to run in memory) : prt tre excut
4) Endormi et charg (asleep in memory) : attente dun vnement (E/S)
5) ligible et swap (ready to run and swapped) prt tre excut, mais doit tre charg
6) Endormi et swap (sleep, swapped) : attente dun vnement, mais il est en zone swap
7) Interrompu (prempted) : la fin dun appel systme, retour en mode utilisateur, le systme interrompt
son excution et il peut tre chass en zone swap
8) Cr (created) tat initial
9) Zombie : le processus a excut lappel systme exit() , tat final dun processus.

Mort dun processus

Mort naturelle : Appel systme exit() (fin normale de programme ou de commande)

Mort violente :

o Tuer un processus (kill)
o Dconnexion
o Interruption (CTRL/C)

chaque fin de processus (mort), Unix associe un signal :

0 fin normale
2 interruption externe par CTRL/C
3 interruption externe par CTRL/\
9 kill 9
15 kill 15

Tous ces signaux peuvent tre intercepts sauf le 9.

Processus pre et fils :

Au niveau shell, lexcution dune commande donne naissance un processus fils. Si pour une raison ou une
autre, le processus pre meut, automatiquement le fils meurt aussi.
Par contre si le fils est protg contre la destruction (ex : nohup), lors de la fin du pre, cest le processus init
(PID 1) qui devient le pre.


Commande particulires :

Commande exec : Le code excuter prend la place du pre (pas de cration de processus fils).

Exemple : exec ls (la commande ls remplace le shell, donc il y a excution et fin de session (ou programme)
SYSTMES DEXPLOITATION LINUX


127

Commande . (dot commande) : Permet dexcuter un programme sans cration de processus.

Exemple : . .bash_profile (reexcute le script .bash_profile dans le mme environnement que bash)

Commande wait : Attend la fin dexcution du programme lanc en background (&).

Commandes de gestion des processus:

La commande ps

Syntaxe : ps [ -options ]


La commande ps permet un utilisateur quelconque d'obtenir la liste des processus ainsi que certaines de
leurs caractristiques.

Sans options, la commande fournit la liste des processus qui appartiennent la mme session que le
processus shell depuis lequel la commande est lance (c'est dire tous ceux rattachs au mme terminal).
Pour chaque processus de l'ensemble, les informations fournies sont le numro didentification (PID), le
terminal (TTY), le temps cumul d'excution du processus (TIME) et le nom du fichier correspondant au
programme excut par le processus (COMMAND).

Explication de quelques informations donnes par la commande ps :

ADDR Adresse mmoire ou Adresse disque
C valuation de l'utilisation du processeur
CMD Nom de la commande
F Flag (en octal) indicateur de ltat du processus en mmoire
NI Valeur dajustement volontaire de la priorit indiqu par lutilisateur (nice)
PGID Numro de groupe du processus
PID Numro didentification du processus
PPID Numro didentification du processus pre
PRI Priorit courante du processeur
S tat du processus ( voire les 9 tats dun processus)
SID Numro de session du processus
STAT tat du processus
STIME Date de la cration du processus
SZ Taille du processus en blocs
TIME Temps cumul dexcution
TTY Terminal de contrle du processus
UID Identification du propritaire du processus
WCHAN vnement pour lequel le processus est en attente ou endormi

Options de la commande ps
Option

Signification
-a Affiche tous les processus de lutilisateur
SYSTMES DEXPLOITATION LINUX


128
-e Affiche tous les processus, y compris les processus systmes
-j Affiche le numro de groupe(PGID) et de session(SID) du processus
-l Donne une liste d'information plus complte tel que PPID, CP, PRI, NI,
DDR, SIZE, RSS, WCHAN
-r Affiche les processus actifs
-s Ajoute la taille SSIZ tous les processus
-S Temps d'excution (TIME) d'un processus et de ses fils
-tx Donne les informations sur un terminal spcifi (x) (ex : -t tty1)
-u (Utilisateur) prsente le nom de l'utilisateur et l'heure de lancement.
-v Donne le temps cumul d'excution des processus ainsi que RSS, LIM,
TSIZ, %MEM
-x Affiche les informations de tous les processus

Complment dinformations sur ps tir du man (RedHat) (Rsum)

Slection par type d'information

Option Description
-C nom de commande (ou programme)
-G RGID (Group ID)
-U RUID (User ID)
-t slection par terminal

Format de sortie

Option Description
-O Ajout d'information (voir option de format "-o")
-f tat complet
-j jobs format
-l long format
-o format dfini par l'utilisateur (voir plus bas)

Sortie modifie

Option Description
-H liste des commandes en format d'arbre
e variables d'environnement aprs la commande
h n'affiche pas l'entte
--no-headers nimprime pas lentte

Code etat du processus

D uninterruptible sleep (usually IO)
R runnable (on run queue)
S sleeping
T traced or stopped
Z a defunct ("zombie") process

Format utilisateur (quelques format, voir man du ps)
SYSTMES DEXPLOITATION LINUX


129

1)

exemple : ps -eo "%p %y %x %c"

Code Normal Entete
%C pcpu %CPU
%G group GROUP
%P ppid PPID
%U user USER
%a args COMMAND
%c comm COMMAND
%g rgroup RGROUP
%n nice NI
%p pid PID
%r pgid PGID
%t etime ELAPSED
%u ruser RUSER
%x time TIME
%y tty TTY
%z vsz VSZ

2)

exemple: ps -eo pid,user,args

Code Entete
%cpu %CPU
%mem %MEM
cmd CMD
cputime TIME
f F
pid PID
pmem %MEM
ppid PPID

Variables d'environnement du ps

COLUMNS Override default display width
LINES Override default display height
PS_PERSONALITY Set to one of posix,old,linux,bsd,sun,digital
CMD_ENV Set to one of posix,old,linux,bsd,sun,digital
I_WANT_A_BROKEN_PS Force obsolete command line interpretation
LC_TIME Date format
PS_FORMAT Default output format override
PS_SYSMAP Default namelist (System.map) location
PS_SYSTEM_MAP Default namelist (System.map) location
POSIXLY_CORRECT Don't find excuses to ignore bad "features"

Eemples
SYSTMES DEXPLOITATION LINUX


130

ps -e
ps ax
ps -U root -u root -N
ps -eo pid,tt,user,fname,tmout,f,wchan
ps -o "%u : %U : %p : %a"
ps -C syslogd -o pid=

La commande kill

La commande kill envoie le signal indiqu aux processus mentionns. Si on ne prcise pas de ignal,
TERM est envoy. Ce dernier tuera les processus qui ne l'interceptent pas.

Si l'on dsire tuer des processus qui interceptent TERM, il peut tre ncessaire d'envoyer le signal KILL
(9), qui ne peut pas tre intercept.

Syntaxe :

kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]


Options

pid Indique la liste des PID auxquels kill doit envoyer un signal. Chaque pid peut tre un Id de
processus, ou un nom de processus.

-s Indique le signal envoyer. Celui-ci peut tre spcifi par son nom ou par son numro.

-p Indique que kill doit simplement fournir l'Id du processus dont le nom est fourni, sans lui envoyer de
signal.

-l Affiche une liste des noms de signaux connus. Ceux-ci sont fournis dans usr/include/linux/signal.h


Exemples :

kill 9 pid1 pid2
kill 9 0 ( exit)

La commande su (switch user)

La commande su permet dexcuter un shell avec un User-ID et un Group-ID diffrents.
su permet un utilisateur de se transformer temporairement en un autre utilisateur.
Un shell est excute avec les UID, GID effectifs et rels, ainsi que les groupes supplmentaires de
l'utilisateur indiqu.
Si aucun nom d'utilisateur n'est mentionn, le nom root (Super-Utilisateur) est utilis par dfaut.
Le shell excut est celui mentionn dans l'enregistrement correspondant l'utilisateur dans le fichier
/etc/passwd. Si aucun shell n'y est indiqu, /bin/sh est excut par dfaut. Si l'utilisateur dispose d'un mot de
passe, su le rclame, moins qu'il n'ait t invoque avec un UID rel valant 0(Super-utilisateur).
SYSTMES DEXPLOITATION LINUX


131
Par dfaut, su ne change pas de rpertoire. Il positionne les variables d'environnement `HOME' et `SHELL'
partir des valeurs lues dans le fichier des mots de passe, et si l'utilisateur demand n'est pas root, renseigne
les variables `USER' et `LOGNAME'. Par dfaut le shell excut n'est pas un shell de connexion.

Si un ou plusieurs arguments sont fournis, ils sont transmis comme arguments supplmentaires au shell.

Sur les systmes disposant de la journalisation syslog, su peut tre compil afin de fournir des rapports
d'chec, et ventuellement de russite des tentatives d'utilisation de su.

Ce programme ne gre pas le "groupe wheel" utilis pour restreindre l'accs par su au compte super-
utilisateur, car il pourrait aider des administrateurs systmes fascistes disposer d'un pouvoir incontrl
sur les autres utilisateurs.

Syntaxe :

su [-flmp] [-c commande] [-s shell] [--login] [--fast]
[--preserve-environment] [--command=commande]
[--shell=shell] [-] [--help] [--version] [utilisateur
[arg...]]

Options :

-c COMMANDE, --command=COMMANDE
Transmet la COMMANDE (sur une seule ligne) au shell avec l'option -c plutot que dmarrer un shell
interactif.

-f, --fast
Transmet l'argument -f au shell. Ceci n'a probablement de signification que pour csh et tcsh, pour
lesquels l'option -f vite la lecture du fichier de dmarrage (.cshrc). Avec les shells de type Bourne,
l'option -f dsactive le dveloppement des motifs gnriques dans les noms de fichiers, ce qui n'est
gnralement pas le but recherch.

-, -l, --login
Appelle le shell sous forme de shell de connexion. Voici ce que cela signifie : Invalider toutes les
variables d'environnement sauf `TERM', `HOME', et `SHELL' (qui sont renseignes comme dcrit ci-
dessus), ainsi que `USER' et `LOGNAME' (qui sont alors remplies mme pour le Super-utilisateur).
Remplir `PATH' avec une valeur par dfaut donne lors de la compilation. Se dplacer dans le rpertoire
HOME de l'utilisateur. Ajouter "-" au nom du shell, pour que celui-ci lise son ou ses fichiers de dmarrage.

-m, -p, --preserve-environment
Ne pas changer les variables d'environnement `HOME', `USER', `LOGNAME', et `SHELL'. Excuter le
shell correspondant la variable d'environnement `SHELL' plutot que celui prsent dans
l'enregistrement /etc/passwd de l'utilisateur, moins que ce dernier ait un shell restreint, et que
l'appelant ne soit pas le Super-Utilisateur. Un shell est restreint s'il n'est pas dans la liste /etc/shells, ou
dans une liste fournie lors de la compilation si ce dernier fichier n'existe pas. Le comportement de cette
option peut tre partiellement modifie avec les options --login et --shell.

-s, --shell shell
Excute le shell indiqu plutt que celui prsent dans l'enregistrement /etc/passwd de l'utilisateur, moins
que ce dernier ait un shell restreint, et que l'appelant ne soit pas le Super-Utilisateur.
SYSTMES DEXPLOITATION LINUX


132

La commande top

Donne des informations en continu sur les processus en cours dexcution.
Cest une commande qui permet lutilisateur dentreprendre certaines actions sur les processus.
Les informations fournies sont de mme type que ceux donnes par la commande ps .

Syntaxe :

top [ -options ]

-c affiche la ligne de commande au lieu de la commande seulement
-d permet de prciser le dlai entre les mises jour
-i supprime laffichage de processus en attente ou zombie.
-q effectue les mises jour instantanment. (Priorit leve si root)
-s Mode scuritaire. (dsactivation de certaines commandes interactives)
-S Mode cumulatif. Donne la dure total dutilisation du processeur central pour chaque processus.

Commandes interactives du top

^L Rafrachissement de lcran
espace Mise jour immdiate
h ou ? cran daide de lutilisation de top
k pour kill
q sortie du top
(voir les autres commandes avec laide ou la page man du top)

La commande fuser

La commande fuser affiche les PIDs des processus qui utilisent des fichiers ou les systmes de fichiers
indiqus. Par dfaut, il affiche les PIDs suivis d'une lettre indiquant le type d'accs.

c rpertoire courant.
e programme en cours d'excution.
f fichier ouvert. f est omis par dfaut.
r rpertoire racine
m fichier projet en mmoire, ou bibliothque partage.

fuser renvoie un code de retour non nul si aucun des fichiers mentionns n'est utilis, ou en cas
d'erreur fatale. Si au moins un accs est dtect pour l'un des fichiers mentionns, fuser renvoie zro.



Syntaxe :

fuser [-a|-s] [-signal] [-kmuv] fichier ... [-] [-signal] [-kmuv] fichier ...
fuser -l
fuser -V

Options :
SYSTMES DEXPLOITATION LINUX


133

-a Montrer tous les fichiers mentionns sur la ligne de commande. Par dfaut, seuls les fichiers utiliss par
un processus au moins seront affichs.

-k Envoyer un signal aux processus utilisant les fichiers. Si le modificateur -signal , n'est pas
mentionn, c'est le signal SIGKILL qui est envoy. Un processus fuser ne se tue jamais lui-mme, mais il
peut tuer d'autres processus fuser. L'UID effectif du processus excutant fuser est remplac par son UID
rel avant l'mission du signal.

-l Afficher la liste des noms de signaux disponibles.

-m fichier se trouve sur un systme de fichiers mont, ou est un priphrique bloc mont. Tous les
processus accdant aux fichiers sur ce systme seront affichs. Si le nom d'un rpertoire est mentionn, il
est automatiquement remplac par fichier/. Pour inclure tous les systmes de fichiers pouvant tre
monts en dessous de lui.

-s Agir en silence. Les options -a, -u et -v sont alors ignores.

-signal Envoyer le signal indiqu plutt que SIGKILL. On peut mentionner soit le nom du signal (ex :
-HUP), soit son numro (ex : -1).

-u Ajouter chaque PID le nom d'utilisateur de son propritaire.

-v Mode volubile. Les processus sont prsents la manire de ps. Les champs PID,USER et
COMMAND sont similaires ceux de ps. ACCESS indique le type d'utilisation du fichier.

- Remettre toutes les options leurs valeurs par dfaut, et le signal SIGKILL.

Exemples :

fuser -km /home tue tous les processus accdant de quelque manire que ce soit au systme de fichiers
/home.

La commande nice

La commande nice permet dexcute un programme avec une priorit d'ordonnancement modifie.
Si aucun argument n'est fourni, nice affiche la priorit d'ordonnancement en cours, dont cette commande a
hrit au lancement.

Sinon, nice excute la commande dsire en ajustant la priorit 'ordonnancement.
Si aucun ajustement n'est prcis, la valeur de priorit de la commande est augmente de 10.
Le Super-User peut indiquer un ajustement ngatif. La priorit peut tre ajuste avec nice dans l'intervalle -
20 (le plus prioritaire) 19 (le moins prioritaire).
Syntaxe :

nice [-n ajustement] [-ajustement] [--adjustment=ajustement] [--help] [--version] [commande [arg...]]

Options :

-n ajustement, -ajustement, --adjustment=ajustement. Ajouter ajustement la priorit de la commande,
SYSTMES DEXPLOITATION LINUX


134
plutt que la valeur 10 par dfaut.

--help Afficher un message d'aide sur la sortie standard et terminer normalement.

--version
Afficher un numro de version sur la sortie standard et terminer normalement.


La commande nohup

La commande nohup - Excuter un programme en le rendant insensible aux dconnexions.

nohup excute la commande dsire en ignorant les signaux HANGUP (dconnexion), avec une priorit
d'ordonnancement incrmente de 5, afin que cette commande continue s'excuter en arrire-plan aprs la
dconnexion de l'utilisateur.

Si le flux de sortie standard est un tty, celui-ci, ainsi que le flux standard d'erreur sont redirigs afin d'tre
ajouts au fichier `nohup.out'.

Si ce fichier n'est pas accessible en criture, ils sont redirigs vers `$HOME/nohup.out'. Si ce dernier
fichier n'est pas non plus accessible en criture, la commande n'est pas excute. Lorsque nohup cre le
fichier `nohup.out' ou `$HOME/nohup.out', il ne lui donne aucune permission d'accs pour les membres
du groupe ou pour les autres utilisateurs. Par contre, il ne modifie pas les autorisations d'accs si le
fichier existe dj.

nohup ne bascule pas automatiquement la commande excute en arrire-plan. Il faut le rclamer
explicitement en ajoutant un `&' la fin de la ligne de commande.

Syntaxe :

nohup commande [arg...]
nohup {--help,--version}

Les commandes de contrle de jobs

Le contrle des jobs permet d'arrter (suspend) slectivement l'excution d'un processus, et de la reprendre
(resume) ultrieurement.
L'interprteur associe un job chaque tube. Il maintient une table des jobs en cours d'excution, cette table
pouvant tre affiche avec la commande jobs.Quand bash lance un job de manire asynchrone (en arrire-
plan), il affiche une ligne du genre : [1] 25647

Cette ligne indique que le job est associ au numro 1, et que le PID du dernier processus dans le tube est
25647.
Tous les processus dans un tube simple font partie du mme job. Bash utilise la notion de job comme une
abstraction pour aider les contrler.
Si le systme d'exploitation sur lequel bash fonctionne permet le contrle des jobs, bash vous y donne
accs. La frappe d'un caractre suspension (gnralement ^Z, Contrle-Z) pendant l'excution d'un
processus arrte celui-ci, et redonne la main bash. La frappe d'un caractre suspension diffre
(gnralement ^Y, Contrle-Y) arrtera le processus au moment o il tentera de lire depuis le terminal, et
la main reviendra bash .Il est possible de manipuler ces jobs en utilisant la commande bg (background =
SYSTMES DEXPLOITATION LINUX


135
arrire-plan) pour continuer l'excution en arrire-plan, fg (foreground) pour la reprendre en avant plan, ou
encore la commande kill pour tuer le processus. Un ^Z prend effet immdiatement, et limine les sorties en
attente.
Il y a plusieurs manires de faire rfrence un job. Le caractre % introduit un nom de job. Le job numro
n peut tre not %n. On peut galement faire rfrence un job en utilisant un prfixe du nom utilise pour
le lancer, ou une partie de la ligne de commande. Par exemple, %ce se rfre un job arrt nomme ce. Si
ce prfixe correspond plusieurs jobs, bash renverra une erreur. D'autre part, %?ce, fait rfrence
n'importe quel job contenant la chane ce dans sa ligne de commande. Si la sous-chane correspond
plusieurs jobs, bash renverra une erreur. Les symboles %% et %+ rfrencent le job courant du shell, c'est
dire le dernier job arrt alors qu'il se trouvait en avant-plan. Le job prcdent peut tre mentionn en
utilisant %-. Dans les affichages se rapportant aux jobs (par exemple ceux de la commande jobs le job
courant est toujours indiqu par un +, et le job prcdent avec un - .
Il suffit de nommer un job pour le ramener en avant-plan :%1 est synonyme de ``fg %1'', et ramne le job
1 depuis l'arrire-plan vers l'avant-plan. De mme, ``%1 &'' relance le job 1, mais en arrire-plan
cette fois, de manire quivalente ``bg %1''. Le shell est immdiatement prvenu lorsqu'un job change
d'tat. Normalement bash attend d'tre prt afficher son symbole d'accueil avant de fournir un rapport
sur les changements dans les statut des jobs, afin de ne pas perturber les autres affichages. Avec l'option -b
de la commande interne set, bash affichera les modifications immdiatement (Voir aussi la description
de la variable.notify dans le paragraphe Variables du Shell plus haut.)
Si vous essayez de quitter bash alors que des jobs sont suspendus, le shell affichera un message
d'avertissement. Vous pouvez alors utiliser la commande jobs pour vrifier leurs tats. Une fois cette
commande invoque, ou si vous essayez nouveau de quitter le shell immdiatement, il n'y aura plus
d'avertissement, et les jobs suspendus seront dfinitivement termins.

La commande fg

fg [job]

Placer le job en avant-plan, et en faire le job en cours. Si aucun job n'est mentionn, le shell considrera qu'il
faut ramener le job en cours en avant-plan. La valeur de retour est celle de la commande place en avant-
plan, ou un chec si le contrle des jobs n'est pas actif, ou encore si le job n'existe pas ou a t lanc sans
contrle des jobs.

La commande bg

bg [job]

Bascule le job en arrire-plan, comme s'il avait t lanc avec &. Si aucun job n'est prcis, le job en cours
est bascul en arrire-plan. bg job renvoie 0 si le contrle des jobs est dsactiv ou si le job n'existe pas, ou
encore s'il a t lanc sans contrle de jobs.

La commande jobs

jobs [-lnp] [ job ... ]
jobs -x commande [ arguments ... ]

La premire forme affiche la liste de jobs actifs.
L'option l : affiche les PIDs, en plus des informations normales.
L'option p : n'affiche que le PID du leader du groupe de processus du job.
SYSTMES DEXPLOITATION LINUX


136
L'option n : n'affiche que les jobs dont le statut a vari depuis le dernier affichage. Si une
spcification de job est fournie, l'affichage ne comporte que les informations propos de ce job. Le code de
retour est 0, moins qu'une option illgale soit transmise, ou que le job n'existe pas.

Avec l'option -x, jobs va remplacer toutes les spcifications de jobs rencontres dans la commande
ou dans ses arguments avec les Process Group ID correspondant, puis il excutera la commande en lui
transmettant les arguments, et en renvoyant son code de retour.

Les processus priodiques ou processus fantmes

Le systme dexploitation UNIX/LINUX permet lexcution de processus automatiquement sans
intervention de lutilisateur. Les processus lancs ne sont pas lis un terminal. Le lancement de ces
processus priodiques est planifi selon une date et heure prcise.

Le lancement de ces processus est faite par le processus dmon cron .

La dfinition des processus priodique est faite par la commande crontab

La commande crontab

La commande crontab - permet chaque utilisateur dditer son fichier crontab personnel.
Cest une programme utilis pour installer, dsinstaller, ou afficher le contenu des tables permettant de
piloter le fonctionnement du dmon cron . Chaque utilisateur dispose de sa propre table crontab, et bien
que celles-ci se trouvent dans le rpertoire /var/spool/cron , elles ne sont pas conues pour tre dites
directement.

Syntaxe :

crontab [ -u utilisateur ] fichier
crontab [ -u utilisateur ] { -l | -r | -e }

Options :

-u elle permet de prciser le nom de l'utilisateur dont la crontab doit tre manipule.
Si cette option n'est pas indique, crontab examiner "votre" table, c'est dire la table de la
personne invoquant la commande.

La premire forme de cette commande sert installer une nouvelle table crontab, en utilisant le fichier
indiqu, ou l'entre standard si le nom de fichier est ``-''.

-l permet d'imprimer la table crontab en cours sur la sortie standard.
-r supprime la table crontab en cours.
-e permet d'diter la table en cours, en utilisant l'diteur indiqu par les variables d'environnement
VISUAL ou EDITOR. Une fois que vous sortez de l'diteur, la table modifie sera installe
automatiquement.

Fichiers associs la crontab

/etc/cron.allow
SYSTMES DEXPLOITATION LINUX


137
/etc/cron.deny

(/etc/crontab, /etc/cron.d)

Exemple :

crontab -l affiche le contenu de la crontab si elle existe.
crontab e dite un fichier temporaire sous vi et cre le fichier crontab utilisateur .
Ce fichier aura le mme nom que lutilisateur est sera localis dans le rpertoire
/var/spool/cron .

Remarques :

1) Si le fichier /etc/cron.allow existe, il doit contenir la liste des utilisateurs qui sont autoriss crer
des fichiers crontab. Si le fichier est vide aucun utilisateur (autre que root), nest autoris dfinir un
travail priodique.

2) Si le fichier /etc/cron.deny existe, il doit contenir la liste des utilisateurs qui ne sont pas autoriss
crer des fichiers crontab. Si le fichier est vide tous les utilisateurs sont autoriss dfinir un travail
priodique.

3) Si le fichier /etc/cron.allow n'existe pas, mais que le fichier /etc/cron.deny existe, alors
vous ne devez pas tre mentionn dans celui-ci, si vous dsirez utiliser cette commande. Si aucun de
ces deux fichiers n'existe alors, selon la configuration du site, soit le Super-utilisateur uniquement a
le droit d'utiliser crontab , soit tous les utilisateurs le peuvent.

Structure dun fichier crontab

Un fichier crontab est une table permettant de grer le dmon cron .

Un fichier crontab contient des instructions pour le dmon cron . Ces instructions ont la forme
gnrale suivante : ``lancer cette commande telle heure, tel jour''.

Chaque utilisateur dispose de sa propre table crontab , et les commandes contenues dans une table seront
excutes sous l'identifiant du propritaire de la table.

Un dise (#) en dbut de ligne est un commentaire.

Une ligne active dans une crontab devra donc tre soit une affectation de variable d'environnement, soit
une commande.

Une ligne d'affectation d'environnement est de la forme : nom=valeur

Chaque ligne de la table crontab dispose de 5 champs de date et heure, suivi d'un nom d'utilisateur s'il
s'agit du fichier crontab central du systme, suivi d'une commande. Les commandes sont excutes
par le dmon cron lorsque les champs minute, heure, et mois de l'anne correspondent la date et
quand au moins l'un des deux autres champs (jour du mois, jour de la semaine) correspond aussi.

Structure dune ligne du fichier crontab

SYSTMES DEXPLOITATION LINUX


138
mm hh dd MM w <commande excuter>

Le dmon cron examine ses donnes une fois par minute. Les champs de date et heure sont :

Champs valeurs autorises
------------------------- --------------
mm(minute) 0-59
hh(heure) 0-23
dd(jour du mois) 0-31
MM(mois) 0-12 (ou noms, voir plus bas)
w(jour de semaine) 0-7 (0 et 7 sont dimanche)

Un champ peut contenir un astrisque (*), qui correspond l'intervalle ``0-n''

Les intervalles de nombres sont permis. Ils se prsentent sous forme de deux nombres spars par un tiret.
Les bornes sont inclues.

Exemple : l'intervalle horaire 8-11 correspond une excution aux heures 8, 9, 10, et 11.

Les listes sont permises. Une liste est une srie de nombres ou d'intervalles spars par des virgules.

Exemple : 1,2,5,9 0-4,8-12

Des valeurs de "pas" peuvent tre associes aux intervalles. A la suite d'un intervalle, un ``/nombre''
prcise le pas adopter pour parcourir l'intervalle.

Exemple : ``0-23/2'' dans le champs horaire demande une excution toutes les heures paires.

Les pas sont galement autoriss la suite d'un astrisque, ainsi, pour dire ``toutes les deux heures'', on
peut utiliser ``*/2''.

On peut employer les noms des mois ou des jours de la semaine, en utilisant les trois premires lettres
(pas de diffrence majuscule/minuscule).

Le sixime champ (le reste de la ligne) indique la commande excuter. Tout le reste de la ligne, jusqu'au
retour chariot ou au caractre %, sera excut par /bin/sh, ou par le shell mentionn dans la variable
SHELL du fichier cron. Les signes pourcentages (%) dans les commandes seront transforms en retour-
chariot, sauf s'ils sont prcds par un backslash (\). Toutes les donnes se trouvant la suite du premier %
seront transmises la commande sur son entre standard.

Exemple :

30 4 1,15 * 5'' excutera une commande 4:30 du matin les 1er et 15 de chaque mois, et chaque vendredi.


Exemple de fichier crontab

# utiliser /bin/sh pour lancer les commandes, quoiqu'en dise /etc/passwd.
SHELL=/bin/sh
# Envoyer les rsultats Paul, sans tenir compte du propritaire
SYSTMES DEXPLOITATION LINUX


139
MAILTO=paul
#
# Chaque jour, 5 minutes aprs Minuit
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# Le premier de chaque mois 14h15 - Rsultat envoy Paul
15 14 1 * * $HOME/bin/monthly
# Les jours de la semaine 22h, nerver Joe
0 22 * * 1-5 mail -s "Il est 22h" joe%Joe,%%O sont tes enfants ?%
23 0-23/2 * * * echo "Tous les jours, 23mn aprs 0h, 2h, 4h..."
5 4 * * sun echo "Tous les dimanches 4h 05"

Les commandes at , batch , atq et atrm

Commandes qui permettent de mmoriser, examiner ou supprimer des jobs excuter ultrieurement.

Syntaxes :

at [-V] [-q fichier] [-f fichier] [-mldbv] HEURE
at -c commande [commande...]
atq [-V] [-q fichier] [-v]
atrm [-V] commande [commande...]
batch [-V] [-q fichier] [-f fichier] [-mv] [HEURE]

Description :

Les commandes at et batch lisent, depuis l'entre standard, ou depuis un fichier, des commandes qui
seront excutes , en utilisant /bin/sh.

at lance les commandes indiques une heure prcise.

atq affiche la liste des jobs en attente d'excution.
Si la commande est lance par le Super-Utilisateur, atq affiche la liste des travaux en attente pour tous les
utilisateurs.

atrm efface les travaux en attente.

batch excute les commandes indiques lorsque la charge systme le permet.

at permet d'indiquer l'heure de lancement de manire assez complexe. Il accepte des spcifications de la
forme HHMM ou HH:MM pour excuter un travail une heure donne de la journe en cours (ou du
lendemain si l'heure mentionne est dj dpasse). On peut aussi lui fournir l'un des arguments suivants :

midnight (minuit)
noon (midi)
teatime (l'heure du th, soit 16 heures).
Il est galement possible de fournir un suffixe du type AM (matin), ou PM (aprs-midi) avec une heure
sur un cadran de 12 heures. On peut indiquer le jour de lancement, en prcisant une date du type
nom du mois (en anglais) jour et ventuellement anne, ou encore une date du type MMJJAA ou
MM/JJ/AA ou JJ.MM.AA.
SYSTMES DEXPLOITATION LINUX


140

On peut indiquer une heure de la forme now(maintenant) + nombre d'units, o les units peuvent tre
minutes, hours, days (jours), ou weeks (semaines) et on peut galement demander at de dclencher le
travail le jour mme en ajoutant le suffixe today ou le lendemain en ajoutant tomorrow.

Exemple : lancer un job 16 heures, 3 jours plus tard : at 4pm + 3 days
lancer un job 10 heures du matin le 31 Juillet : at 10am Jul 31
lancer un job 1 heure du matin le lendemain : at 1am tomorrow.

Aussi bien at que batch utilisent l'entre standard, ou dans le fichier indiqu par l'option -f.
Le rpertoire de travail, l'environnement ainsi que le umask sont mmoriss au moment de l'invocation.
L'appelant recevra par courrier (mail) les messages crits sur les flux de sortie standard et d'erreur standard,
s'il y en a.

Le Super-Utilisateur peut toujours employer ces commandes ( at , batch , etc.)

Pour les autres utilisateurs, les permissions sont dtermines par les fichiers /etc/at.allow et
/etc/at.deny

Si le fichier /etc/at.allow existe, seuls les utilisateurs dont les noms sont mentionns dans ce fichier
peuvent utiliser la commande at .

Si /etc/at.allow n'existe pas, at vrifie si le fichier /etc/at.deny existe, et tous les utilisateurs non-
mentionns dans ce fichier ont le droit d'invoquer at .

Si aucun de ces deux fichiers n'existe, seul le Super-utilisateur a le droit d'appeler at .

Un fichier /etc/at.deny vide signifie que tous les utilisateurs ont le droit d'appeler ces commandes, c'est
la configuration par dfaut.

Options :

-V Afficher un numro de version sur la sortie d'erreur standard.

-m Envoyer un courrier l'utilisateur lorsque le travail est termin, mme s'il n'a rien crit sur ses
flux de sortie.

-f fichier Lire le job excuter dans le fichier et non pas sur l'entre standard.

-l Est un alias pour atq.
-d Est un alias pour atrm.

-b Est un alias pour batch.

-v Pour atq, afficher les travaux termins mais pas encore effacs de la file. Pour les autres,
afficher les heures de lancement programmes.

-c Imprimer sur la sortie standard les travaux mentionns sur la ligne de commande.

Rsum dutilisation des commandes at et batch
SYSTMES DEXPLOITATION LINUX


141

Lancement de travaux une date prcise (date et heure). Une seule excution.

Syntaxe simple de at

at heure [ date ] [ +inc ]

o :

heure : hh[mm] [ am ou pm ] [noon / midnight / now / next ]

date : mmjj ou w today / tomorrow

inc : nombre [ minutes / hours / days /months / weeks / years ]

Exemples :

at 5 pm Friday ( 17 heures le vendredi prochain) < nom_job

at now +1 day (demain la mme heure ) < nom_job

at 1530 Nov 27 ( le 27 novembre 1530 )

batch

liste de commandes

ctrl/D

SYSTMES DEXPLOITATION LINUX


142
VI LA GESTION MMOIRE

Ce quest la mmoire

On appelle mmoire tout dispositif ou support permettant de recueillir et de conserver (stocker) dans un
ordinateur, des informations destines un traitement ventuel.
La mmoire est la ressource la plus importante dun systme informatique.


Caractristiques des mmoires

o La capacit (en Mga ou Giga octets)
o Format (technologie)
o Type daccs (accs alatoire, accs direct)
o Temps daccs (en ns, s, ms)
o Vitesse de transfert
o Cycle de lecture/criture et volatilit.

Classes des mmoires

Il existe deux classes de mmoire :

o Mmoire Centrale : RAM, ROM, PROM, EEPROM
o Mmoires Auxiliaires : Mmoire Magntique, Mmoire Optique ou Laser.

Hirarchie des mmoires

o Mmoire Cache (trs grande vitesse (zone tampon en la mmoire centrale et lU.C))
o Mmoire Centrale
o Mmoire Secondaire ou Mmoire de masse (Disques, C.D, Disquettes)

Notion de mmoire virtuelle

La mmoire centrale qui est un dispositif hard et trs coteuse, est souvent insuffisante pour les systmes
dexploitation. Dou lide daugmenter sa capacit en utilisant une partie du disque. La zone dextension sur
disque est appel Mmoire auxiliaire . La mmoire centrale et la mmoire auxiliaire est appele
Mmoire Virtuelle .

Organisation et gestion de la mmoire virtuelle

Pour pouvoir grer la mmoire virtuelle, le systme dexploitation dcoupe cette zone en blocs de taille fixe
quon appelle pages .

Chaque programme excuter est dcoup en pages. Donc un programme peut avoir des pages en mmoire
centrale et des pages en mmoire auxiliaire et au besoin le systme dexploitation ramne une page du disque
vers la mmoire centrale comme il peut faire lopration inverse. Ce mouvement de pages ou ce va et
vient sappelle swapping .

SYSTMES DEXPLOITATION LINUX


143
Schma de principe

Mmoire Centrale Disque


prog1 prog1 prog2 prog2 prog1


swapping






prog1 prog2 prog4 prog4








Le systme dexploitation utilise le principe de mmoire virtuelle et de pagination.

Avantages de la mmoire virtuelle :

o La taille des programmes peut tre suprieure la taille mmoire centrale.
o Plusieurs programmes peuvent tre lancs en mme temps (Partage de la M.C)
o Protection des page

La taille de la page peut tre de 4Koctets, 8Koctets ou plus (Dpend de la version du systme)

Le systme dexploitation UNIX, dfinit sa Mmoire extension ou zone swap sur une partition du
disque.

Les commandes de gestion de mmoire :

Les commandes qui donnent de linformation sur la mmoire :

La commande free

Permet dafficher les quantits de mmoires libres et utilises.
free affiche les quantits totales de mmoire et de zone de swap libres et utilises dans le systme, ainsi
que la mmoire partage et les buffers utiliss par le noyau.

Syntaxe :

free [-b | -k | -m] [-o] [-s nb_sec ] [-t] [-V]

Options :

-b affiche les quantits en octets
-k en kilo-octets (affichage par dfaut)
-m en mga- octets.

SYSTMES DEXPLOITATION LINUX


144
-t total de la mmoire du systme.
-o empche l'affichage de la ligne des buffers. Sans cette option, free soustrait/additionne la mmoire
des buffers des quantits de mmoire utilise/libre (respectivement).
-s active un affichage continu toutes les nb_sec secondes. En fait vous pouvez indiquer une valeur
dcimale pour nb_sec, puisque usleep(3) est utilis pour obtenir un dlai avec une rsolution en
micro-secondes.

Le fichier /proc/meminfo contient des informations sur la mmoire.

La commande vmstat

Donne des statistiques sur les mmoires vives et virtuelles, sur le disque et sur le CPU
vmstat affiche des informations sur les processus, la mmoire, la pagination, block IO et lactivit CPU.

Informations fournis pas vmstat

procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
0 0 0 4280 1692 1376 12232 0 1 1 1 120 7 0 0 99

Syntaxe :

vmstat [-n] [delai [ count]]

Options :


-n Affichage de lentte une seule fois lors dun affichage continu.

dlai valeur en secondes qui dtermine la priodicit

count Nombre de priodes, si omis valeur infinie.

Description des informations fournies :

procs

r: Le nombre de processus en attente dexcution. ( Si cest un grand nombre, il diminution des
performances du systme)

b: Le nombre de processus en attente dun venement (E/S). (Si ce nombre est trop grand, il y a goulot
dtranglement des E/S)

w: Le nombre de processus en zone swap. ( Si valeur grande, insuffisance mmoire)

memory

swpd: taille de la mmoire virtuelle occupe. (Koctets)
free: Taille mmoire libre.(Koctets)
SYSTMES DEXPLOITATION LINUX


145
buff: Taille mmoire utilise par les buffers (koctets).
cache : Taille mmoire cache utilis. (Koctets)

swap

si: Le nombre de pages swap charges en mmoire. (kB/s).
so: Le nombre de pages swap envoyes sur disque (kB/s).
Si ces nombres sont importants, le systme est surcharg.

IO

bi: blocs en sortie vers une unit priphrique (blocks/s).
bo: blocs en entre dune unit priphrique (blocks/s).
Ces valeurs indiquent le niveau dactivit des E/S. (Disques, CD, Disquettes)

System

in: Le nombre dinterruptions par seconde, incluant lhorloge.
cs: Le nombre de context switches par seconde

CPU

Pourcentages sur loccupation totale du CPU.
us: Temps utilisateur
sy: Temps systme
id: Temps dattente.

Les fichiers associs :

/proc/meminfo
/proc/stat
/proc/*/stat

La gestion de la zone swap :

Il arrive parfois que la zone swap dfinie linstallation ne suffit pas, et dans certains cas elle est peut tre
omise.

Unix offre la possibilit daugmenter cette zone swap.

Lidal est que votre disque dispose dune partition vide ou offre la possibilit de dfinir une nouvelle
partition, mais cela nest souvent pas le cas frquent.

Pour pouvoir raliser cette extension de la zone swap UNIX met notre disposition un certain nombre de
commandes qui permettent de grer cette zone swap.


Les commandes de gestion de la zone swap :

SYSTMES DEXPLOITATION LINUX


146
La commande mkswap

Permet de crer une zone swap supplmentaire sur disque (partition ou fichier disque).
Cette zone peut tre rajout tout moment, comme il peut tre supprim tout moment.

Syntaxe :

mkswap nom-de-fichier ou fichier spcial (pour une partition)

La commande swapon

Permet dactiver une zone swap.

Syntaxe :

swapon [-ahps] [priphrique ou fichier]

Options :

-a Recherche dans /etc/fstab les priphriques (ou fichiers) marqus sw pour les activer comme
zones swap.
-h Affichage de laide
-p priorit Permet de spcifier un degr de priorit pour la zone swap.
-s Affiche les zones swap actives

La commande swapon

Permet de dsactiver une zone swap.

Syntaxe :

Swapoff [-ah] [zone swap]

-a Recherche dans /etc/fstab les priphriques (ou fichiers) marqus sw pour les dsactiver.
-h Affichage de laide

tapes suivre pour crer une nouvelle zone swap:

1) Rservation de lespace pour dfinir la zone swap (pour un fichier, pas ncessaire pour une partition
existante)

Exemple pour un espace de 10 Mga octets :

dd if=/dev/zero of=zone_swap bs=1024 count=10240 (attention bs et count sont ncessaires)

2) Dfinir cet espace comme zone swap

mkswap zone_swap [taille] (10240)
3) Activation de la zone swap cre :

SYSTMES DEXPLOITATION LINUX


147
swapon zone_swap


4) Vrification de lexistence de cette zone swap

swapon s (donne toute la liste) ou free (espace swap total)

5) Dsactivation de la zone swap

swapoff zone_swap