Vous êtes sur la page 1sur 396

Cours SII

Anne 20142015
Stage dinformatique
pour lingnieur
Marc Baudoin
cole nationale suprieure
de techniques avances
Cours SII
Anne 20142015
Stage dinformatique
pour lingnieur
Marc Baudoin
cole nationale suprieure de techniques avances
828, boulevard des Marchaux - 91762 PALAISEAU CEDEX - France
Marc Baudoin, 2009, 2010, 2011, 2012, 2013, 2014
Ce document est mis disposition selon les termes de la licence c Creative
Commons attribution pas dutilisation commerciale pas de modication 4.0
international (cbed CC BY-NC-ND 4.0) :
http://creativecommons.org/licenses/by-nc-nd/4.0/deed.fr
Vous tes autoris :
Partager copier, distribuer et communiquer le matriel par tous moyens et sous
tous formats.
Lorant ne peux retirer les autorisations concdes par la licence tant que vous
appliquez les termes de cette licence.
Selon les conditions suivantes :
b
Attribution Vous devez crditer luvre, intgrer un lien vers la licence
et indiquer si des modications ont t eectues luvre. Vous devez
indiquer ces informations par tous les moyens possibles mais vous ne pouvez
pas suggrer que lorant vous soutient ou soutient la faon dont vous avez
utilis son uvre.
e
Pas dutilisation commerciale Vous ntes pas autoris faire un usage
commercial de cette uvre, tout ou partie du matriel la composant.
d
Pas de modications Dans le cas o vous eectuez un remix, que vous
transformez, ou crez partir du matriel composant luvre originale, vous
ntes pas autoris distribuer ou mettre disposition luvre modie.
Vous ntes pas autoris appliquer des conditions lgales ou des mesures tech-
niques qui restreindraient lgalement autrui utiliser luvre dans les conditions
dcrites par la licence.
Notes :
Vous ntes pas dans lobligation de respecter la licence pour les lments ou
matriel appartenant au domaine public ou dans le cas o lutilisation que vous
souhaitez faire est couverte par une exception.
Aucune garantie nest donne. Il se peut que la licence ne vous donne pas
toutes les permissions ncessaires pour votre utilisation. Par exemple, certains
droits comme les droits moraux, le droit des donnes personnelles et le droit
limage sont susceptibles de limiter votre utilisation.
Patrick Rougeau,
qui ma permis de devenir
ce que je suis.
Sommaire
Sommaire 9
Avant-propos 11
I Introduction 15
1 Le stage dinformatique pour lingnieur 17
2 Reprsentation et mesure de linformation 23
3 Premier contact 29
II Du texte et des diteurs de texte 41
4 Le texte et son codage 43
5 Lditeur de texte Emacs 53
6 Les diteurs de texte vi et Vim 67
III Linterprteur de commandes 77
7 Linterprteur de commandes 79
8 Gestion, organisation et traitement des chiers 97
9 Commandes, processus et redirections 157
10 Impression 207
9
11 Connexion distance 221
12 Programmation 231
IV Cration dun site Web 251
13 Formats de documents et historique de la toile 253
14 HTML, XHTML 263
15 Feuilles de style CSS 283
16 Organisation structurale dun site Web 321
Annexes 341
A Rcapitulatif des commandes des diteurs de texte 343
B Rcapitulatif des commandes 347
C Rcapitulatif des lments HTML et des proprits CSS 351
Bibliographie 355
Index 363
Index Du texte et des diteurs de texte 365
Index Linterprteur de commandes 367
Index Cration dun site Web 373
Liste des tableaux 377
Table des gures 379
Table des listages 381
Table des matires 383
Avant-propos
Former des ingnieurs capables das-
surer la conception, la ralisation et la
direction de systmes complexes, sous
des contraintes conomiques fortes et
dans un environnement international.
ENSTA ParisTech
C
e document est le support de cours du stage dinformatique pour lin-
gnieur (SII) de lcole nationale suprieure de techniques avances
1
(ENSTA ParisTech), destin enseigner aux futurs ingnieurs les ru-
diments de lutilisation dun systme informatique. Il se veut le plus
universel possible et une grande partie de son contenu sapplique tout environne-
ment informatique sous UNIX.
Certaines particularits propres celui de lENSTA ParisTech doivent nan-
moins tre mentionnes. An de les distinguer clairement, elles seront composes
comme ce paragraphe, avec une barre verticale grise en bordure de la marge gauche
et le logo de lENSTA ParisTech dans celle-ci.
En revanche, ce document ne se veut en aucun cas complet ou exhaustif. Il
sagit dun document dintroduction que les plus curieux pourront complter par
les ouvrages mentionns dans la bibliographie en particulier le livre La machine
UNIX [56], qui tait le support du prcdent professeur responsable de ce cours
ainsi que par les pages Web indiques en n de certaines sections et qui sont repres
par une barre verticale grise en bordure de la marge gauche. Beaucoup de ces pages
sont des articles de la version franaise de lencyclopdie Wikipdia. Il peut tre
intressant de consulter galement les articles correspondants en anglais accessibles
grce llment Autres langues du menu de navigation situ la gauche de chaque
page car ils sont parfois plus dtaills.
1. http://www.ensta-paristech.fr/
11
Avant-propos
Le ton de ce document est volontairement incisif. Il faut admettre que la situation
de linformatique aujourdhui ne laisse augurer rien de bon pour le futur. En eet,
depuis quelques annes, toute diversit a quasiment disparu du march informatique
et un ordinateur a maintenant toutes les chances dtre un PC (dont le nombre
de constructeurs est de plus en plus restreint) dot dun microprocesseur Intel et
fourni obligatoirement avec Windows (quon peut se faire rembourser avec les pires
dicults du monde si lon souhaite utiliser un autre systme dexploitation). Aucun
autre domaine industriel nest victime dune telle rduction des choix. Accepterait-
on, au niveau mondial, de navoir quune poigne de constructeurs automobiles, un
seul fabricant de pneus et un seul ptrolier ? videmment non. Cependant, cela ne
choque absolument personne au niveau de linformatique... Une certaine diversit
existe encore dans linformatique embarque (tlphones mobiles, baladeurs MP3,
GPS, botiers de raccordement ADSL, quipements de tlcommunication, sondes
spatiales, etc.) mais malheureusement sans que le grand public en ait rellement
conscience.
Bien entendu, les positions exprimes par lauteur
2
de ce document nengagent
que lui.
Comment lire ce document ?
Le stage dinformatique pour lingnieur tant une introduction pratique lin-
formatique, il sera bien plus ecace de lire ce document devant un ordinateur, en
reproduisant les exemples et en eectuant les commandes proposes. On a beau
regarder le rugby la tlvision, on aura lair malin sur un terrain si on na jamais
pratiqu, cest pareil en informatique, on apprend bien mieux en pratiquant. Il est
donc vivement conseill de lire la suite de ce document proximit dun ordinateur.
Par ailleurs, la version PDF de ce document ore lavantage sur la version
imprime que les hyperliens (rfrences croises, liens vers les pages Web) y sont
actifs et permettent donc de naviguer plus facilement en son sein et vers les pages
Web indiques.
Sur la toile
Le site de rfrence concernant ce cours est :
http://www.babafou.eu.org/ensta/sii/
Vous y trouverez :
la dernire version de ce document au format PDF;
les consignes pour le projet ;
les prsentations utilises en cours magistral ;
2. Et lauteur en question a quelques avis bien tranchs en matire dinformatique...
12
Avant-propos
les documents utiliss lors des petites classes.
Terminologie
Linformatique fait un usage intensif de termes en anglais. On lit parfois et on
entend souvent son sujet une sorte de magma mlangeant sans vergogne franais,
anglais, nologismes et barbarismes
3
.
Jessaierai autant que possible demployer un franais chti, en indiquant les
termes anglais quivalents lorsque cela savrera ncessaire.
Pour faire avancer le Schmilblick
4
Je vous invite me faire part de vos remarques concernant ce document par
courriel ladresse <babafou+sii@babafou.eu.org>.
Remerciements
Je tiens remercier les personnes qui ont permis lamlioration de ce document
par leurs remarques et leurs suggestions, en particulier Olivier Billaud et Michael Do
Cao.
3. Jentends rgulirement des gens qui parlent de dlter un chier. uelle horreur...
4. Comme disait Pierre Dac : Le Schmilblick des frres Fauderche est, il convient de le souligner,
rigoureusement intgral, cest--dire quil peut la fois servir de Schmilblick dintrieur, grce la taille
rduite de ses gorgomoches, et de Schmilblick de campagne grce sa mostoblase et ses deux glotosifres
qui lui permettent ainsi durnapouiller les istioplocks mme par les plus basses tempratures. a cest
clair, jusque l !
13
Premire partie
Introduction
1
Le stage dinformatique pour lingnieur
T
out ingnieur utilise aujourdhui quotidiennement loutil informatique.
ue ce soit pour communiquer par courrier lectronique, pour consul-
ter des sites Web, pour rdiger des documents, pour utiliser des bases
de donnes, pour faire de la CAO, pour eectuer des simulations, pour
programmer, etc. Lordinateur est un instrument incontournable.
Nanmoins, on en est venu oublier le but de linformatique. Rappelons que le
mot informatique est un mot-valise n de la fusion des mots information et
automatique . Si linformatique donne eectivement accs, grce lInternet, une
masse dinformation considrable (o il est parfois dicile de faire la part des choses),
le ct automatique est bien souvent oubli et un ordinateur nest pour beaucoup
quun appareil avec lequel on passe son temps agiter une souris pour dplacer des
icnes...
Lutilisation dun ordinateur est de plus en plus rptitive alors quelle devrait
tre ecace. La faute en revient pour beaucoup aux interfaces graphiques qui, si elles
ont lavantage de la simplicit, ont beaucoup perdu en ecacit par rapport ce qui
existait avant lintroduction de la souris et des fentres.
Lorsquon parle dinterfaces graphiques, cest souvent pour citer leur ergonomie
et leur intuitivit. On oublie malheureusement que ce sont deux notions relatives
un environnement culturel donn. Utiliser une interface graphique est intuitif
lorsquon en connat dj une autre, relativement semblable. Donnez des couverts
un Chinois, qui na jamais connu que des baguettes, il aura les pires dicults
manger avec. Donnez-moi des baguettes, je nirai par avoir une crampe au poignet.
Et chacun vous dira que sa faon de manger est plus ergonomique et intuitive que
celle de lautre. Tout est relatif.
http://fr.wikipedia.org/wiki/Informatique
1.1 Objectifs du cours
Dans la mesure o une grande partie des cours de lENSTA ParisTech utilise
loutil informatique, le premier objectif de ce cours est de permettre aux lves
17
Chapitre 1. Le stage dinformatique pour lingnieur
dutiliser au mieux les moyens informatiques de lENSTA ParisTech. Mais nous
essaierons nanmoins de dgager des principes gnraux applicables tout systme
informatique ds que possible.
En particulier, seront abords :
lutilisation dun diteur de texte ;
linterprteur de commandes sous UNIX ainsi quun certain nombre de com-
mandes usuelles ;
la conception de pages Web, ce qui donnera lieu la ralisation dun projet
not.
1.2 uest-ce quun systme dexploitation?
1.2.1 Gnralits
Un ordinateur est un ensemble de composants matriels destin faire fonc-
tionner des logiciels. Entre ces composants (microprocesseur, disque dur, etc.) et
les logiciels dapplication (ceux qui sont visibles pour lutilisateur, tels les logiciels
de bureautique), on intercale un logiciel particulier appel systme dexploitation
(operating system en anglais).
Celui-ci permet de masquer aux logiciels les particularits du matriel, il gre les
ressources et arbitre les demandes des logiciels.
Il existe plusieurs systmes dexploitation, le plus rpandu (mais certainement
pas le mieux conu) tant Windows. Les ordinateurs de lENSTA ParisTech, quant
eux, fonctionnent avec un systme dexploitation appel UNIX.
http://fr.wikipedia.org/wiki/Systme
_
dexploitation
http://fr.wikipedia.org/wiki/Liste
_
des
_
systmes
_
dexploitation
1.2.2 UNIX
UNIX a t cr en 1969 dans le cadre dun programme de recherche des Labo-
ratoires Bell. Il emprunte de nombreux concepts un autre systme dexploitation
appel Multics (Multiplexed Information and Computing Service). UNIX sappelait
dailleurs lorigine Unics (pour Uniplexed Information and Computing Service), par
drision pour la complexit de Multics, alors que les crateurs dUnics visaient la
simplicit.
Distribu trs librement lpoque, UNIX a engendr toute une famille de
systmes dexploitation et de nombreux concepts introduits par UNIX ont t repris
par dautres systmes dexploitation.
Aujourdhui, UNIX nexiste plus en tant que systme dexploitation, il sagit
dune spcication laquelle sont conformes un certain nombre de systmes dex-
ploitation. Parmi ceux-ci, on peut citer (par ordre alphabtique) :
AIX, lUNIX dIBM;
18
1.2. uest-ce quun systme dexploitation ?
les drivs de BSD (Berkeley Software Distribution, un UNIX grandement
redvelopp par luniversit de Berkeley) : Darwin (qui est au cur de Mac
OS X), DragonFly BSD, FreeBSD, NetBSD et OpenBSD;
HP-UX, lUNIX dHP;
Linux, dont il existe de nombreuses distributions (Arch Linux, CentOS, De-
bian, Fedora, Gentoo, Linux Mint, Mageia, openSUSE, Red Hat Enterprise
Linux, Slackware, SUSE Linux Enterprise, Ubuntu, etc.) ;
Oracle Solaris, lUNIX dOracle (conu lorigine par Sun Microsystems,
entreprise rachete par Oracle en 2010).
http://www.unix.org/
http://fr.wikipedia.org/wiki/UNIX
http://fr.wikipedia.org/wiki/Philosophie
_
dUnix
http://www.levenez.com/unix/
http://fr.wikipedia.org/wiki/Type
_
Unix
http://fr.wikipedia.org/wiki/Multics
http://fr.wikipedia.org/wiki/AIX
http://fr.wikipedia.org/wiki/Berkeley
_
Software
_
Distribution
http://www.freebsd.org/
http://www.netbsd.org/
http://www.openbsd.org/
http://www.hp.com/go/hpux/
http://www.kernel.org/
http://www.oracle.com/us/products/servers-storage/solaris/
http://cm.bell-labs.com/cm/cs/who/dmr/otherunix.html
http://en.wikipedia.org/wiki/The
_
UNIX-HATERS
_
Handbook
1.2.3 Pourquoi UNIX lENSTA ParisTech?
Dans la mesure o lon estime que Windows quipe 95 % des ordinateurs de
la plante, pourquoi donc utiliser UNIX lENSTA ParisTech? Il est en eet rai-
sonnable de penser que les ingnieurs ENSTA ParisTech, dans leur grande majorit,
travailleront sur un PC quip de Windows ds leur premier emploi et nauront plus
de contact direct avec un systme UNIX.
Il y a plusieurs raisons cela.
On pourrait dire quon utilisait UNIX lENSTA ParisTech bien avant la pre-
mire version de Windows. Bien sr, les ordinateurs navaient rien voir avec ceux
daujourdhui et lUNIX de lpoque tait plus dpouill. En particulier, il ne dis-
posait daucune interface graphique. Dailleurs, il est intressant de sarrter un
moment sur ce point. Windows a le dfaut dtre un systme conu de manire rela-
tivement monolithique, o linterface graphique est indissociable des autres services
du systme. Ceci peut sembler comprhensible pour un ordinateur de bureau, dont
linterface graphique est llment le plus utilis mais quen est-il pour un serveur ?
19
Chapitre 1. Le stage dinformatique pour lingnieur
Un serveur, trs souvent, est un ordinateur sans clavier, sans souris, sans cran, entre-
pos dans un local rarement visit par des tres humains. En consquence, un serveur
est gnralement gr via une connexion distance, habituellement non graphique.
On peut alors douter de lutilit dune interface graphique sur un serveur. Pourtant,
beaucoup dentreprises ont un parc de serveurs fonctionnant exclusivement sous
Windows. Sous UNIX, en revanche, linterface graphique est clairement dissocie du
systme dexploitation et elle nest pas ncessaire son bon fonctionnement. Sur les
serveurs sous UNIX, elle nest dailleurs simplement pas installe.
Voil donc un premier argument en faveur dUNIX : sa conception est bien plus
propre que celle de Windows. Et, dans le cadre de lenseignement de linformatique,
il est prfrable dtudier des systmes dexploitation bien conus.
Pour continuer dans les raisons historiques, UNIX est depuis toujours un systme
dexploitation multitche, cest--dire quil est capable de faire fonctionner plusieurs
logiciels en mme temps. Il aura fallu attendre Windows 95 pour avoir une bauche
de fonctionnement multitche.
UNIX est galement un systme dexploitation multi-utilisateur, cest--dire quil
permet plusieurs personnes dutiliser le mme ordinateur simultanment, soit par
la connexion de plusieurs terminaux sur lordinateur (un terminal est un appareil
regroupant un cran et un clavier, voire galement une souris pour les terminaux
graphiques), soit au moyen dune connexion via un rseau. Il aura fallu attendre
Windows NT 4.0 Terminal Server en 1998 pour quil soit possible douvrir une
session distance (uniquement par dport de linterface graphique).
Un autre argument en faveur dUNIX est quil en existe des versions gratuites
(ce qui est nancirement intressant lorsquon dispose dun parc de 200 ordinateurs,
comme lENSTA ParisTech). FreeBSD, Linux, NetBSD et OpenBSD sont dispo-
nibles gratuitement. Mieux encore, leur code source est galement disponible, ce qui
permet de le dcortiquer des ns pdagogiques.
Il faut galement insister sur la scurit des systmes UNIX, bien plus volue que
celle de Windows. Il nexiste en eet pas de virus pour UNIX, pas quon ne puisse en
concevoir mais leur porte serait extrmement limite en raison des contrles daccs
imposs par UNIX.
Bref, mme sil faut, avec un ralisme dsabus, reconnatre que de nombreuses
entreprises ont une informatique 100 % Windows et que la majorit des ingnieurs
ENSTA ParisTech devra sen contenter, les vertus dUNIX pour lenseignement
justient pleinement son choix. Par ailleurs, lexprience montre que quelquun
matrisant UNIX na aucun mal utiliser Windows. Le contraire est faux...
http://fr.wikipedia.org/wiki/Multitche
http://fr.wikipedia.org/wiki/Multi-utilisateur
20
1.3. Linformatique ecace
1.3 Linformatique ecace
Il faut peut-tre relativiser larmation premptoire clturant le paragraphe pr-
cdent. Il existe pour UNIX des interfaces graphiques quivalentes, voire suprieures,
celle de Windows permettant ses habitus de pouvoir utiliser un systme UNIX
de la mme faon.
Nanmoins, est-ce la faon la plus ecace dutiliser un systme informatique ?
Dans le cas dune utilisation pisodique, cela ne fait pas de dirence mais, pour une
utilisation plus soutenue, il existe des outils bien plus ecaces.
En particulier, dans le cadre de ce cours, nous allons utiliser un interprteur de
commandes.
Un interprteur de commandes est un logiciel dans lequel on exprime par crit
ce quon veut faire en tapant des commandes au clavier. La souris ne sert quasiment
jamais et il ny a aucun lment graphique (pas dicnes). Les interprteurs de
commandes sont utiliss en informatique depuis une cinquantaine dannes, bien
avant lapparition des premires interfaces graphiques.
On peut estimer quil sagit dun outil barbare et rtrograde, qui ncessite un ap-
prentissage certain et qui na pas les qualits ergonomiques dune interface graphique.
Cest en partie vrai. En revanche, linterprteur de commandes est particulirement
ecace pour traiter un grand nombre de chiers et enchaner les traitements les
uns aux autres, ce que les interfaces graphiques ne font pas ou alors dicilement
et de manire limite. En eet, lautomatisation dun ensemble de commandes est
trs simple faire (en gros, on les rassemble dans un chier et on soumet ce chier
linterprteur de commandes) alors que lautomatisation dun ensemble de clics
dans une interface graphique, sil est parfois possible, pose nanmoins des problmes
(position des objets sur lcran, dirences dune version dun logiciel un autre,
voire dun ordinateur un autre, traitement des erreurs, etc.).
21
2
Reprsentation et mesure de linformation
D
ans un ordinateur, linformation est reprsente sous forme num-
rique. Le microprocesseur ne sachant raliser que des oprations sur
des nombres et des dplacements de donnes en mmoire, toute in-
formation traiter doit tre exprime sous une forme numrique. En
informatique, on ramne donc tout des nombres.
Dans ce chapitre, nous allons tudier plusieurs systmes de reprsentation des
nombres, en nous limitant aux entiers naturels. Seront en particulier abords les
systmes de reprsentation des nombres couramment utiliss en informatique. Nous
tudierons galement les units permettant de mesurer la quantit dinformation.
2.1 Reprsentation des nombres
La reprsentation des nombres fait appel un ensemble de signes et des rgles
permettant de les associer an de transcrire chaque nombre en une suite de signes.
Ces signes et ces rgles forment un systme de numration.
Les premiers systmes de numration remontent plusieurs milliers dannes.
Les Romains, par exemple, utilisaient le systme de numration que tout le
monde connat. Sept lettres ayant chacune une valeur croissante et combines entre
elles avec un systme dcriture additif ou soustractif en fonction de la position des
lettres, permettent dexprimer les entiers naturels non nuls allant jusqu quelques
milliers. Il est dicile avec un tel systme de numration deectuer des additions et
des soustractions, encore plus des multiplications (ne parlons pas des divisions).
http://fr.wikipedia.org/wiki/Systme
_
de
_
numration
http://fr.wikipedia.org/wiki/Numration
_
romaine
2.1.1 Systme dcimal
Nous utilisons un systme de numration beaucoup plus ecace que celui des Ro-
mains, bas sur la position des chires dans la reprsentation dun nombre. Comme
23
Chapitre 2. Reprsentation et mesure de linformation
il y a dix chires, on appelle cette numration le systme dcimal (quon abrge en
dcimal dans le langage courant).
Ainsi, le nombre 1664 doit se comprendre comme :
1664 = 1 10
3
+6 10
2
+6 10
1
+4 10
0
De manire gnrale, un nombre dcimal crit sous la forme c
n
. . . c
2
c
1
c
0
( c
n
. . . c
2
, c
1
et c
0
tant les chires composant le nombre, de gauche droite) doit se
comprendre comme :
n

i =0
c
i
10
i
Un tel systme de numration permet deectuer facilement les oprations arith-
mtiques usuelles (addition, soustraction, multiplication et division).
http://fr.wikipedia.org/wiki/Systme
_
dcimal
2.1.2 Notation positionnelle et bases de numration
Dans le systme dcimal, la position de chaque chire dans un nombre dtermine
donc par quelle puissance de 10 il doit tre multipli. Cette faon de reprsenter les
nombres est appele notation positionnelle.
Lutilisation des puissances de 10 est un cas particulier, il est possible de gnra-
liser ce systme de numration en utilisant les puissances de nimporte quel entier
suprieur ou gal 2, quon appelle base de numration, et un ensemble de chires en
nombre gal la base. Ainsi, un nombre en base b crit sous la forme c
n
. . . c
2
c
1
c
0
( c
n
. . . c
2
, c
1
et c
0
tant les chires composant le nombre, de gauche droite) doit se
comprendre comme :
n

i =0
c
i
b
i
http://fr.wikipedia.org/wiki/Notation
_
positionnelle
http://fr.wikipedia.org/wiki/Base
_
(arithmtique)
2.1.3 Systmes de numration utiliss en informatique
Trois systmes de numration utilisant la notation positionnelle sont utiliss en
informatique.
24
2.1. Reprsentation des nombres
2.1.3.1 Systme binaire
Le systme binaire (quon abrge en binaire dans le langage courant) utilise la
base 2, qui est la plus petite des bases de numration. Les deux chires utiliss en
binaire sont le 0 et le 1, quon dsigne conjointement sous le nom bit (contraction de
langlais binary digit). Par consquent, n bits permettent de reprsenter les nombres
allant de 0 2
n
1.
Pour simplier lcriture des nombres cods sous forme binaire, on utilise dautres
bases de numration qui sont des puissances de 2. Ainsi, un nombre binaire cod sur
n bits peut galement tre reprsent par un unique chire en base 2
n
. Les systmes
de numration utiliss en informatique selon ce principe sont le systme octal (voir
le paragraphe 2.1.3.2) et le systme hexadcimal (voir le paragraphe 2.1.3.3).
Le binaire est bien adapt la reprsentation des nombres en lectronique (et
donc en informatique) parce quil nutilise que deux chires, qui sont faciles traduire
en phnomnes physiques (prsence ou absence de charge lectrique ou de lumire,
tant passant ou non passant, etc.).
En informatique, les bits sont gnralement regroups par huit pour former des
octets (voir le paragraphe 2.2.1 page suivante).
http://fr.wikipedia.org/wiki/Systme
_
binaire
http://fr.wikipedia.org/wiki/Bit
2.1.3.2 Systme octal
Le systme octal (quon abrge en octal dans le langage courant) utilise la base 8.
Les huit chires utiliss en octal vont de 0 7 et ont la mme valeur quen dcimal.
Un chire octal permet de reprsenter un nombre binaire cod sur trois bits
(puisque 2
3
= 8).
Loctal est utilis, entre autres, pour la reprsentation numrique des droits
daccs aux chiers sous UNIX (voir le paragraphe 8.5.2 page 129).
http://fr.wikipedia.org/wiki/Systme
_
octal
2.1.3.3 Systme hexadcimal
Le systme hexadcimal (quon abrge en hexadcimal dans le langage courant)
utilise la base 16. Les seize chires utiliss en hexadcimal vont de 0 9 (et ont la
mme valeur quen dcimal) et de A F (quon peut galement crire en minuscules)
pour les valeurs de 10 15. Ceci est rsum dans le tableau 2.1 page suivante.
Un chire hexadcimal permet de reprsenter un nombre binaire cod sur quatre
bits (puisque 2
4
= 16).
En informatique, le systme hexadcimal est couramment utilis car il permet de
reprsenter les octets sur deux chires (voir le paragraphe 2.2.2 page suivante).
25
Chapitre 2. Reprsentation et mesure de linformation
hexadcimal 0 . . . 9 A B C D E F
dcimal 0 . . . 9 10 11 12 13 14 15
Table 2.1 Chires utiliss en hexadcimal.
http://fr.wikipedia.org/wiki/Systme
_
hexadcimal
2.2 Units de mesure de linformation
2.2.1 Loctet
Un bit (voir le paragraphe 2.1.3.1 page prcdente) ne pouvant reprsenter que
deux valeurs, il est rarement utilis comme unit de mesure de linformation, mme
sil sagit de la quantit lmentaire dinformation utilise en informatique. On lui
prfre un ensemble de huit bits, appel octet.
Un octet contenant huit bits, il peut donc reprsenter les nombres allant de 0
2
8
1 = 255.
http://fr.wikipedia.org/wiki/Octet
2.2.2 Reprsentation dun octet en hexadcimal
Lhexadcimal est bien adapt la reprsentation numrique des octets. En eet,
chaque demi-octet contenant quatre bits, il peut tre reprsent par un chire en base
2
4
= 16, cest--dire en hexadcimal. Un octet complet peut donc tre reprsent par
deux chires hexadcimaux, allant de 00 FF (255 en dcimal). Rciproquement,
tout nombre pouvant tre reprsent sous la forme de deux chires hexadcimaux
(cest--dire compris entre 00 et FF) est assur de pouvoir tre stock dans un octet.
2.2.3 Units multiples de loctet
Les units multiples de loctet sont traditionnellement dnies au moyen de
puissances de 2, contrairement lusage tabli par le systme international dunits
(abrg par la suite en SI), qui utilise des puissances de 10.
Ainsi, selon lusage habituel, 1 kilooctet ne contient pas 10
3
= 1000 octets mais
2
10
= 1024 octets. De mme, 1 mgaoctet ne contient pas 10
6
= 1000000 octets mais
2
20
= 1048576 octets et ainsi de suite.
An dviter toute confusion, il serait prfrable dutiliser les prxes multipli-
catifs indiqus dans la partie droite du tableau 2.2 page suivante. Ainsi, ce quon
appelle habituellement kilooctet est en fait un kibioctet. En pratique, ces units sont
rarement utilises et lon continue utiliser tort le kilooctet pour dsigner un
kibioctet, le mgaoctet pour dsigner un mbioctet, etc.
26
2.2. Units de mesure de linformation
Prxe SI Prxe binaire
Nom Symbole Valeur Nom Symbole Valeur
kilooctet ko 10
3
kibioctet Kio 2
10
mgaoctet Mo 10
6
mbioctet Mio 2
20
gigaoctet Go 10
9
gibioctet Gio 2
30
traoctet To 10
12
tbioctet Tio 2
40
ptaoctet Po 10
15
pbioctet Pio 2
50
exaoctet Eo 10
18
exbioctet Eio 2
60
zettaoctet Zo 10
21
zbioctet Zio 2
70
yottaoctet Yo 10
24
yobioctet Yio 2
80
Table 2.2 Units multiples de loctet.
Les fabricants de disques durs lont dailleurs parfaitement compris. Ainsi, un
disque dur vendu comme ayant une capacit de 500Go, cest--dire 466Gio, sera
reconnu par une grande partie des systmes dexploitation comme disposant dune
capacit de 466Go (en utilisant la dnition traditionnelle et incorrecte du gigaoctet).
Bien que la mesure de la capacit du disque dur par le fabricant soit rigoureusement
exacte, elle ne correspond malheureusement pas aux habitudes et de nombreux
acheteurs se sentent lss en constatant que la capacit annonce par le systme
dexploitation est sensiblement infrieure celle annonce par le fabricant du disque
dur.
http://fr.wikipedia.org/wiki/Octet
http://fr.wikipedia.org/wiki/Systme
_
international
_
dunits
27
3
Premier contact
A
vant dentrer dans le vif du sujet, il convient de prendre rapidement
contact avec les ordinateurs de lENSTA ParisTech et leur environne-
ment. Le fonctionnement extrieur dun ordinateur utilisant le systme
dexploitation UNIX est en eet trs semblable celui dautres sys-
tmes dexploitation mais certaines particularits doivent tre signales. Nous en
proterons pour faire connaissance avec linterprteur de commandes, qui sera tudi
plus en dtail au chapitre 7 page 79, an de changer le mot de passe provisoire fourni
chaque nouvel utilisateur dun systme informatique, qui doit ltre rapidement
an dviter toute tentative dusurpation didentit.
3.1 La babasse
Dans le jargon des ingnieurs, le terme babasse dsigne un ordinateur
1
.
Les ordinateurs de lENSTA ParisTech sont en pratique des PC, identiques
ceux quon peut trouver dans le commerce, cette dirence prs que leur systme
dexploitation est UNIX (plus prcisment, cest lune des distributions de Linux) et
non pas Windows. Ils sont quips de claviers AZERTY, comme il est dusage en
France.
3.1.1 Le clavier
Lhabitude est pourtant dutiliser des claviers WERTY sous UNIX car de
nombreux signes frquemment utiliss y sont directement accessible alors que leur
saisie ncessite lutilisation de la touche Shift ou de la touche AltGr sur un clavier
AZERTY. Par ailleurs, les symboles utiliss en programmation (parenthses, crochets,
accolades, par exemple) sont regroups par paire et sont aisment accessibles sur un
clavier WERTY, ce qui nest pas le cas sur un clavier AZERTY, o ces symboles
sont parpills faon puzzle. On pourrait objecter que les claviers WERTY ne
1. Jai cru comprendre qu Lyon, le mme terme dsignait un ipper et que Frdric Dard lutilisait
de faon particulirement potique...
29
Chapitre 3. Premier contact
disposent pas des touches permettant de saisir directement les lettres accentues
utilises en franais (du moins les claviers amricains parce que les ubcois utilisent
des claviers WERTY adapts notre langue) mais il existe plusieurs mthodes pour
saisir des lettres accentues avec un clavier WERTY.
Il est noter quil nexiste travers le monde que trois dispositions rpandues
pour les claviers utilisant lalphabet latin. La disposition WERTY, utilise dans
quasiment tous les pays (avec des variantes en fonction des caractres propres chaque
langue), la disposition AZERTY, utilise en France et en Belgique, et la disposition
WERTZ, utilise en Allemagne et dans plusieurs pays dEurope centrale.
Les dirences entre ces trois dispositions sont par ailleurs peu nombreuses,
quelques lettres tant seulement places des endroits dirents sur le clavier. Les
dispositions AZERTY et WERTZ sont en eet drives de la disposition WERTY,
mise au point dans les annes 1870 an de ralentir la frappe pour viter des blocages
mcaniques sur les premires machines crire, ce qui est un comble maintenant que
les mmes claviers sont utiliss sur des ordinateurs qui ne prsentent videmment
pas ce genre de problme.
Il existe bien des dispositions, dites dispositions Dvorak, du nom de leur inventeur,
permettant une frappe rapide mais elles sont peu utilises. Les dispositions Dvorak
sont bases sur lanalyse frquentielle des caractres, qui varie en fonction de la langue
et il existe donc une disposition pour chaque langue. La disposition bpo, inspire
des dispositions Dvorak, a t conue au cours des annes 2000 spciquement pour
la saisie du franais.
Enn, remarquez que lutilisation de la touche Caps Lock et dune lettre accentue
gnre sous UNIX la majuscule accentue correspondante (ce qui est ncessaire
lcriture dun franais correct, contrairement une croyance rpandue, voir dans
la bibliographie le Lexique des rgles typographiques en usage lImprimerie nationale,
page 12, et Orthotypographie, rubrique Accentuation
2
). Sous Windows, cela est facile
pour laccent circonexe et le trma, qui sont obtenus grce une touche morte, mais
la saisie des autres majuscules accentues ncessite une gymnastique particulirement
dsagrable.
http://fr.wikipedia.org/wiki/Disposition
_
des
_
touches
_
des
_
claviers
_
informatiques
http://fr.wikipedia.org/wiki/AZERTY
http://fr.wikipedia.org/wiki/QWERTY
http://fr.wikipedia.org/wiki/QWERTZ
http://fr.wikipedia.org/wiki/Disposition
_
Dvorak
http://bepo.fr/
http://fr.wikipedia.org/wiki/Disposition
_
bpo
http://www.artlebedev.com/everything/optimus/
2. http://www.orthotypographie.fr/volume-I/academie-accentuation.html#Accentuation
30
3.2. Le compte
3.1.2 Le gestionnaire dachage
Le gestionnaire dachage (display manager en anglais) est le logiciel qui contrle
louverture dune session (voir le paragraphe 3.3 page suivante) sur un ordinateur,
cest--dire le fait de pouvoir lutiliser au moyen de son cran, de son clavier et de sa
souris.
Le gestionnaire dachage apparat sur lcran de tout ordinateur disponible.
Le gestionnaire dachage utilis lENSTA ParisTech est reprsent dans la
gure 3.1.
Figure 3.1 Gestionnaire dachage utilis lENSTA ParisTech.
http://en.wikipedia.org/wiki/X
_
display
_
manager
_
(program
_
type)
3.2 Le compte
Avant de pouvoir utiliser un ordinateur sous UNIX, il faut y disposer dun
compte (account en anglais). Ceci comprend :
un identiant (login en anglais) ;
un mot de passe (password en anglais) ;
un espace de stockage pour vos chiers, quon appelle rpertoire personnel
(home directory en anglais).
31
Chapitre 3. Premier contact
Ce compte est cr par le service informatique. Le mot de passe qui vous est fourni
la cration de votre compte est provisoire et il convient den changer rapidement
(voir le paragraphe 3.6 page 36) pour un mot de passe connu de vous seul.
http://fr.wikipedia.org/wiki/Compte#Informatique
3.3 Ouverture de session
Une session reprsente le fait dattribuer des ressources informatiques un utili-
sateur. Dans notre cas, il sagit de pouvoir utiliser un ordinateur au moyen de son
cran, de son clavier et de sa souris.
Louverture de session se fait en saisissant son identiant et son mot de passe dans
le gestionnaire dachage. Selon les environnements, le mot de passe napparat pas
lcran ou alors seulement sous forme de points ou dastrisques, pour des raisons
videntes de condentialit. Attention, UNIX fait la dirence entre majuscules et
minuscules dans lidentiant et le mot de passe.
Si lidentiant et le mot de passe sont corrects, lutilisateur se retrouve dans
un environnement de bureau (voir le paragraphe 3.4.4 page 34), qui est lun des
composants de linterface graphique.
http://fr.wikipedia.org/wiki/Session
_
(informatique)
3.4 Linterface graphique
Linterface graphique sest rpandue partir du milieu des annes 1980. En micro-
informatique, lintroduction du Macintosh, en 1984, a marqu le dbut de lre de
linterface graphique. La premire version de Windows, en 1985, est passe plutt
inaperue et il a fallu attendre Windows 3.0, en 1990, pour que linterface graphique
se gnralise sur PC. Sous UNIX, linterface graphique repose habituellement sur le
X Window System, dont la premire version date de 1984.
http://en.wikipedia.org/wiki/History
_
of
_
the
_
graphical
_
user
_
interface
3.4.1 X Window System
X Window System (galement connu sous les noms X11 et X, nous utiliserons ce
dernier par la suite) est un ensemble logiciel permettant la gestion des services de
base de linterface graphique sous UNIX.
X sait uniquement acher des fentres, grer les interactions avec lutilisateur
(dplacement de la souris et utilisation de ses boutons, saisie au clavier) et dessiner des
objets graphiques lmentaires (pixels, lignes, rectangles, arcs de cercle ou dellipse,
texte).
32
3.4. Linterface graphique
Le serveur X est le logiciel qui contrle lachage sur lcran et qui gre le clavier
et la souris.
Les clients X sont les logiciels qui utilisent le serveur X pour permettre leur
achage.
Serveur X et clients X peuvent fonctionner sur des ordinateurs dirents et
communiquer via le rseau informatique. En pratique, lorsquon travaille sur un
ordinateur (celui sur lequel fonctionne le serveur X), on peut donc excuter des
logiciels (les clients X) sur dautres ordinateurs et les faire sacher sur son cran.
Si lon travaille sur un poste de bureau banal, on peut donc excuter des logiciels
rclamant une grande puissance de calcul sur des serveurs adquats et les faire sacher
sur lcran de son poste.
http://www.x.org/
http://en.wikipedia.org/wiki/X
_
Window
_
System
3.4.2 Les botes outils
Comme indiqu prcdemment, X ne sait dessiner que des objets graphiques
lmentaires. Il ne sait pas ce quest un bouton, un menu, ou tout autre composant
dinterface graphique (widget en anglais).
Pour cela, on lui superpose une bote outils (toolkit en anglais), qui va permettre
de grer des composants dinterface graphique. Les botes outils les plus rpandues
aujourdhui sont GTK+ et t.
Une bote outils utilise les services de bas niveau fournis par X pour proposer
des services de plus haut niveau au logiciel qui lutilise. Par exemple, lachage dun
bouton par une bote outils utilise des tracs de rectangles de direntes couleurs
pour obtenir un eet de relief.
Une telle architecture, compose de plusieurs niveaux et o chaque niveau utilise
les services fournis par le niveau infrieur pour proposer des services plus complexes
au niveau suprieur, est dite architecture en couches. Ce type darchitecture est trs
utilis en informatique.
http://fr.wikipedia.org/wiki/Composant
_
dinterface
_
graphique
http://fr.wikipedia.org/wiki/Xaw
http://www.opengroup.org/motif/
http://fr.wikipedia.org/wiki/Motif
_
(bibliothque
_
graphique)
http://en.wikipedia.org/wiki/XView
http://www.gtk.org/
http://fr.wikipedia.org/wiki/GTK+
http://qt.nokia.com/
http://fr.wikipedia.org/wiki/Qt
33
Chapitre 3. Premier contact
3.4.3 Le gestionnaire de fentres
Le gestionnaire de fentres (window manager en anglais) est le logiciel qui entoure
les fentres dune bordure permettant de les dplacer et den modier les dimensions.
Il permet galement de saranchir des limites imposes par la taille de lcran
en proposant des bureaux virtuels. Un bureau virtuel (virtual desktop en anglais) est
un espace de la taille de lcran o lon peut agencer ses fentres comme on le fait
habituellement. Nanmoins, dans la mesure o lon dispose de plusieurs bureaux
virtuels, il nest pas ncessaire de superposer ses fentres lorsquil y en a beaucoup,
on peut tout fait les rpartir sur plusieurs bureaux virtuels an davoir sur chacun
des fentres juxtaposes et non superposes, ce qui vite davoir chercher la fentre
dont on a besoin et qui, bien videmment, est cache sous plusieurs autres fentres.
Certains gestionnaires de fentres disposent galement de barres doutils places
le long dun ou de plusieurs bords de lcran.
http://fr.wikipedia.org/wiki/Gestionnaire
_
de
_
fentres
http://fr.wikipedia.org/wiki/Bureau
_
virtuel
_
(interface
_
graphique)
http://xwinman.org/
3.4.4 Lenvironnement de bureau
Un environnement de bureau (desktop environment en anglais) est un ensemble
logiciel comprenant un gestionnaire de fentres, un gestionnaire de chiers et diverses
applications utilisant la mme bote outils an davoir une apparence cohrente.
Sous UNIX, les environnements de bureau les plus rpandus sont GNOME,
KDE et Xfce.
Lenvironnement de bureau utilis par dfaut lENSTA ParisTech, reprsent
dans la gure 3.2 page suivante, est GNOME.
http://fr.wikipedia.org/wiki/Environnement
_
de
_
bureau
http://www.gnome.org/
http://fr.wikipedia.org/wiki/GNOME
http://www.kde.org/
http://fr.wikipedia.org/wiki/KDE
http://www.xfce.org/
http://fr.wikipedia.org/wiki/Xfce
3.5 Linterprteur de commandes
Mme sil sera tudi au chapitre 7 page 79, il est ncessaire de prsenter ds
maintenant les rudiments du fonctionnement de linterprteur de commandes.
34
3.5. Linterprteur de commandes
Figure 3.2 Environnement de bureau utilis lENSTA ParisTech.
Dans lenvironnement de bureau GNOME utilis lENSTA ParisTech, le
lancement de linterprteur de commandes seectue en cliquant sur le menu
Activits en haut gauche puis sur licne Terminal .
Linterprteur de commandes ouvre une fentre quasiment vide, lexception
de sa premire ligne qui contient une invite (prompt en anglais) suivie du curseur
symbolisant lemplacement du prochain caractre qui sera tap au clavier. Linvite est
un repre visuel indiquant que linterprteur de commandes attend que lutilisateur
lui ordonne quoi faire. La signication du contenu de linvite sera dtaille au
paragraphe 7.2.2 page 83. Pour simplier les choses, nous utiliserons simplement par
la suite $ comme invite.
Lorsquon tape la commande date (ce que lutilisateur tape au clavier est gur
en gras dans les exemples), suivie de la touche Enter , linterprteur de commandes
ache la ligne suivante la date et lheure puis une nouvelle invite, indiquant quil
attend nouveau que lutilisateur lui demande quelque chose :
$ date Enter
Thu Jun 25 15:16:19 CEST 2009
$
Ceci nous sura pour le moment. Rendez-vous au chapitre 7 page 79 pour de
nouvelles aventures.
35
Chapitre 3. Premier contact
3.6 Changement du mot de passe
Avant toute chose, il faut choisir un nouveau mot de passe. Lobjectif du mot de
passe est de protger laccs votre compte, il est donc essentiel que ce mot de passe
ne puisse pas tre facilement devin par autrui. Il existe galement des logiciels qui
tentent de trouver les mots de passe en essayant diverses combinaisons partir de
mots du dictionnaire, ce qui rend le choix du mot de passe encore plus dicile.
Certains systmes informatiques imposent une longueur minimale, la prsence
dau moins quelques lettres (attention, on fait la dirence entre majuscules et
minuscules), chires ou signes de ponctuation.
En particulier, lENSTA ParisTech, le mot de passe doit respecter les
contraintes suivantes :
comprendre entre 8 et 20 caractres ;
comporter au moins 4 caractres dirents ;
contenir au moins une lettre minuscule ;
contenir au moins un chire.
En revanche, il faut viter les lettres accentues, car elles peuvent tre codes
diremment dun systme un autre (voir le paragraphe 4.3 page 45).
Comment donc choisir un bon mot de passe ?
Un bon mot de passe est un mot de passe susamment compliqu pour quil ne
puisse pas tre devin mais avec un truc qui permette de sen souvenir. En eet, si lon
oublie son mot de passe, il ny a aucun moyen technique simple pour le retrouver, il
faut demander au service informatique de le rinitialiser. Pour viter cela, il ne faut
surtout pas noter son mot de passe quelque part (le grand classique est le pense-bte
coll sur lcran ou sous le clavier), il faut sen souvenir, cest tout.
uels trucs peut-on donc utiliser pour se souvenir de son mot de passe ? Chacun
a les siens mais voici quelques exemples :
une formule mathmatique, physique ou chimique, par exemple eipi+1=0
(e
i
+1 = 0, identit dEuler) ou CnH2n+2 (C
n
H
2n+2
, formule des alcanes non
cycliques) ;
les initiales de chaque mot dune citation, dun proverbe ou dun vers, par
exemple Qjaafa1nuas! (ue jaime faire apprendre un nombre utile aux sages ! ) ;
une phrase en criture phontique ou approximative, par exemple Jai2loq
(que la dcence minterdit dexpliquer).
Par ailleurs, plus un mot de passe est ancien, plus il a de chances dtre dcou-
vert. Il convient donc den changer rgulirement. Certains centres informatiques
imposent leurs utilisateurs de changer leur mot de passe intervalle rgulier.
Ce nest pas le cas lENSTA ParisTech mais ce nest pas une raison pour
passer toute votre scolarit avec le mme mot de passe.
36
3.6. Changement du mot de passe
Enn, vitez de changer votre mot de passe le soir, en n de semaine ou avant de
partir en vacances. Le fait de ne pas lutiliser tout de suite est propice son oubli.
Il est maintenant possible de changer votre mot de passe. Pour cela, utilisez la
commande passwd (pour password) :
$ passwd Enter
Changing password for user sii.
Enter login(LDAP) password: mot de passe actuel Enter
New UNIX password: nouveau mot de passe Enter
Retype new UNIX password: nouveau mot de passe Enter
LDAP password information changed for sii
passwd: all authentication tokens updated successfully.
$
Il vous est demand de saisir (chaque saisie est valider au moyen de la touche
Enter ) :
1. votre mot de passe actuel ;
2. votre nouveau mot de passe (une premire fois) ;
3. votre nouveau mot de passe (une seconde fois).
Aucun des trois mots de passe napparat lcran, ni de manire directement
lisible, ni en achant quelque chose (un gros point ou un astrisque) la place de
chaque caractre. Ceci est parfaitement normal et a pour but de ne fournir aucune
information concernant les mots de passe, pas mme leur longueur, un observateur
indiscret.
Notez galement que le nouveau mot de passe est saisir deux fois lidentique
pour se prmunir dune possible erreur dinattention lors de sa saisie ou de lappui
inopin sur une mauvaise touche.
Si la commande passwd nache pas de message derreur et revient linvite,
votre mot de passe a t correctement chang. Dans le cas contraire, le message
derreur indique la nature du problme, par exemple :
$ passwd Enter
Changing password for user sii.
Enter login(LDAP) password: mot de passe erron Enter
LDAP Password incorrect: try again
Enter login(LDAP) password:
ou bien :
37
Chapitre 3. Premier contact
$ passwd Enter
Changing password for user sii.
Enter login(LDAP) password: mot de passe actuel Enter
New UNIX password: nouveau mot de passe Enter
BAD PASSWORD: it is too short
New UNIX password:
ou bien encore :
$ passwd Enter
Changing password for user sii.
Enter login(LDAP) password: mot de passe actuel Enter
New UNIX password: nouveau mot de passe Enter
Retype new UNIX password: mot de passe diffrent Enter
Sorry, passwords do not match.
New UNIX password:
http://fr.wikipedia.org/wiki/Mot
_
de
_
passe
http://en.wikipedia.org/wiki/Passwd
_
(command)
3.7 Verrouillage et n de session
Si vous quittez temporairement ou dnitivement lordinateur que vous utilisez,
il est respectivement ncessaire de verrouiller ou de fermer votre session. En eet,
en votre absence, nimporte qui pourrait lutiliser et, en particulier, manipuler vos
chiers, ce qui nest pas souhaitable.
Le verrouillage de la session permet de la protger des curieux en masquant
lcran. Il est ensuite ncessaire de saisir votre mot de passe pour dverrouiller la
session.
Fermer la session permet de revenir au gestionnaire dachage. uelquun dautre
peut alors se connecter pour utiliser lordinateur.
Le verrouillage de la session na de sens que si vous vous absentez pendant peu de
temps (ce qui est toujours subjectif). En cas dabsence plus longue, fermer la session
est prfrable car ceci permet quelquun dautre de pouvoir utiliser lordinateur.
Dans lenvironnement de bureau GNOME utilis lENSTA ParisTech, ces
oprations seectuent en allant dans le menu Systme , en haut de lcran, puis
en choisissant :
soit llment Verrouiller lcran ;
soit llment Fermer la session .
38
3.8. Lenvironnement informatique de lENSTA ParisTech
Encore une fois, il est impratif de verrouiller ou de fermer la session en cas
dabsence sinon gare aux JBM...
Nteignez lordinateur en aucun cas. Non seulement, cela ncessite dutiliser
une procdure non accessible aux utilisateurs mais lordinateur peut tre utilis par
quelquun dautre via le rseau (voir ci-aprs).
3.8 Lenvironnement informatique de lENSTA ParisTech
Tous les ordinateurs de lENSTA ParisTech sont relis entre eux par un rseau
local, lui-mme reli lInternet.
Les ordinateurs des salles de cours sont banaliss, cest--dire que vous pouvez
les utiliser indiremment au moyen du mme identiant et du mme mot de passe.
Vous retrouverez alors vos chiers et votre environnement de travail. Ceci est possible
en raison de lutilisation dun systme dauthentication centralis (qui fait que tous
les ordinateurs peuvent reconnatre identiant et mot de passe) et de serveurs de
chiers (qui font que vos chiers ne sont pas stocks sur les ordinateurs des salles de
cours mais sur ces serveurs, eux-mmes accds par ces ordinateurs).
En revanche, les ordinateurs des salles de cours ne sont pas tous semblables,
certains sont plus anciens (donc moins puissants) que dautres. Nanmoins, il est
possible de se connecter via le rseau dun ordinateur un autre (pour exploiter les
capacits dun ordinateur plus puissant mais situ dans une salle de cours loigne, par
exemple), de lancer des logiciels sur lordinateur distant et de les faire sacher sur
lcran du sien. Cest en particulier pour cela quil ne faut pas teindre un ordinateur,
quelquun dautre peut lutiliser distance.
Sur un rseau informatique, chaque ordinateur est repr au moyen dun nom,
choisi arbitrairement. Celui-ci est ach dans le gestionnaire dachage. lENSTA
ParisTech, pour faire simple, les noms des ordinateurs sont construits partir du
nom de la salle, suivi dun numro partir de 1, croissant selon la disposition des
ordinateurs dans la salle.
Par ailleurs, de nombreuses informations concernant lenvironnement informa-
tique de lENSTA ParisTech sont accessibles, aprs identication et authentication
avec les mmes identiant et mot de passe que pour utiliser son compte, sur le site
du service informatique dition :
https://sie.ensta.fr/
39
Deuxime partie
Du texte et des diteurs de texte
4
Le texte et son codage
S
ous UNIX, on aime bien manipuler des chiers contenant du texte et on
ramne beaucoup de choses cela. Par exemple, l o sous Windows,
beaucoup de logiciels se congurent exclusivement au moyen de formu-
laires contenant des boutons cliquer et des cases remplir, stockant
le rsultat on ne sait o ni de quelle faon, sous UNIX, on prfre utiliser un -
chier contenant ces informations sous forme de texte (quitte avoir des formulaires
graphiques permettant de gnrer ce chier pour les utilisateurs novices).
Lavantage des chiers texte est quils sont facilement comprhensibles et quil
est possible au besoin de gnrer ou de modier de tels chiers par des procdures
automatiques, ce qui est impossible faire si la seule faon de grer ces informations
est dutiliser une interface graphique.
4.1 Le texte, cest quoi ?
Avant de poursuivre, il faut dnir un certain nombre de choses et comprendre
ce quon entend par texte .
Tout dabord, un chier texte est, tout simplement, un chier qui contient du
texte.
Mais alors, un chier Word, qui contiendrait par exemple un document tout
simple, sans images, est-il un chier texte ? Vous pouvez faire lexprience, ouvrez
Word, tapez coucou suivi dun retour la ligne, sauvez le document et regardez
la taille du chier. Faute
1
de disposer de Word, LibreOce ou OpenOce font
galement laaire, condition de sauvegarder le chier au format Word 97/2000/XP,
ce qui produit un chier de 9 ko. Nous reviendrons dessus mais, gnralement, un
caractre est cod sur un octet et, coucou faisant six caractres, notre chier devrait
donc avoir une taille avoisinant les sept octets (en comptant le retour la ligne), en
tout cas de cet ordre de grandeur. Si la taille du chier est de 9 ko, cest quil contient
bien plus que son contenu visible. En pratique, cest le cas, un chier Word contient
1. Mais est-ce vraiment une faute ?
43
Chapitre 4. Le texte et son codage
galement des informations sur lauteur dun document, ses versions successives, les
informations de prsentation (gras, italique, savoir si un paragraphe est justi, etc.).
Un chier Word nest donc pas un chier texte, bien quil en contienne un peu.
On peut alors aner notre dnition en disant quun chier texte est un chier qui
ne contient que du texte.
Cest un peu mieux. Il nous reste encore dnir ce quest un chier et ce quest
du texte.
http://fr.wikipedia.org/wiki/Fichier
_
texte
4.2 uest-ce quun chier ?
Pour quasiment tous les systmes dexploitation, dont UNIX, un chier est
simplement une suite doctets (voir le paragraphe 2.2.1 page 26) donc de nombres
entre 0 et 255. La signication qui est faite de ces nombres dpend du format du
chier. Considrons le chier indiqu en gure 4.1 (les espaces et retours la ligne
ne sont l que pour en faciliter la lecture).
10 10
76 70 74 84 77 32 48 97 64 76
76 76 70 74 84 77 32 48 97 64
64 76 76 70 74 84 77 32 48 97
97 64 76 76 70 74 84 77 32 48
48 97 64 76 76 70 74 84 77 32
32 48 97 64 76 76 70 74 84 77
77 32 48 97 64 76 76 70 74 84
84 77 32 48 97 64 76 76 70 74
74 84 77 32 48 97 64 76 76 70
70 74 84 77 32 48 97 64 76 76
Figure 4.1 Exemple de chier.
Sans informations supplmentaires sur sa nature, ce chier pourrait contenir
nimporte quoi : la temprature de mon four mesure toutes les minutes, la vitesse
du vent pendant une tempte...
Maintenant, disons que ce chier contient une image en niveaux de gris. Les
deux premiers octets indiquent sa largeur et sa hauteur (ce qui limite de fait la taille
des images 256 pixels par 256 mais ce nest pas bien grave) et les octets suivants
indiquent le niveau de gris du pixel en question : 0 pour noir, 255 pour blanc, en
passant par tous les gris intermdiaires.
Cet ensemble dinformations, permettant de savoir comment interprter les
octets dun chier, cest ce quon appelle son format.
44
4.3. Codage du texte
On peut poursuivre en imaginant un format pour des images en couleurs, indiqu
en gure 4.2.
10 10
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
--- --- --- --- --- --- --- --- --- ---
Figure 4.2 Exemple de chier contenant une image en couleurs.
Il sagit toujours dune image de 10 pixels par 10, chaque bloc de trois octets (ici,
chaque tiret gure un octet) reprsente un pixel et, dans chaque bloc, le premier octet
le niveau de rouge (entre 0 et 255), le deuxime le niveau de vert et le troisime le
niveau de bleu (en synthse additive des couleurs).
http://fr.wikipedia.org/wiki/Fichier
_
informatique
http://fr.wikipedia.org/wiki/Format
_
de
_
donnes
4.3 Codage du texte
De la mme faon, on peut vouloir reprsenter du texte sous forme dune suite
de nombres et stocker tout ceci dans un chier. Il sagira donc dun chier au format
texte (ou chier texte, on y arrive).
chaque caractre, on associe un nombre, cest ce quon appelle le codage du
texte, et laaire est rgle. Sauf que les choses ne sont pas si simples, on va le voir.
http://fr.wikipedia.org/wiki/Codage
_
des
_
caractres
4.3.1 Le codage ASCII
Le codage ASCII (American Standard Code for Information Interchange), histo-
riquement lun des premiers codages du texte, puisquil date de 1967, est encore
largement utilis aujourdhui.
Comme indiqu dans le tableau 4.1 page suivante, les nombres de 0 31 servent
coder des caractres dits de contrle (retour la ligne, saut de page, etc.). 32 code
lespace, suivie par des signes de ponctuation, les chires, encore de la ponctuation,
45
Chapitre 4. Le texte et son codage
0
n
u
l
1
s
o
h
2
s
t
x
3
e
t
x
4
e
o
t
5
e
n
q
6
a
c
k
7
b
e
l
8
b
s
9
h
t
1
0
n
l
1
1
v
t
1
2
n
p
1
3
c
r
1
4
s
o
1
5
s
i
1
6
d
l
e
1
7
d
c
1
1
8
d
c
2
1
9
d
c
3
2
0
d
c
4
2
1
n
a
k
2
2
s
y
n
2
3
e
t
b
2
4
c
a
n
2
5
e
m
2
6
s
u
b
2
7
e
s
c
2
8
f
s
2
9
g
s
3
0
r
s
3
1
u
s
3
2
s
p
3
3
!
3
4
"
3
5
#
3
6
$
3
7
%
3
8
&
3
9

4
0
(
4
1
)
4
2
*
4
3
+
4
4
,
4
5
-
4
6
.
4
7
/
4
8
0
4
9
1
5
0
2
5
1
3
5
2
4
5
3
5
5
4
6
5
5
7
5
6
8
5
7
9
5
8
:
5
9
;
6
0
<
6
1
=
6
2
>
6
3
?
6
4
@
6
5
A
6
6
B
6
7
C
6
8
D
6
9
E
7
0
F
7
1
G
7
2
H
7
3
I
7
4
J
7
5
K
7
6
L
7
7
M
7
8
N
7
9
O
8
0
P
8
1
Q
8
2
R
8
3
S
8
4
T
8
5
U
8
6
V
8
7
W
8
8
X
8
9
Y
9
0
Z
9
1
[
9
2
\
9
3
]
9
4
^
9
5
_
9
6

9
7
a
9
8
b
9
9
c
1
0
0
d
1
0
1
e
1
0
2
f
1
0
3
g
1
0
4
h
1
0
5
i
1
0
6
j
1
0
7
k
1
0
8
l
1
0
9
m
1
1
0
n
1
1
1
o
1
1
2
p
1
1
3
q
1
1
4
r
1
1
5
s
1
1
6
t
1
1
7
u
1
1
8
v
1
1
9
w
1
2
0
x
1
2
1
y
1
2
2
z
1
2
3
{
1
2
4
|
1
2
5
}
1
2
6
~
1
2
7
d
e
l
T
a
b
l
e
4
.
1

L
e
c
o
d
a
g
e
A
S
C
I
I
.
46
4.3. Codage du texte
les majuscules dans lordre alphabtique, quelques symboles, les minuscules dans
lordre alphabtique et quelques derniers symboles.
Tout ceci occupe en pratique les nombres de 0 127, soit 128 valeurs, ce qui tient
donc sur 7 bits. (128 = 2
7
). En ASCII, le huitime bit est toujours inutilis.
Le codage ASCII prsente un problme majeur. Il ne permet de coder que les
lettres non accentues de lalphabet latin et est donc insusant pour quasiment
toutes les langues autres que langlais.
http://fr.wikipedia.org/wiki/American
_
Standard
_
Code
_
for
_
Information
_
Interchange
4.3.2 Les codages ISO 8859
Or lASCII nutilise que la moiti des nombres quon peut reprsenter avec un
octet. Lenvie a donc t forte dtendre lASCII pour coder dautres caractres dans
cette plage libre allant de 128 255.
Cest lobjet dun ensemble de normes internationales, les normes ISO 8859
(dveloppes de 1987 2004), qui sont dcrites dans le tableau 4.2.
ISO 8859-1 langues de lEurope de louest
ISO 8859-2 langues de lEurope du centre et de lest
ISO 8859-3 langues de lEurope du sud
ISO 8859-4 langues de lEurope du nord
ISO 8859-5 langues utilisant lalphabet cyrillique
ISO 8859-6 langue arabe
ISO 8859-7 langue grecque moderne (monotonique)
ISO 8859-8 langue hbraque
. . .
ISO 8859-15 quasiment identique ISO 8859-1
Table 4.2 Les codages ISO 8859.
Sans rentrer dans les dtails, la partie basse (de 0 127) de chaque norme ISO 8859
est en fait exactement lASCII et la partie haute (de 128 255) code pour les lettres
accentues de chaque ensemble de langues (ISO 8859-1 pour le franais, litalien,
etc., ISO 8859-2 pour le hongrois, le polonais, etc.) ou les alphabets des langues non
latines (ISO 8859-5 ISO 8859-8).
Cest un progrs indniable par rapport lASCII mais il reste deux problmes :
on ne peut pas facilement mlanger plusieurs codages dans un mme chier
texte ou alors il faut indiquer quelque part quel codage est utilis et les ventuels
changements en cours de chier mais, dans ce cas, ce nest plus un chier texte
puisquil comporte des indications en plus du texte ;
47
Chapitre 4. Le texte et son codage
les 128 codes supplmentaires ne susent pas pour coder les caractres des
langues asiatiques (chinois, japonais et coren, par exemple).
Concernant ce dernier point, il faut savoir quil existe par ailleurs de nombreux
codages sur 16 bits compte tenu du nombre de symboles coder pour les langues
asiatiques.
http://fr.wikipedia.org/wiki/ISO
_
8859
4.3.3 Unicode et le codage UTF-8
Avec le dveloppement de linformatique et des tlcommunications, le besoin
se t rapidement sentir de disposer dun systme de codage universel des caractres,
permettant de coder de manire homogne lensemble des caractres, glyphes et
symboles des langues de la plante.
Ceci aboutit en 1991 la norme internationale ISO 10646, plus connue sous
son petit nom : Unicode. Cette norme dnit un systme de codage universel des
caractres, Universal Character Set (UCS).
Il semblait vident que continuer utiliser des nombres sur 8 bits ne surait
pas donc les premires versions dUnicode utilisaient des valeurs sur 16 bits et les
suivantes sont rapidement passes 32 bits. 2
32
est de lordre de 4 10
9
donc cela
devrait laisser susamment de marge an de coder une bonne fois pour toutes
lensemble des systmes dcriture de la plante
2
.
Comme pour les codages ISO 8859, an de faciliter la reprise de lexistant, les
codes de 0 127 dUnicode correspondent aux caractres ASCII quivalents, la
dirence quils sont cods sur quatre octets et non plus sur un seul.
Unicode est une excellente ide sur le papier mais, en pratique, le codage des
caractres sur 32 bits est tout sauf optimal. Prenons un exemple.
La chane de caractres coucou est code en ASCII par les nombres : 99 111
117 99 111 117, sur six octets, comme on peut le voir dans le tableau 4.3 (o chaque
case correspond un octet).
c o u c o u
99 111 117 99 111 117
Table 4.3 Codage de la chane de caractres coucou en ASCII.
En Unicode, la chane de caractres coucou est code par les mmes nombres
mais, chacun occupant quatre octets, le total ncessite 6 4 = 24 octets, comme on
peut le voir dans le tableau 4.4 page ci-contre.
2. Et mme plus. Certaines plages dUnicode sont rserves pour des utilisations exotiques . Ainsi
le tengwar de Tolkien et le klingon de Star Trek disposent de plages rserves permettant de les coder...
48
4.3. Codage du texte
c o u
0 0 0 99 0 0 0 111 0 0 0 117
c o u
0 0 0 99 0 0 0 111 0 0 0 117
Table 4.4 Codage de la chane de caractres coucou en Unicode.
Ceci fait quun chier texte cod initialement en ASCII verrait sa taille quadruple
si on le codait en Unicode et ce pour rajouter trois octets nuls entre chaque octet
signicatif. Ce nest pas acceptable.
En ralit, aucun chier nest cod directement en Unicode sur 32 bits par
caractre parce que, malgr ses vertus, Unicode en lui-mme est loin dorir un
stockage optimal. Cest pourquoi des mthodes de codages plus conomes mais plus
complexes sont utilises.
La plus rpandue est UCS Transformation Format - 8 bits (quon abrge en UTF-
8). Invente en 1992 par Ken Thompson, lun des crateurs dUNIX, UTF-8 peut
paratre droutant par rapport aux codages prcdents. En eet, les caractres ny
sont pas cods sur une longueur xe mais sur un, deux, trois ou quatre octets. Les
caractres ASCII conservent les mmes codes et sont stocks dans un octet (qui a
donc son huitime bit zro). Tout chier ASCII est donc un chier UTF-8. Les
autres caractres sont stocks dans deux, trois ou quatre octets, dont le premier a son
huitime bit un et dont la valeur indique le nombre doctets qui le suivent.
Sans rentrer dans les dtails, donnons juste un exemple permettant dillustrer le
codage en UTF-8. Le tableau 4.5 illustre comment la chane de caractres pt est
code en ISO 8859-1, un octet par caractre.
p t
112 226 116 233
Table 4.5 Codage de la chane de caractres pt en ISO 8859-1.
Le tableau 4.6 page suivante illustre comment la mme chane de caractres est
code en UTF-8. Les deux caractres accentus sont cods chacun sur deux octets,
dont le premier a une valeur strictement suprieure 127, alors que les deux autres
caractres sont cods sur un seul octet, dont la valeur est infrieure ou gale 127,
puisquil sagit de caractres ASCII.
On le voit bien dans cet exemple, un texte rdig en franais et cod en UTF-8
donne donc un chier plus volumineux que sil tait cod en ISO 8859-1, puisque
chaque caractre accentu est cod sur deux octets en UTF-8 contre un seul en ISO
8859-1.
49
Chapitre 4. Le texte et son codage
p t
112 195 162 116 195 169
Table 4.6 Codage de la chane de caractres pt en UTF-8.
Cest dailleurs le cas gnral pour toutes les langues utilisant des caractres en
dehors de lASCII, leur codage en UTF-8 produit des chiers un peu plus volumineux
quavec dautres codages plus limits (ISO 8859 ou codages sur 16 bits pour les langues
asiatiques). En contrepartie, avec UTF-8, il est possible dutiliser tous les caractres
possibles et imaginables dans le mme chier, ce qui est plus quapprciable.
Tous les logiciels modernes grent parfaitement lUTF-8 et cest sans conteste le
codage utiliser dornavant.
http://www.unicode.org/
http://fr.wikipedia.org/wiki/Unicode
http://fr.wikipedia.org/wiki/UTF-8
4.4 Codage des chiers
Lorsquon dispose dun chier texte, comment dterminer son codage ?
Lidal est quil soit indiqu directement dedans. Cest le cas par exemple des
chiers XML, dont la premire ligne indique quel codage est utilis pour le chier :
<?xml version="1.0" encoding="UTF-8"?>
[...]
Le codage peut galement tre indiqu lextrieur du document. Cest le cas
pour les messages lectroniques, dont le codage est indiqu dans len-tte :
[...]
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
[...]
[ corps du message ]
50
4.5. Conversion dun codage vers un autre
4.5 Conversion dun codage vers un autre
4.5.1 La commande iconv
Il peut tre utile de convertir du texte dun codage vers un autre. Imaginez par
exemple que avez un chier cod en ISO 8859-1 que vous voulez convertir en UTF-8.
Il existe pour cela sous UNIX un petit utilitaire appel iconv et qui sutilise comme
ceci :
$ iconv -f iso8859-1 -t utf-8 -o tata toto
Nous naborderons lutilisation de linterprteur de commandes quau chapitre 7
page 79 mais la squence ci-dessus est assez simple comprendre. Elle appelle la
commande iconv en lui demandant de convertir le chier toto (indiqu en n de
ligne), dont le codage dorigine (option -f pour from) est ISO 8859-1 vers le codage
de destination (option -t pour to) UTF-8 et de stocker le rsultat (option -o pour
output) dans le chier tata.
http://en.wikipedia.org/wiki/Iconv
4.5.2 Dans un logiciel
On peut galement tre amen eectuer des conversions directement au sein
dun logiciel. Il est en eet possible davoir manipuler des fragments de texte
provenant dorigines diverses et cods de faons direntes. Ces fragments sont
habituellement convertis le plus tt possible vers un codage plus universel, UTF-8
tant en loccurrence un bon candidat.
Le listage 4.1 montre un exemple de conversion de codage de caractres dans le
langage de programmation Perl.
use Encode ;
[...]
# conversion en UTF-8
$nom = Encode::encode ( utf8 , $nom ) ;
$prenom = Encode::encode ( utf8 , $prenom ) ;
Listage 4.1 Conversion de codage de caractres en Perl.
51
Chapitre 4. Le texte et son codage
4.6 Les diteurs de texte
Un diteur de texte est un logiciel permettant de saisir et de modier des chiers
texte. ne pas confondre avec un logiciel de traitement de texte, qui, comme indiqu
au paragraphe 4.1 page 43, ne travaille pas sur des chiers texte.
En raison de lomniprsence des chiers texte sous UNIX, il y existe de trs
nombreux diteurs de texte. Nous tudierons par la suite les deux plus rpandus, et
dont beaucoup dautres ont repris les caractristiques : Emacs et vi (prononcer les
lettres langlaise : vie ail ).
Il existe aussi des diteurs de texte sur dautres systmes dexploitation quUNIX.
Cest le cas pour Windows, qui est fourni avec lditeur de texte Notepad, ainsi que
pour Mac OS X, qui est fourni avec lditeur de texte TextEdit.
http://fr.wikipedia.org/wiki/diteur
_
de
_
texte
http://fr.wikipedia.org/wiki/Guerre
_
dditeurs
http://en.wikipedia.org/wiki/Comparison
_
of
_
text
_
editors
http://fr.wikipedia.org/wiki/Bloc-notes
_
(Windows)
http://fr.wikipedia.org/wiki/TextEdit
52
5
Lditeur de texte Emacs
E
macs est probablement lditeur de texte le plus rpandu sous UNIX.
Simple demploi et nanmoins trs puissant, il convient aux dbutants
comme aux utilisateurs expriments. Emacs dpasse mme la simple
fonction dditeur de texte puisquun langage dextension (que nous
naborderons pas ici) permet de lui faire faire peu prs nimporte quoi.
http://www.gnu.org/software/emacs/
http://fr.wikipedia.org/wiki/Emacs
5.1 Lancement dEmacs
Emacs se lance depuis un interprteur de commandes au moyen de la commande
emacs suivie du nom du chier diter (les chiers texte ont traditionnellement
une extension .txt) puis du caractre & (qui permet de lancer une commande en
arrire-plan, voir le paragraphe 9.3.2 page 166) :
$ emacs toto.txt & Enter
Si le chier toto.txt existe, son contenu est ach et peut tre modi. Sil
nexiste pas, Emacs ache un contenu vierge et le chier sera cr lors de sa premire
sauvegarde.
En ce qui nous concerne, le chier toto.txt nexiste pas donc Emacs ouvre une
nouvelle fentre semblable celle de la gure 5.1 page suivante.
Vous remarquez, en haut de la fentre, des menus et une range dicnes. Nous
nutiliserons quasiment pas ces outils. Pourquoi ? Emacs est un diteur de texte. Le
priphrique dentre privilgi pour saisir du texte est, bien videmment, le clavier.
Lorsquon utilise un diteur de texte, les deux mains sont donc principalement situes
sur le clavier. Dplacer une main pour agiter la souris puis la ramener vers le clavier
reprsente donc une perte de temps.
53
Chapitre 5. Lditeur de texte Emacs
Figure 5.1 Emacs.
Cest pourquoi nous allons apprendre utiliser Emacs quasi exclusivement au
moyen du clavier. Certaines rares manipulations sont plus ecacement faites avec la
souris et ce seront les seules occasions o celle-ci sera utilise.
Vous remarquez galement deux lignes au bas de la fentre. La dernire, tout en
bas, est appele minibuer (cest le terme consacr et il na pas dquivalent tabli en
franais). Le minibuer sert Emacs pour communiquer avec lutilisateur, soit pour
lui acher des informations soit pour lui poser des questions.
La ligne du dessus est appele ligne de mode (mode line en anglais). Elle ache
diverses informations qui sont mises jour automatiquement si ncessaire.
Enn, la partie principale de la fentre est vide. Si le chier toto.txt avait exist,
son contenu y aurait t ach.
Revenons la ligne de mode. Elle contient :
des indicateurs, ici -U:--- :
le U indique que le chier est (ou sera sil nexiste pas encore) cod en UTF-8
(ce serait un 1 pour de lISO 8859-1),
54
5.2. Saisie du texte
les deux tirets suivant le deux-points se transforment en astrisques
**
lorsque le contenu du chier a t modi mais pas encore sauvegard
sur disque, il sagit dun repre visuel permettant de savoir si le chier a t
sauvegard ou pas ;
le nom du chier, ici toto.txt ;
la position dans le chier, qui peut tre :
All lorsque lensemble du chier est visible dans la fentre,
Top lorsque le chier est trop long pour tre entirement visible dans la
fentre et quon en voit le haut,
Bot (pour bottom) lorsque le chier est trop long pour tre entirement
visible dans la fentre et quon en voit le bas,
un pourcentage indiquant o lon se trouve dans le chier si lon est quelque
part lintrieur ;
le numro de la ligne sur laquelle se trouve le curseur ;
le mode ddition du chier entre parenthses, cest de l que la ligne de mode
tire son nom.
Emacs est en eet capable de reconnatre sur quel type de chier texte on travaille
(texte simple, programme, etc.) et dadapter son comportement en fonction. Le mode
entre parenthses indique ce type. Ici, Emacs a reconnu son extension que le chier
toto.txt est un chier texte simple et sest donc mis en mode Text.
5.2 Saisie du texte
Dans Emacs, la saisie du texte se fait de manire habituelle. La touche eace
le caractre prcdant le curseur, Enter permet de passer la ligne et les touches
ches de se dplacer.
An dexprimenter les fonctionnalits dEmacs, nous aurons besoin dun peu de
texte. Tapez ce qui vous passe par la tte, au moins trois paragraphes (un paragraphe
est spar du suivant par une ligne blanche) contenant chacun trois lignes de texte,
avant daller plus loin.
Si lune des lignes est trop longue pour tenir dans la fentre, elle se continue sur
la ligne suivante, comme on peut voir dans la gure 5.2 page suivante. Il ne sagit pas
de deux lignes mais bien dune seule et mme ligne. Les petites ches recourbes
prsentes dans les marges (et qui sont agrandies dans la gure) sont des repres visuels
permettant de le savoir.
Les lignes dpassant du bord de la fentre donnent un aspect inesthtique au
chier, il est donc prfrable de les viter.
5.3 Les commandes
Les manipulations plus compliques que la simple saisie du texte sont faites grce
des combinaisons de touches appeles commandes.
55
Chapitre 5. Lditeur de texte Emacs
Figure 5.2 Emacs : continuation de ligne.
56
5.3. Les commandes
Celles-ci font appel deux touches du clavier, la touche Ctrl et la touche Meta .
Autant la touche Ctrl vous est familire, autant il est inutile de chercher la touche
Meta sur le clavier, elle ny gure pas. Elle existait sur le clavier de lauteur dEmacs,
Richard Stallman, et elle gure sous ce nom dans toutes les documentations sur
Emacs donc le terme est rest.
Sur des claviers modernes, la touche Meta est remplace par deux touches, quon
peut utiliser indiremment en fonction de ses prfrences :
la touche Alt utilise en conjonction avec une autre touche, cest--dire quon
appuie dabord sur Alt et on la laisse enfonce pendant quon appuie sur
lautre touche puis on relche les deux touches ;
la touche Esc suivie dune autre touche, cest--dire quon tape dabord sur
Esc (en la relchant) puis sur lautre touche.
La notation des commandes est particulire aux documentations sur Emacs et
vous les trouverez partout reprsentes de la mme faon.
Une commande introduite par la touche Ctrl se note C- suivi du caractre
saisir, une commande introduite par la touche Meta se note M- suivi du caractre
saisir.
Par exemple, C-a reprsente lappui sur la touche Ctrl , quon maintient enfonce
en appuyant sur A .
On parle bien ici de caractre et pas seulement de touche. Ainsi, il existe une
commande M-% (il sagit de la commande de recherche et de remplacement, qui
sera aborde plus loin). M-% reprsente lappui sur la touche Alt , quon maintient
enfonce en appuyant sur Shift et % (ou Esc puis Shift et % comme
indiqu plus haut). Lemploi de la touche Shift a son importance car, sans elle, on
aurait un 5 sur un clavier WERTY ou un sur un clavier AZERTY et pas un %.
Les commandes les plus utilises sont introduites directement par C- ou M-, ce
qui revient comme on vient de le voir lappui sur deux touches, voire trois. Mal-
heureusement, le nombre de caractres disponibles sur le clavier est limit et il est en
pratique ncessaire davoir plus de commandes quil ny a de caractres sur le clavier.
Certaines commandes moins utilises sont donc formes de deux combinaisons de
touches, dont la premire est appele prxe. Par exemple, la commande C-x C-c
permet de quitter Emacs. Dans celle-ci, C-x est le prxe. Un prxe nest jamais
utilis seul, il a toujours besoin dtre suivi par quelque chose pour former une
commande complte. Emacs attend que la commande complte ait t saisie avant de
faire quoi que ce soit. Si lon tarde nir la commande aprs avoir saisi le prxe,
Emacs ache celui-ci dans le minibuer, comme indiqu dans la gure 5.3 page
suivante. On peut donc reprendre o lon tait si lon a t distrait ou interrompu.
Il existe gnralement un moyen mnmotechnique pour retenir les commandes
dEmacs, bas sur la signication (en anglais) du caractre suivant C- ou M-. Par
exemple, C-d est la commande permettant deacer (d pour delete) un caractre.
Certaines commandes existent en deux versions, lune introduite par C-, lautre par
57
Chapitre 5. Lditeur de texte Emacs
Figure 5.3 Emacs : achage dans le minibuer dune commande partiellement saisie.
58
5.4. Commandes de dplacement
M-. Dans ce cas, la version introduite par M- a toujours une porte plus importante
que celle introduite par C-. Pour reprendre le mme exemple, l o C-d eace un
caractre, M-d eace la n du mot.
Dans la suite de ce tour dhorizon, nous nallons pas aborder toutes les com-
mandes dEmacs mais seulement la vingtaine de commandes qui servent le plus. Il
est important dexprimenter ces commandes sur les quelques lignes de texte saisies
plus haut, an de bien comprendre leur fonctionnement.
5.4 Commandes de dplacement
Il est rare de rdiger un document de manire linaire. Il est donc utile de pouvoir
se dplacer dans le texte de manire ecace. Les touches ches peuvent tre utilises
pour les petits dplacements mais elles ne permettent pas de grands dplacements
rapides. Utiliser la souris nest pas non plus une bonne solution en raison de la perte
de temps lie aux dplacements de la main.
Heureusement, Emacs fournit plusieurs commandes permettant des dplacements
ecaces.
La commande C-a permet de se dplacer en dbut de ligne (a est la premire
lettre de lalphabet), la commande C-e en n de ligne (e pour end).
La commande C- suivie dune touche che permet de se dplacer de mot en
mot (un mot tant spar dun autre par une espace) pour les ches horizontales et
de paragraphe en paragraphe (un paragraphe tant spar dun autre par une ligne
blanche) pour les ches verticales.
Dans un long document, il est frquent de devoir se positionner sur une ligne
prcise, identie par son numro, par exemple parce quune erreur a t dtecte
cet endroit. La commande M-g M-g (ou M-g g) ache Goto line: dans le minibuer,
demandant quon saisisse le numro de la ligne o aller, suivi de Enter .
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Moving-Point.
html
5.5 Commandes de suppression
La commande C-d (d pour delete) permet de supprimer le caractre situ sous le
curseur, la commande M-d la n du mot partir de la position du curseur jusqu la
prochaine espace ou jusquau prochain signe de ponctuation.
partir de la position du curseur, la commande C-k (k comme kill) supprime la
n de la ligne.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Deletion.html
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Words.html
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/
Killing-by-Lines.html
59
Chapitre 5. Lditeur de texte Emacs
5.6 Excution multiple dune commande
Il est possible dexcuter n fois la mme commande en la prxant par M-n. Ainsi,
on peut eacer 5 lignes au moyen de M-5 C-k.
On peut rpter la dernire commande lidentique, sans avoir besoin de la
retaper, au moyen de C-x z (attention, cest C-x z, pas C-x C-z). Immdiatement
aprs avoir utilis C-x z, il sut de taper une nouvelle fois z pour rpter la mme
commande et ainsi de suite.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Arguments.html
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Repeating.html
5.7 Copier-coller
La procdure dcrite ci-dessous, permettant de copier puis de coller du texte,
nest pas spcique Emacs, mme sil semble opportun de la dcrire ici. En eet,
cette procdure fonctionne avec nimporte quel logiciel manipulant du texte sous
UNIX.
Cest lune des rares occasions o nous allons utiliser la souris. Il existe bien des
commandes dEmacs permettant de slectionner puis de coller du texte en nutilisant
que le clavier mais il faut reconnatre quutiliser la souris est, dans ce cas prcis, plus
ecace.
Pour copier du texte, il sut de le slectionner la souris. On positionne la
souris au dbut du texte copier, on appuie sur le bouton de gauche, on le maintient
ainsi et on dplace la souris la n du texte copier puis on relche le bouton. Rien
que de plus classique ici.
Petite astuce, lorsquon souhaite copier un mot, un double clic quelque part sur
ce mot le slectionne sans avoir faire tout cela. Pour copier une ligne, cest laaire
dun triple clic.
Pour coller le texte pralablement copi, il sut de dplacer la souris lendroit
o lon veut le voir apparatre et dappuyer sur le bouton du milieu (qui est bien
souvent la molette).
Si le mme texte est coller plusieurs endroits, il sut de se repositionner et de
cliquer nouveau sur le bouton du milieu, le texte copi restant en mmoire tant
quune autre portion de texte nest pas copie.
Et cest tout ! Cette mthode est bien plus simple que ce qui se fait sur Macintosh
ou sous Windows, qui implique lutilisation de la souris et du clavier. Sous UNIX,
tout se fait la souris.
5.8 Couper-coller
En revanche, il nexiste pas de procdure quivalente utilisant uniquement la
souris pour raliser un couper-coller. La slection du texte se fait de la mme manire
60
5.9. Commande dannulation des modications
que pour le copier-coller. Puis on utilise la commande C-w pour couper le texte
slectionn et on le colle comme pour le copier-coller.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/
Other-Kill-Commands.html
5.9 Commande dannulation des modications
Lerreur est humaine. Et il arrive rgulirement de commettre une erreur par
mgarde. Il est alors possible dannuler la dernire modication apporte au docu-
ment en utilisant la commande C-/ ou la commande C-
_
(les deux commandes ont le
mme eet, la premire est plus facile saisir sur un clavier WERTY, la seconde est
plus facile saisir sur un clavier AZERTY). En rptant cette commande, on annule
lavant-dernire modication et ainsi de suite.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Undo.html
5.10 Commandes de gestion de chiers
Nous avons maintenant susamment travaill sur notre document pour vouloir
le sauvegarder sur disque.
Il est important, et ceci vaut pour tous les logiciels, deectuer des sauvegardes
rgulires. En eet, entre deux sauvegardes, les modications apportes au document
ne sont stockes que dans la mmoire vive de lordinateur et lon nest jamais labri
dune coupure de courant ou de quelquun qui trbuche sur le cble dalimentation en
le dbranchant au passage, ce qui fait irrmdiablement perdre ces modications. Par
ailleurs, il vaut mieux ne pas compter sur les sauvegardes automatiques que certains
logiciels eectuent, elle se font rarement quand il le faut.
La commande C-x C-s (s pour save) permet de sauvegarder le chier sur disque.
loccasion de la sauvegarde du chier, on peut remarquer que les deux ast-
risques des indicateurs de la ligne de mode ont t remplacs par deux tirets, comme
on peut le voir dans la gure 5.4 page suivante.
Si jamais on a lanc Emacs sans argument, ce qui est mal, et quon souhaite
sauvegarder le chier, il faut lui donner un nom en le sauvegardant. Pour cela, on
utilise la commande C-x C-w (w pour write). Elle demande de saisir le nom donner
au chier, suivi de Enter , dans le minibuer.
Si jamais on a lanc Emacs sans argument et quon souhaite charger un chier, on
utilise la commande C-x C-f (f pour nd). Elle demande de saisir le nom du chier
charger, suivi de Enter , dans le minibuer.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Save-Commands.
html
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Visiting.html
61
Chapitre 5. Lditeur de texte Emacs
Figure 5.4 Emacs : tat de la ligne de mode aprs sauvegarde du chier.
62
5.11. Commandes de recherche et de remplacement
5.11 Commandes de recherche et de remplacement
Emacs a une faon particulire et extrmement ecace deectuer une recherche
par mot cl.
La commande C-s (s pour search) permet de commencer une recherche partir
du curseur en descendant (la commande C-r (r pour reverse) eectue une recherche
en remontant). Elle ache I-search: dans le minibuer pour indiquer quon se
trouve maintenant en mode de recherche interactive.
En quoi la recherche est-elle interactive ?
Supposons quon recherche le mot toto . Au moment o lon tape t , Emacs
dplace le curseur sur le premier t suivant la prcdente position du curseur et
ache les autres sur un fond color. Lorsquon tape o , Emacs dplace le curseur
sur la premire chane de caractres to suivant sa position prcdente (ou ne bouge
pas si lon y tait dj) et, de mme, ache les autres sur un fond color. Et ainsi de
suite.
En pratique, pour rechercher un mot, il sut bien souvent den taper les pre-
mires lettres et on le trouve sans avoir besoin de le saisir en entier. Cest pratique si
lon cherche anticonstitutionnellement , il doit sure de taper anticon ...
Pour stopper la recherche, on appuie sur la touche Enter . Le curseur reste alors
sur le premier mot trouv.
Il est alors possible de passer au prochain mot correspondant la mme recherche
grce la commande C-s C-s. Un simple C-s passe alors au mot suivant et ainsi de
suite. La recherche sarrte en tapant Enter .
Le remplacement seectue au moyen de la commande M-% (qui utilise donc trois
touches du clavier, Meta , Shift et % ).
Emacs ache alors Query replace: dans le minibuer, demandant quon saisisse
le mot remplacer. Pour prendre un exemple, disons quon veut remplacer toto
par tata . On tape donc le mot remplacer, suivi de Enter . Emacs demande alors
Query replace toto with: dans le minibuer. On tape le mot de remplacement
suivi de Enter .
Emacs se place alors sur le premier mot trouv, qui sache sur un fond color
an de le distinguer facilement. On a alors la possibilit de taper :
y pour eectuer le remplacement et passer loccurrence suivante ;
n pour ne pas eectuer le remplacement et passer loccurrence suivante ;
! pour eectuer tous les remplacements sans poser de question ;
q pour quitter.
En n de procdure, Emacs ache le nombre doccurrences remplaces dans le
minibuer.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Basic-Isearch.
html
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Query-Replace.
html
63
Chapitre 5. Lditeur de texte Emacs
5.12 Saisie de caractres ne gurant pas sur le clavier
Les claviers, quels quils soient, ne permettent pas de saisir directement la totalit
des caractres utiliss en franais. Le problme est encore plus agrant lorsquil
sagit de rdiger tout ou partie dun document dans une langue trangre autre que
langlais.
Emacs permet de saisir de nombreux caractres absents des claviers au moyen de
la commande C-x 8 (attention, cest C-x 8, pas C-x C-8) suivi dun ou deux caractres
(pour les signes gurant dans le codage ISO 8859-1) ou de Enter puis du nom complet
du signe voulu (pour les autres).
Par exemple, C-x 8 / e permet de saisir et C-x 8 Enter EURO SIGN permet
de saisir .
La liste des combinaisons dun ou deux caractres pouvant suivre C-x 8 est
accessible au moyen de la commande C-x 8 C-h.
Le tableau 5.1 indique les combinaisons les plus utiles en franais.
C-x 8 / e C-x 8 Enter LATIN SMALL LIGATURE OE
C-x 8 / E C-x 8 Enter LATIN CAPITAL LIGATURE OE
C-x 8 < C-x 8 Enter EURO SIGN
C-x 8 > C-x 8 o
Table 5.1 Combinaisons permettant de saisir des caractres usuels en franais avec
Emacs.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Unibyte-Mode.
html
5.13 Commande dannulation de la commande en cours de
saisie
Nous avons vu prcdemment la commande C-/, qui permet dannuler la dernire
modication apporte au document. Il existe une autre commande dannulation,
dans un autre contexte.
Il peut en eet tre utile dannuler la saisie dune commande demandant quelque
chose dans le minibuer. Supposons par exemple quon utilise la commande C-x C-w
par erreur et quon souhaite lannuler. Il ne sagit pas dannuler la dernire modi-
cation apporte au document, quon souhaite conserver tel quel, mais dannuler la
commande en cours, qui est en attente dinformations supplmentaires.
Dans ce cas, on utilise la commande C-g. Celle-ci annule toute commande en
attente dinformations via le minibuer et laisse le document en ltat.
64
5.14. Commandes diverses
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Quitting.html
5.14 Commandes diverses
Lorsquon travaille sur un chier texte contenant un document crit dans une
langue telle que le franais, il arrive frquemment dapporter des modications
un paragraphe rdig auparavant. Tant et si bien quau bout dun moment, on se
retrouve avec des paragraphes contenant des lignes ayant des longueurs disparates, ce
qui provoque un eet visuel disgracieux.
La commande M-q, tape nimporte o lintrieur dun paragraphe, permet de
le reformater an dharmoniser la longueur des lignes, par dfaut 70 caractres au
plus. Elle ne fonctionne que dans les documents pour lesquels le mode dEmacs est
Text.
Il peut tre utile de travailler simultanment sur deux parties dun mme chier
ou sur deux chiers dirents, le tout dans la mme fentre, an par exemple de
copier du texte de lun vers lautre.
La commande C-x 2 (attention, cest C-x 2, pas C-x C-2) permet de sparer
la fentre en deux parties prsentant le mme chier. Il est alors possible de se
positionner dans chaque partie un endroit dirent du chier, voire de charger
un autre chier dans lune des parties au moyen de la commande C-x C-f. On peut
passer de lune lautre partie au moyen de la commande C-x o. Enn, la commande
C-x 0 ramne la fentre dEmacs son tat initial.
Signalons quil existe aussi une commande C-x 3, dont le rsultat est laiss la
curiosit du lecteur.
Pour nir, il faut dire quelques mots sur la commande M-x. Les commandes
abordes jusqu prsent lont t via leur raccourci. Les commandes dEmacs ont
galement un nom et elles peuvent tre excutes au moyen de ce nom, introduit par
la commande M-x. Par exemple, la commande kill-line a pour raccourci C-k et peut
tre galement excute en tapant M-x, puis kill-line dans le minibuer.
En pratique, rares sont les commandes dEmacs disposant dun raccourci. Seules
les plus utilises en ont un. M-x est donc le seul moyen dexcuter les autres.
Vous pouvez par exemple essayer la commande M-x auto-fill-mode dans un
chier texte. Le mode passera de Text Text Fill. Ceci permet, lorsquon arrive en
bout de ligne, de faire en sorte quEmacs insre automatiquement un saut de ligne, ce
qui vite davoir recours M-q lorsquon saisit un paragraphe (mais cette commande
est nanmoins souvent utile au moment des retouches).
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Fill-Commands.
html
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Split-Window.
html
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/M
_
002dx.html
65
Chapitre 5. Lditeur de texte Emacs
5.15 uitter
Comme nous lavons vu dans la prsentation des commandes, la commande C-x
C-c permet de quitter Emacs. Si le chier en cours ddition na pas t sauvegard,
Emacs propose de le faire ou de quitter en perdant les modications eectues depuis
la dernire sauvegarde.
Vu la proximit des touches en question, il est dailleurs plus rapide de sauvegarder
(C-x C-s) puis de quitter (C-x C-c) plutt que de quitter sans sauvegarder et de
demander Emacs de le faire lorsquil ne manquera pas de poser la question.
http://www.gnu.org/software/emacs/manual/html
_
node/emacs/Exiting.html
5.16 Conclusion
Nous avons donc tudi la vingtaine de commandes permettant une utilisation
ecace dEmacs. Celles-ci sont rsumes dans le tableau A.1 page 343.
Il ne sagit que dun survol trs rapide de ce quore Emacs mais permettant
de se dbrouiller dans la plupart des cas. Le lecteur curieux pourra se reporter aux
ouvrages suivants de la bibliographie pour approfondir ses connaissances :
GNU Emacs Manual [8]
Learning GNU Emacs [2]
GNU Emacs : UNIX Text Editing and Programming [6]
GNU Emacs Pocket Reference [1]
66
6
Les diteurs de texte vi et Vim
L
diteur de texte vi (prononcer les lettres langlaise : vie ail ) est
lun des plus anciens diteurs de texte sous UNIX. Dapproche dicile,
il se rvle dune puissance extraordinaire pour peu quon prenne la
peine den apprendre le fonctionnement. Cest dailleurs lditeur de
texte favori des vrais amateurs dUNIX
1
.
Il soure nanmoins dun dfaut : il nvolue plus depuis de nombreuses annes
et il lui manque certaines caractristiques bien utiles quon retrouve dans tous les
diteurs de texte modernes. Le vi dorigine continue pourtant tre utilis par les
ingnieurs systme pour sa simplicit et sa scurit.
Ceux qui ont besoin de plus utilisent gnralement Vim (Vi IMproved). Il sagit
dun logiciel inspir de vi et orant de nombreuses amliorations. Ce document a
dailleurs t rdig avec Vim.
Dans la plupart des distributions Linux, Vim est install la place de vi. Cest le
cas lENSTA ParisTech.
Sauf indication particulire, ce que nous allons tudier par la suite concernera vi
et tous ses drivs sans distinction, dont Vim. Nous indiquerons nanmoins quelques
spcicits intressantes propres Vim.
http://fr.wikipedia.org/wiki/Vi
http://www.vim.org/
http://fr.wikipedia.org/wiki/Vim
6.1 Lancement de vi et de Vim
vi se lance depuis un interprteur de commandes au moyen de la commande vi
(tonnant, non ?) suivie du nom du chier diter :
$ vi toto.txt Enter
1. Daucuns diront : des unixiens barbus (plonasme).
67
Chapitre 6. Les diteurs de texte vi et Vim
Vim, sans surprise, se lance au moyen de la commande vim suivie du nom du
chier diter :
$ vim toto.txt Enter
Dans la plupart des distributions Linux, vi lance en fait vim (cest le cas lENSTA
ParisTech).
Contrairement Emacs, vi nouvre pas de fentre et reste conn dans celle de
linterprteur de commandes. On peut voir dans la gure 6.1 ce quache Vim sur
un chier de deux lignes.
Il est joli mon fichier toto.txt et jaime bien
les cours dinformatique de lENSTA ParisTech !
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"toto.txt" 2L, 96C 1,1 All
Figure 6.1 Vim.
uelques indications sont aches tout en bas :
le nom du chier en cours ddition ;
le nombre de lignes du chier ;
68
6.2. Saisie du texte
la taille en octets du chier ;
le numro de ligne et le numro de colonne du curseur (1,1 au moment du
lancement) ;
la position dans le chier, sur le mme principe quEmacs (All, Top, Bot ou un
pourcentage).
Remarquez que les lignes situes au-del de la n du chier dbutent par ~. Il
sagit dune indication visuelle permettant de les distinguer dventuelles lignes vides
en n de chier.
6.2 Saisie du texte
Contrairement Emacs, dans lequel on peut taper du texte ds son lancement,
il est ncessaire dans vi de passer tout dabord en mode dinsertion de texte (quon
appelle plus simplement mode insertion).
En eet, vi a deux modes de fonctionnement :
le mode de saisie des commandes (mode commande) ;
le mode dinsertion de texte (mode insertion).
Aprs son lancement, vi est en mode commande et il nexiste pas moins de six
faons de passer en mode insertion en fonction de lendroit auquel on souhaite voir
apparatre le texte quon va saisir. Le passage en mode insertion se fait en tapant un
caractre au clavier :
i (insert) pour passer en mode insertion lendroit o se trouve le curseur,
cest--dire que le texte quon saisira par la suite apparatra partir de la position
actuelle du curseur ;
a (after) pour passer en mode insertion immdiatement aprs le curseur, cest-
-dire que le texte quon saisira par la suite apparatra droite de la position
actuelle du curseur ;
I pour passer en mode insertion au dbut de la ligne sur laquelle se situe le
curseur ;
A pour passer en mode insertion la n de la ligne sur laquelle se situe le
curseur ;
o (open) pour crer une nouvelle ligne au-dessous de celle sur laquelle se situe le
curseur (le reste du document est alors dcal dune ligne vers le bas) et passer
en mode insertion au dbut de cette ligne ;
O pour crer une nouvelle ligne au-dessus de celle sur laquelle se situe le curseur
(le reste du document est alors dcal dune ligne vers le bas) et passer en mode
insertion au dbut de cette ligne ;
Le tableau 6.1 page suivante rsume les six faons de passer en mode insertion.
Pourquoi proposer autant de faons de passer en mode insertion? En eet,
compte tenu des possibilits de dplacement du curseur, seules les deux premires
faons sont rellement ncessaires. Dans vi, contrairement Emacs, on ne peut pas
dplacer le curseur au-del du dernier caractre dune ligne donc i ne sut pas. En
69
Chapitre 6. Les diteurs de texte vi et Vim
au caractre situ sous le curseur i
au caractre situ aprs le curseur a
en dbut de ligne I
en n de ligne A
au-dessous de la ligne actuelle o
au-dessus de la ligne actuelle O
Table 6.1 Les six faons de passer en mode insertion dans vi.
revanche, en combinant dplacements, i, a et le retour la ligne, on peut muler I,
A, o et O.
En observant la faon dont on utilise gnralement un diteur de texte, on se
rend compte quil arrive frquemment davoir ajouter du texte en dbut de ligne ou
en n de ligne et davoir rajouter du texte entre deux lignes existantes. Les six faons
de passer en mode insertion permettent de le faire rapidement sans avoir dabord
se dplacer, puis passer en mode insertion (et ventuellement rajouter une ligne
blanche).
Cest l une des caractristiques de vi, qui fait tout son attrait. Il existe de
nombreuses commandes superues mais qui correspondent un usage rpandu et
qui permettent une utilisation ecace.
Le passage en mode insertion est matrialis par lindication Insert en bas
droite de la fentre dans vi et par lindication -- INSERT -- en bas gauche de la
fentre dans Vim.
Une fois en mode insertion, la saisie du texte se fait de manire habituelle. La
touche eace le dernier caractre saisi, Enter permet de passer la ligne et les
touches ches de se dplacer.
An dexprimenter les fonctionnalits de vi, nous aurons besoin dun peu de
texte. Tapez ce qui vous passe par la tte, au moins trois paragraphes (un paragraphe
est spar du suivant par une ligne blanche) contenant chacun trois lignes de texte,
avant daller plus loin.
6.3 Les commandes
Lorsquon est en mode insertion, il faut appuyer sur la touche Esc pour passer
en mode commande.
Le passage en mode commande est matrialis par le remplacement de lindication
Insert par Command en bas droite de la fentre dans vi et par la disparition de
lindication -- INSERT -- en bas gauche de la fentre dans Vim.
Lorsquon utilise vi, on alterne donc entre le mode commande et le mode
insertion.
70
6.4. Commandes de dplacement
Puisque vi dispose de deux modes de fonctionnement, l o Emacs nen a quun,
il nest pas ncessaire dintroduire les commandes par une touche particulire. Nous
avons dailleurs dj vu que les commandes de passage en mode insertion utilisaient
directement des caractres usuels, sans touche dintroduction.
Certaines commandes utilisent un seul caractre et produisent un rsultat imm-
diat (cest par exemple le cas des commandes de passage en mode insertion), dautres
en utilisent plusieurs. Dans ce cas, au fur et mesure que lon en saisit les caractres,
Vim les indique au bas de la fentre gauche de la position du curseur alors que vi
nen fait rien.
Dans la suite de ce tour dhorizon, nous nallons pas aborder toutes les com-
mandes de vi mais seulement la vingtaine de commandes qui servent le plus. Il est
important dexprimenter ces commandes sur les quelques lignes de texte saisies plus
haut, an de bien comprendre leur fonctionnement.
6.4 Commandes de dplacement
Il est possible de se dplacer dans un document au moyen des touches ches,
que ce soit en mode commande ou en mode insertion. noter que danciennes
versions de vi ne permettaient les dplacements quen mode commande.
En mode commande, on peut galement utiliser h, j, k et l pour se dplacer
respectivement vers la gauche, vers le bas, vers le haut et vers la droite.
La commande 0 permet de se dplacer en dbut de ligne, $ en n de ligne ($
dsigne toujours la n de quelque chose pour vi).
Les commandes W (pour word) et B (pour back) permettent de se dplacer de mot
en mot (respectivement en avant et en arrire). Les commandes { et } permettent de se
dplacer de paragraphe en paragraphe (respectivement en montant et en descendant).
La commande G (pour go) permet de se dplacer sur la dernire ligne du document.
Prcde dun nombre, elle permet de se dplacer la ligne ayant ce numro. Par
exemple, la commande 33G permet de se dplacer la ligne numro 33.
6.5 Commandes de suppression
La commande x permet de supprimer le caractre situ sous le curseur, la com-
mande dw (pour delete word) la n du mot partir de la position du curseur jusqu
la prochaine espace ou jusquau prochain signe de ponctuation.
La commande D (pour delete) supprime la n de la ligne partir de la position
du curseur. La commande dd supprime totalement la ligne, o que le curseur y soit
situ.
71
Chapitre 6. Les diteurs de texte vi et Vim
6.6 Excution multiple dune commande
Il est possible dexcuter n fois la mme commande en la prxant par ce nombre.
Ainsi, on peut eacer 5 lignes au moyen de 5dd.
On peut rpter la dernire commande lidentique, sans avoir besoin de la
retaper, au moyen de . (point). Cest lune des caractristiques les plus apprcies des
amateurs de vi.
6.7 Copier-coller
Le copier-coller la souris seectue exactement comme avec Emacs. Il faut
nanmoins prendre la prcaution de positionner le curseur au bon endroit (cest en
eet la position du curseur que le texte sera coll et non celle de la souris) et de
passer en mode insertion avant de coller le texte (sinon vi interprtera le texte coll
comme une suite de commandes, ce qui ne produira pas le rsultat attendu).
Il est galement possible de copier-coller une ou plusieurs lignes grce deux
commandes. La commande yy (pour yank) copie la ligne sur laquelle se situe le
curseur. Comme vu au paragraphe 6.6, on peut prxer cette commande par un
nombre an de copier autant de lignes. Ainsi, la commande 5yy copie cinq lignes
(celle sur laquelle se situe le curseur et les quatre situes au-dessous). Aprs stre
dplac au bon endroit, on utilise la commande p (pour paste) an de coller la ou les
lignes copies sous la ligne sur laquelle se situe le curseur (ce qui dcale la suite du
texte vers le bas).
6.8 Couper-coller
Le couper-coller seectue selon le mme principe. Il utilise la commande dd vue
au paragraphe 6.5 page prcdente pour couper la ligne sur laquelle se situe le curseur.
Comme vu au paragraphe 6.6, on peut prxer cette commande par un nombre
an de couper autant de lignes. Ainsi, la commande 5dd coupe cinq lignes (celle sur
laquelle se situe le curseur et les quatre situes au-dessous). Aprs stre dplac au
bon endroit, on utilise la commande p pour coller la ou les lignes coupes sous la
ligne sur laquelle se situe le curseur (ce qui dcale la suite du texte vers le bas).
6.9 Commande dannulation des modications
Lerreur est humaine. Et il arrive rgulirement de commettre une erreur par m-
garde. Il est alors possible dannuler la dernire modication apporte au document
en utilisant la commande u (pour undo). En rptant cette commande, on annule
lavant-dernire modication et ainsi de suite.
72
6.10. Commandes de gestion de chiers
6.10 Commandes de gestion de chiers
La commande :w (pour write) permet de sauvegarder le chier, si celui-ci a dj
un nom. Sil nen a pas, parce quon a lanc vi sans le faire suivre dun nom de chier,
ce qui est mal, on peut utiliser :w, suivie dune espace, du nom donner au chier et
de Enter .
La commande :e (pour edit), suivie dune espace, dun nom de chier et de Enter
permet de charger le chier en question dans vi.
6.11 Commandes de recherche et de remplacement
La recherche par mot cl seectue en tapant / immdiatement suivi du mot
rechercher, puis Enter . Elle seectue depuis la position du curseur vers la n du
chier. Pour faire une recherche en remontant, il faut taper ? immdiatement suivi
du mot rechercher, puis Enter . Pour rpter la recherche prcdente, on utilise la
commande n.
Le remplacement a une syntaxe un peu complique de prime abord. Pour rempla-
cer toto par tata entre la dizime et la vingtime ligne du chier, on utilise :
:10,20s/toto/tata/g
La commande de remplacement, comme toutes les commandes complexes dans
vi, commence par : et se conclut par Enter .
On indique ensuite do o eectuer lopration sous la forme de deux numros
de ligne, spars par une virgule. On peut utiliser $ pour indiquer la n du chier.
Lorsquon souhaite eectuer un remplacement dans tout le chier, de la premire
la dernire ligne, on peut donc utiliser 1,$ ou, plus simplement, % :
:%s/toto/tata/g
Vient ensuite s (pour substitute) qui indique quon souhaite eectuer un rempla-
cement.
Suivent le mot rechercher et celui devant le remplacer, encadrs et spars par
des /.
Enn, on indique g (pour global) an deectuer un remplacement global. Sans
cette indication, en cas de prsence de plusieurs occurrences du mot recherch sur
une mme ligne, le remplacement ne concernerait que la premire.
6.12 Saisie de caractres ne gurant pas sur le clavier
Les fonctionnalits dcrites dans cette section sont spciques Vim.
73
Chapitre 6. Les diteurs de texte vi et Vim
Vim permet trs facilement de saisir de nombreux caractres absents des claviers.
Le principe est, en mode insertion, de taper CTRL-K suivi de deux caractres ASCII
quon peut trouver sur nimporte quel clavier. CTRL-K est la notation utilise dans la
documentation de Vim pour reprsenter lappui sur la touche Ctrl , quon maintient
enfonce en appuyant sur K .
Par exemple, CTRL-K oe permet de saisir .
La liste des combinaisons de caractres pouvant suivre CTRL-K est accessible au
moyen de la commande :
:digraphs
quon peut abrger en :dig pour aller plus vite. La navigation dans cette liste seectue
de la mme faon quavec la commande more (voir le paragraphe 7.4.2 page 92 pour
en avoir lexplication). Force est de constater la lecture de cette liste que la faon de
faire de Vim est bien plus complte et bien plus simple que celle dEmacs.
Le tableau 6.2 indique les combinaisons les plus utiles en franais.
CTRL-K ae CTRL-K oe
CTRL-K AE CTRL-K OE
CTRL-K << CTRL-K Eu
CTRL-K >> CTRL-K DG
Table 6.2 Combinaisons permettant de saisir des caractres usuels en franais avec
Vim.
http://vimdoc.sourceforge.net/htmldoc/digraph.html
6.13 Commande dannulation de la commande en cours de
saisie
Nous avons vu prcdemment la commande u, qui permet dannuler la dernire
modication apporte au document. Comme pour Emacs, il existe une autre forme
dannulation, permettant dannuler la saisie dune commande comprenant plusieurs
caractres (celles ne consistant que dun caractre ayant un eet instantan). Il sagit
tout simplement de la touche Esc .
6.14 Commandes diverses
La commande J (pour join) permet de joindre deux lignes. La ligne sur laquelle
se situe le curseur et la ligne suivante fusionnent pour nen plus former quune seule.
Une espace est automatiquement ajoute entre les deux anciennes lignes.
74
6.15. uitter
Spcicit de Vim, il est possible de faire en sorte que, lors de la saisie du texte, un
saut de ligne soit insr automatiquement lorsquon dpasse une certaine longueur
de ligne. Ceci se fait au moyen de la commande :
:set textwidth=65
Ici, un saut de ligne sera automatiquement insr lors de la saisie dune ligne si
celle-ci dpasse 65 caractres. Le saut de ligne sera insr la place de la dernire espace
prcdant cette limite, repoussant le mot en cours de saisie sur la ligne suivante.
Une fois cette limite dnie, la commande gqap (toujours spcique Vim)
permet de reformater un paragraphe an dharmoniser la longueur des lignes, au
plus la longueur dnie par la commande prcdente.
6.15 uitter
Enn, il existe plusieurs commandes permettant de quitter vi. La plus simple est
la commande :q (pour quit). Elle naccepte de quitter vi que si le chier en cours
ddition a t sauvegard. Sil ne la pas t, elle ache un message derreur. On peut
sauvegarder le chier puis quitter vi grce aux commandes :wq (pour write and quit),
:x (pour exit) et ZZ (il y en a trois mais elles donnent exactement le mme rsultat).
Si lon souhaite quitter vi sans sauvegarder le chier, on utilise la commande :q! (le
point dexclamation force quitter sans sauvegarder le chier).
6.16 Conclusion
Nous avons donc tudi la vingtaine de commandes permettant une utilisation
ecace de vi. Celles-ci sont rsumes dans le tableau A.2 page 344.
Il ne sagit que dun survol trs rapide de ce quore vi mais permettant de se
dbrouiller dans la plupart des cas. Le lecteur curieux pourra se reporter aux ouvrages
suivants de la bibliographie pour approfondir ses connaissances :
Learning the vi and Vim Editors [5]
Hacking Vim 7.2 [7]
Vi IMprovedVim [3]
vi and Vim Editors Pocket Reference [4]
75
Troisime partie
Linterprteur de commandes
7
Linterprteur de commandes
D
e nos jours, un ordinateur se manipule principalement avec la souris, au
moyen dune interface graphique prsentant lutilisateur des fentres,
des menus, des boutons, etc. Cela na pas toujours t le cas. Autrefois,
on exprimait ce quon voulait faire faire lordinateur par crit, grce
un vocabulaire spcique, les commandes, qui taient comprises par un logiciel
particulier appel interprteur de commandes (shell en anglais).
Mais pourquoi diable sintresser un logiciel du pass ? Cest que linterface
graphique, si elle est bien adapte des manipulations simples, ne lest pas du tout
ds quil sagit deectuer des actions complexes ou rptitives.
Il convient dinsister trs lourdement sur ce dernier point. Souvenons-nous que le
mot informatique est n de la fusion des mots information et automatique .
Or ce dernier aspect est encore largement sous-exploit et il est frquent de voir des
utilisateurs dordinateur eectuer des actions rptitives sans que cela les drange. La
faute en revient principalement linterface graphique, qui nest gnralement pas
adapte lautomatisation des tches rptitives.
Linterprteur de commandes, en revanche, est construit autour de concepts
permettant de simplier au maximum ces tches rptitives. Il dispose en eet dun
langage de programmation comprenant variables, tests, boucles, etc., permettant
denchaner automatiquement des commandes complexes.
Il peut tre utilis :
soit de manire interactive, lutilisateur tapant directement les commandes
excuter, voire des programmes simples ;
soit en lisant un chier contenant les commandes excuter, ce qui permet de
conserver des enchanements de commandes pour les rutiliser et de concevoir
des programmes complexes.
Cest pour cela que linterprteur de commandes est toujours rest populaire
auprs des informaticiens purs et durs, qui ont besoin dun outil de travail ecace,
alors mme que linterface graphique le remplaait vis--vis du grand public. Les
annes 1990 ont sonn le glas de linterprteur de commandes, dtrn par des
interfaces graphiques toujours plus intuitives et ergonomiques.
79
Chapitre 7. Linterprteur de commandes
Et puis, bizarrement, certains des plus farouches partisans du tout graphique
ont fait marche arrire. Par exemple, Microsoft a sorti en 2006 un interprteur de
commandes nomm Windows PowerShell. De diusion assez condentielle lorigine,
celui-ci est disponible depuis mars 2009 via le systme de mises jour de Microsoft
pour Windows XP et Windows Vista et est distribu dorigine avec Windows 7.
Sous UNIX, en tout cas, linterprteur de commandes na jamais t en voie de
disparition. En pratique, il en existe mme plusieurs. Partageant des anctres com-
muns, leur syntaxe est relativement proche. Cette partie sattachera dcrire autant
que possible les caractristiques et syntaxes communes lensemble des interprteurs
de commandes, en indiquant leurs dirences lorsque cela sera ncessaire.
Nous tudierons galement un certain nombre de commandes, parmi les plus
utilises.
http://fr.wikipedia.org/wiki/Shell
_
Unix
http://fr.wikipedia.org/wiki/Windows
_
PowerShell
http://fr.wikipedia.org/wiki/Commandes
_
Unix
7.1 Historique des interprteurs de commandes
Historiquement, le premier interprteur de commandes pour UNIX fut en 1971
le Thompson shell, crit par Ken Thompson, lun des crateurs dUNIX.
Celui-ci nest plus utilis aujourdhui, contrairement ses six descendants, dont
larbre gnalogique est reprsent dans la gure 7.1.
prhistoire Thompson shell
1
re
gnration sh csh
2
e
gnration ksh tcsh
3
e
gnration bash zsh
Figure 7.1 Arbre gnalogique des interprteurs de commandes.
Les interprteurs de commandes sont souvent dsigns par leur diminutif. Ce
sont ces diminutifs qui sont indiqus dans la gure 7.1. Le tableau 7.1 page suivante
80
7.1. Historique des interprteurs de commandes
dtaille, pour chaque interprteur de commandes, son diminutif ainsi que son nom
complet et son crateur.
Diminutif Nom Crateur
sh Bourne shell Steve Bourne
csh C shell Bill Joy
tcsh TENEX C shell Ken Greer
ksh Korn shell David Korn
bash Bourne-again shell Brian Fox
zsh Z shell Paul Falstad
Table 7.1 Diminutifs, noms et crateurs des interprteurs de commandes.
Nayant pas encore de bonnes connaissances du fonctionnement des interprteurs
de commandes, nous nallons pas pouvoir rentrer dans les dtails des dirences entre
ces six logiciels mais nous allons en faire un tour dhorizon rapide.
Le premier successeur du Thompson shell est le Bourne shell (sh), cr par
Steve Bourne en 1977. Il dispose dun langage de programmation trs complet et
toujours utilis de nos jours. En revanche, son utilisation en mode interactif est
particulirement fastidieuse, puisquaucune aide ne permet de simplier la saisie des
commandes.
Autre descendant direct du Thompson shell, le C shell (csh), cr par Bill Joy
(galement auteur de vi) en 1978, dispose lui aussi dun langage de programmation
trs complet, dont la syntaxe est inspire de celle du langage de programmation
C et incompatible avec celle du Bourne shell. Il a t peu utilis pour faire de la
programmation et est quasiment abandonn pour cela aujourdhui. En revanche, il
dispose daides permettant de simplier la saisie des commandes, aides qui ont t
reprises et amliores par ses successeurs.
Le TENEX C shell (tcsh), cr par Ken Greer en 1981, est driv du C shell et
apporte de nombreuses astuces rendant son utilisation interactive particulirement
agrable.
Extension du Bourne shell, le Korn shell (ksh), cr par David Korn en 1982, a
amlior les possibilits de programmation du Bourne shell. Il a galement repris
quelques caractristiques du C shell.
Le Bourne-again shell (bash), cr par Brian Fox en 1987, se veut un Bourne
shell moderne et est driv du Korn shell et du C shell. Il a par ailleurs repris les
amliorations apportes par le TENEX C shell a son mode interactif. Il sagit de
linterprteur de commandes standard sous Linux et cest galement linterprteur
de commandes utilis par dfaut lENSTA ParisTech.
Enn, le Z shell (zsh), cr par Paul Falstad en 1990, reprend des caractristiques
du TENEX C shell, du Korn shell et du Bourne-again shell. Sa spcicit principale
est de comprendre les syntaxes de programmation du Bourne shell et du C shell.
81
Chapitre 7. Linterprteur de commandes
Aujourdhui, linterprteur de commandes le plus utilis pour la programmation
reste le Bourne shell. En utilisation interactive, on retrouve les TENEX C shell,
Bourne-again shell et Z shell.
Le lecteur curieux pourra se reporter aux ouvrages suivants de la bibliographie
pour approfondir ses connaissances des dirents interprteurs de commandes :
UNIX Shells by Example [21]
The UNIX C Shell Field Guide [11]
Using csh & tcsh [16]
Learning the Korn Shell [26]
Learning the bash Shell [20]
bash Cookbook [10]
bash uick Reference [24]
http://en.wikipedia.org/wiki/Thompson
_
shell
http://en.wikipedia.org/wiki/Bourne
_
shell
http://en.wikipedia.org/wiki/C
_
shell
http://www.tcsh.org/Welcome
http://en.wikipedia.org/wiki/Tcsh
http://www.kornshell.com/
http://en.wikipedia.org/wiki/Korn
_
shell
http://www.gnu.org/software/bash/
http://fr.wikipedia.org/wiki/Bourne-Again
_
shell
http://zsh.sourceforge.net/
http://fr.wikipedia.org/wiki/Zsh
7.2 Concepts fondamentaux
7.2.1 Lmulateur de terminal
Comme nous lavons dj vu dans lintroduction de ce document, le lancement
dun interprteur de commandes ouvre une fentre quasiment vide, hormis sa pre-
mire ligne.
En ralit, nous avons aaire deux logiciels :
linterprteur de commandes lui-mme, qui est la partie la plus interne de la
fentre ;
un mulateur de terminal, qui permet dutiliser linterprteur de commandes
dans un environnement graphique.
En eet, linterprteur de commandes est conu pour tre utilis au moyen
dun priphrique des annes 1970 appel terminal. Un terminal tait simplement
compos dun clavier et dun cran nachant que du texte, le tout reli un systme
informatique. Les logiciels fonctionnant dans un terminal lisaient du texte, entr au
moyen du clavier et achaient en rsultat du texte lcran. Souvenez-vous : sous
UNIX, on aime bien le texte.
82
7.2. Concepts fondamentaux
Mais pourquoi utilise-t-on encore au xxi
e
sicle des logiciels conus pour des
environnements dpasss ? Linterprteur de commandes nest en eet pas le seul
logiciel sattendre fonctionner dans un terminal, il en existe des centaines dautres
et ils sont dailleurs largement majoritaires sous UNIX.
Ceci a lavantage de la simplicit. Beaucoup de logiciels usuels eectuent des
fonctions simples (copier un chier, dplacer un chier, eacer un chier, etc.) qui
ne ncessitent en rien lutilisation dune interface graphique.
Il est donc commode de conserver un mode de fonctionnement simple pour
ces logiciels, savoir lire et crire du texte et de dporter la gestion graphique dans
lmulateur de terminal, an que tous ces logiciels puissent tre utiliss par ce biais,
plutt que de tous les modier pour fonctionner nativement en environnement
graphique.
Par ailleurs, ceci permet dutiliser les fonctions de redirection, fondamentales
sous UNIX, qui seront abordes au paragraphe 9.4 page 174.
http://fr.wikipedia.org/wiki/Terminal
_
informatique
http://fr.wikipedia.org/wiki/mulateur
_
de
_
terminal
7.2.2 Linvite
Revenons linterprteur de commandes. son ouverture, celui-ci ache une
invite (prompt en anglais) suivie du curseur indiquant lemplacement du prochain
caractre qui sera tap au clavier.
Linvite est un repre visuel indiquant que linterprteur de commandes attend
que lutilisateur saisisse une commande.
Linvite par dfaut des Bourne shell et Korn shell est $, celle du Bourne-again
shell est bash-x.y$ (o x.y est le numro de version du Bourne-again shell utilis),
celle des C shell, TENEX C shell et Z shell est %.
Le contenu de linvite est congurable et beaucoup dadministrateurs de systmes
informatiques en protent pour y faire gurer quelques informations utiles.
En particulier, lENSTA ParisTech, linvite est de la forme (les parties en gras
variant dune personne une autre) :
identifiant@ordinateur:~$
On reconnat :
1. lidentiant de lutilisateur ;
2. le caractre @ en tant que sparateur visuel ;
3. le nom de lordinateur sur lequel on est connect ;
4. le caractre : en tant que sparateur visuel ;
83
Chapitre 7. Linterprteur de commandes
5. le chemin daccs absolu du rpertoire courant (nous reviendrons respective-
ment sur ces concepts aux paragraphes 8.3.6 page 119 et 8.3.4 page 113), en
loccurrence rduit au seul caractre ~ ;
6. le caractre $ en tant que sparateur visuel et dernier composant de linvite.
An de simplier les exemples qui seront donns par la suite, nous utiliserons
simplement $ comme invite, sauf dans certains cas particuliers.
http://en.wikipedia.org/wiki/Command-line
_
interface#Command
_
prompt
7.2.3 Pass, prsent et futur
Tapons une commande simple dans linterprteur de commandes (ce que lutilisa-
teur tape au clavier est gur en gras dans les exemples) :
$ date Enter
Wed Jul 29 12:58:31 CEST 2009
$
Puis une autre (la commande cal ache le calendrier du mois) :
$ cal Enter
July 2009
S M Tu W Th F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
$
On aboutit une fentre de terminal comme celle de la gure 7.2 page suivante,
quon peut dcomposer comme indiqu en gure 7.3 page ci-contre.
Tout ce qui se trouve au-dessus de la dernire invite, celle suivie du curseur,
montre le pass. Il sagit de la trace des commandes saisies prcdemment et de leurs
rsultats. Il nest pas rare de voir des utilisateurs dbutants agiter frntiquement leur
souris en cherchant modier quelque chose dans cette zone. Cest bien videmment
impossible, le pass est immuable, en histoire comme en informatique.
La ligne contenant la dernire invite, suivie du curseur, reprsente le prsent.
Cest la seule zone sur laquelle on peut agir.
84
7.2. Concepts fondamentaux
$ date
Wed Jul 29 12:58:31 CEST 2009
$ cal
July 2009
S M Tu W Th F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
$
Figure 7.2 uelques commandes.
pass
$ date
Wed Jul 29 12:58:31 CEST 2009
$ cal
July 2009
S M Tu W Th F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
prsent
$
futur
Figure 7.3 uelques commandes (dcomposition temporelle).
85
Chapitre 7. Linterprteur de commandes
La zone situe dessous reprsente le futur. Elle est bien videmment vide. Comme
la fentre de lmulateur de terminal a une taille nie et quil est prfrable, an de
pouvoir sy rfrer, de montrer un pass certain plutt quun hypothtique futur,
cette zone a vocation diminuer jusqu disparatre, laissant lensemble de la fentre
au pass, hormis la dernire ligne ddie au prsent.
7.2.4 Notation des combinaisons de touches
Bien quutilisant les mmes touches du clavier, les combinaisons de touches ne
se reprsentent pas de la mme faon en fonction des logiciels dans lesquels on les
utilise.
Ainsi, on notera ^A lappui sur les touches Ctrl (reprsente donc par ^) puis A
dans linterprteur de commandes.
Cest ce quon notait C-a avec Emacs.
7.2.5 Sensibilit la casse
Dans linterprteur de commandes, la sensibilit la casse, cest--dire la dirence
entre majuscules et minuscules, est systmatique. On utilise principalement des
minuscules, plus faciles lire et saisir :
$ date Enter
Sun Aug 9 12:57:00 CEST 2009
$ DATE Enter
bash: DATE: command not found
$
http://fr.wikipedia.org/wiki/Sensibilit
_

_
la
_
casse
7.2.6 dition de la ligne de commande et historique
Nous navons vu pour le moment que quelques commandes trs simples. Nous
allons voir par la suite que dautres peuvent tre assez longues taper. Lerreur tant
humaine, il arrive de se tromper et il est agaant de devoir eacer une partie de
la ligne quon est en train de taper parce quon vient de se rendre compte quon a
commis une erreur en dbut de ligne.
Heureusement, les interprteurs de commandes modernes (TENEX C shell,
Korn shell, Bourne-again shell et Z shell) permettent dditer la ligne de commande
quon est en train de saisir. Il est possible de se dplacer au moyens des ches gauche
et droite an daller modier quelque chose sans devoir eacer toute la n de la ligne.
Cela semble assez vident pour qui a utilis un diteur de texte mais cette possibilit
86
7.2. Concepts fondamentaux
nexiste pas dans les interprteurs de commandes les plus anciens (Bourne shell et C
shell), ce qui rend leur utilisation interactive assez frustrante.
Mieux encore, il est possible dutiliser certaines combinaisons de touches iden-
tiques celles dEmacs, dans la mesure o elles ont un sens lorsquon travaille sur une
ligne unique. Parmi celles abordes au chapitre 5 page 53, ^A, ^E, ^D et ^K (quivalentes
C-a, C-e, C-d et C-k) sont utilisables.
Plus fort, les touches ches haut et bas permettent de naviguer dans lhistorique
des commandes passes. Un appui sur rappelle la commande prcdente, en
positionnant le curseur en n de ligne. Il est alors possible de lexcuter nouveau
en appuyant simplement sur Enter ou dutiliser les ches et les commandes Emacs
indiques ci-dessus an de la modier avant de lexcuter. Il nest dailleurs pas
ncessaire que le curseur soit en n de ligne pour excuter une commande en
appuyant sur Enter , cela fonctionne nimporte o. Si lon souhaite rappeler une
commande passe pour lexcuter lidentique ou la modier, il sut de remonter
avec jusquau bon endroit. Si lon est remont trop haut, on peut utiliser
pour redescendre.
Ceci est particulirement utile et doit tre utilis ds que possible, pour rappeler
une commande rcente et lexcuter nouveau, telle quelle ou lgrement modie.
Il existe dautres faons dutiliser lhistorique des commandes, qui seront tudies
au paragraphe 9.1 page 157.
7.2.7 Forme des exemples dans la suite du document
partir de maintenant, an dallger les exemples, ceux-ci nindiqueront plus la
commande taper en gras mais de faon normale. Par ailleurs, lappui sur la touche
Enter ne sera plus indiqu, de mme que linvite et le curseur suivant lexcution
dune commande.
Ainsi, ce quon crivait :
$ date Enter
Thu Jul 30 10:08:18 CEST 2009
$
devient simplement :
$ date
Thu Jul 30 10:08:18 CEST 2009
87
Chapitre 7. Linterprteur de commandes
7.3 La commande ls, la syntaxe des commandes
La commande ls est probablement la plus utilise. On reconnat dailleurs les
commandes frquemment utilises leur nom compos de deux caractres, an de
pouvoir les saisir le plus vite possible.
La commande ls (pour list segments, nom hrit de Multics) permet dacher la
liste de ses chiers :
$ ls
toto.txt
On y reconnat le chier toto.txt cr lors de ltude des diteurs de texte.
Il est dicile de sen rendre compte avec un seul chier mais, lorsquelle en a
plusieurs acher, la commande ls les trie dans lordre lexicographique.
http://en.wikipedia.org/wiki/Ls
7.3.1 Les options
Il est souvent ncessaire dacher, pour chaque chier, des informations suppl-
mentaires. Ceci se fait au moyen de loption -l de la commande ls :
$ ls -l
total 4
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
La possibilit de modier le comportement dune commande grce une option
nest pas spcique ls. Il sagit dun mcanisme gnral et, en pratique, quasiment
toutes les commandes acceptent une ou plusieurs options.
Loption est compose dun tiret suivi gnralement dun caractre. Il existe des
options composes dun tiret suivi dun mot mais cela est plus rare. Loption est
obligatoirement spare de la commande qui la prcde par une espace (on peut en
mettre plusieurs mais cest inutile).
Revenons loption -l de la commande ls. Celle-ci provoque lachage des
chiers au format long (-l pour long). La premire ligne du rsultat, sans grand
intrt, indique le nombre de blocs occups sur disque par lensemble des chiers.
La suite est plus intressante. On y retrouve nos chiers, un par ligne, dont le
nom est indiqu en n de ligne. Auparavant, des informations supplmentaires sont
alignes en colonnes. Cest une forme dachage trs utilise sous UNIX et que nous
retrouverons par la suite.
Ces colonnes indiquent respectivement :
1. le type et les droits daccs du chier ;
88
7.3. La commande ls, la syntaxe des commandes
2. le nombre de liens sur le chier ;
3. le propritaire du chier ;
4. le groupe du chier ;
5. la taille du chiers en octets ;
6. la date de dernire modication du chier (les trois colonnes nen forment
quune seule) ;
7. enn, le nom du chier.
La premire colonne doit tre lue comme un caractre, indiquant le type du
chier, suivi de trois groupes de trois caractres, indiquant les droits daccs du chier.
Le type du chier peut tre lun de ceux indiqus dans le tableau 7.2.
- chier ordinaire
b chier spcial de type bloc
c chier spcial de type caractre
d rpertoire (directory en anglais)
l lien symbolique
p tuyau nomm (pipe en anglais)
s prise rseau (socket en anglais)
Table 7.2 Types de chiers.
En pratique, les chiers quon rencontre le plus souvent sont les chiers ordinaires.
Ceux-ci sont principalement des chiers de donnes, comme notre chier toto.txt,
mais il peut galement sagir de chiers excutables (cest--dire de programmes). On
rencontre galement beaucoup de rpertoires (voir le paragraphe 8.3 page 107) ainsi
que quelques liens symboliques (voir le paragraphe 8.1.4 page 100), leur usage tant
assez limit. Nous discuterons des chiers spciaux au paragraphe 9.4.1 page 174.
Nous naborderons pas les autres types de chiers.
Les droits daccs seront tudis au paragraphe 8.5 page 127.
La signication de la deuxime colonne sera aborde au paragraphe 8.1.4 page 100.
La troisime colonne indique lutilisateur qui est propritaire du chier et la
quatrime le groupe du chier. Ces notions sont rapprocher des droits daccs et
seront abordes en mme temps.
La cinquime colonne indique, pour les chiers ordinaires, leur taille en octets.
Nous verrons le moment donn la signication de cette colonne pour les rpertoires
et les liens symboliques.
La sixime colonne indique la date de dernire modication du chier. Il sagit
du mois, du jour et, si le chier a t modi pour la dernire fois il y a moins de six
mois, de lheure et de la minute, sinon de lanne.
89
Chapitre 7. Linterprteur de commandes
La commande ls est trs souvent utilise avec loption -l. Cest pourquoi beau-
coup de sites crent un alias pour ls -l. Un alias est un diminutif pour une com-
mande plus longue frquemment utilise. lENSTA ParisTech, lalias pour ls -l
est ll.
Une autre option utile de ls est loption -a :
$ ls -a
. .bash
_
history .bashrc .mailrc
.. .bash
_
logout .cshrc toto.txt
.Xdefaults .bash
_
profile .elm
Loption -a (pour all) permet dacher tous les chiers, y compris ceux dont
le nom commence par un point, ce que ls ne fait pas par dfaut. Il ne sagit pas de
chiers cachs comme il peut en exister dans dautres systmes dexploitation, tout
est transparent sous UNIX. En revanche, par convention, ls nache simplement
pas ces chiers.
Les chiers dont le nom commence par un point sont traditionnellement des
chiers de conguration pour divers logiciels (leur nom se termine gnralement par
rc
1
) ou des chiers permettant aux logiciels de sauvegarder des informations lors de
leur fermeture. Ces chiers doivent exister mais il nest pas ncessaire de les avoir
toujours sous les yeux. Cest pour cela que ls ne les ache pas si lon nutilise pas
loption -a.
Il est possible de combiner les options -a et -l :
$ ls -a -l
total 108
drwxr-xr-x 6 babafou prof 4096 Jul 30 17:02 .
drwxr-xr-x 3 root root 4096 Jun 26 10:16 ..
-rw-r--r-- 1 babafou prof 576 Sep 3 2007 .Xdefaults
-rw------- 1 babafou prof 167 Jul 10 12:39 .bash
_
history
-rw-r--r-- 1 babafou prof 24 Sep 3 2007 .bash
_
logout
-rw-r--r-- 1 babafou prof 191 Feb 18 14:22 .bash
_
profile
-rw-r--r-- 1 babafou prof 176 Sep 3 2007 .bashrc
-rw-r--r-- 1 babafou prof 48 Sep 3 2007 .cshrc
drwxr-xr-x 2 babafou prof 4096 Sep 3 2007 .elm
-rw-r--r-- 1 babafou prof 26 Sep 3 2007 .mailrc
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
On a alors un achage long de tous les chiers.
1. Le suxe rc vient de RUNCOM, un lointain anctre des interprteurs de commandes.
90
7.4. Les commandes dachage : cat, more et less
Ceci est valable pour la plupart des commandes. Dans la mesure o elles ne sont
pas antagonistes, il est possible de combiner les options an den cumuler les eets.
Lordre des options est sans importance, donc ls -a -l et ls -l -a sont quivalentes
et on peut les contracter en ls -al et ls -la. Tout ceci aboutit au mme rsultat.
Il existe de nombreuses autres options pour ls, que nous naborderons pas.
http://en.wikipedia.org/wiki/Command-line
_
interface#Command-line
_
option
7.3.2 Les arguments
Si lon souhaite obtenir lachage long des informations concernant un seul
chier, sans avoir une fentre pollue par les informations concernant dautres
chiers, il est possible de lindiquer en argument de la commande ls :
$ ls -l toto.txt
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Petit point de vocabulaire, -l est une option (nous venons de voir quil peut y en
avoir plusieurs) et toto.txt un argument (il peut galement y en avoir plusieurs).
Commande, option(s) et argument(s) doivent tre spars les uns des autres par
des espaces.
Autre exemple, si lon souhaite acher les informations concernant toto.txt et
.bashrc, on peut taper :
$ ls -l toto.txt .bashrc
-rw-r--r-- 1 babafou prof 176 Sep 3 2007 .bashrc
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Notez quil nest pas ncessaire dindiquer loption -a dans la mesure o le nom
du chier commenant par un point est donn en argument. Par ailleurs, lordre
des arguments est sans eet sur lachage de ls, qui est toujours tri dans lordre
lexicographique.
En rsum, les options modient le comportement de la commande, les argu-
ments lui indiquent ce sur quoi elle doit travailler.
http://en.wikipedia.org/wiki/Command-line
_
interface#Arguments
7.4 Les commandes dachage : cat, more et less
Il est souvent utile dacher un chier texte lcran, an de lire son contenu
sans pour autant vouloir le modier. Utiliser un diteur de texte pour cela nest donc
pas la bonne solution.
91
Chapitre 7. Linterprteur de commandes
7.4.1 La commande cat
La commande cat (pour catenate) permet justement dacher le contenu du ou
des chiers texte passs en arguments :
$ cat tata.txt
Ceci est le contenu du fichier tata.txt.
Il est bien court mais tata.txt est un joli fichier.
Si plusieurs noms de chiers sont passs en arguments, leur contenu est ach
dans le mme ordre, sans sparation particulire entre les chiers :
$ cat tata.txt titi.txt tutu.txt
Ceci est le contenu du fichier tata.txt.
Il est bien court mais tata.txt est un joli fichier.
Ceci est le contenu du fichier titi.txt.
Il est bien court mais titi.txt est un joli fichier.
Ceci est le contenu du fichier tutu.txt.
Il est bien court mais tutu.txt est un joli fichier.
Attention, cat ne permet dacher que des chiers texte. Il nest pas question
de lutiliser pour visualiser des images. Lorsquelle lit le contenu dun chier, la
commande cat lache tel quel. En pratique, cest lmulateur de terminal qui traduit
la valeur de chaque octet envoy par cat pour acher le glyphe correspondant
chaque octet ou chaque groupe doctets, conformment au codage utilis (voir le
paragraphe 4.1 page 43).
Il convient donc dtre attentif au codage des chiers car acher un chier cod
en ISO 8859-15 dans un mulateur de terminal congur en UTF-8 (ou linverse)
risque dacher des choses tranges la place des caractres dont le code ne fait pas
partie de lASCII.
http://fr.wikipedia.org/wiki/Cat
_
(Unix)
7.4.2 La commande more
La commande cat a un petit dfaut. Elle ache, elle ache, elle ache et elle ne
sarrte que quand elle a ni. Lorsquon ache un chier relativement long, tout son
contenu dle et lon nen voit nalement que la dernire page. Il est bien possible de
remonter grce lascenseur de lmulateur de terminal mais celui-ci a une capacit
limite et le dbut des chiers vraiment longs a gnralement dj disparu.
Pour pouvoir lire des chiers texte un peu longs dans de bonnes conditions, il est
prfrable dutiliser la commande more :
92
7.4. Les commandes dachage : cat, more et less
$ more toto.txt
La commande more prend alors le contrle de la totalit de la fentre de lmula-
teur de terminal an dy acher le contenu du chier toto.txt.
Il est possible dy naviguer au moyen des touches :
Enter , pour descendre dune ligne ;
, pour descendre dune page (la hauteur dune page est la hauteur de la
fentre) ;
b , pour remonter dune page ;
enn, la touche q permet de quitter more.
La commande more tire son nom de ce quelle ache en bas de page an dindiquer
la position actuelle dans le chier :
--More--(n%)
http://fr.wikipedia.org/wiki/More
_
(Unix)
7.4.3 La commande less
La commande less nomme ainsi par jeu de mots avec more sutilise de la
mme faon et avec les mmes touches du clavier (on peut galement utiliser ,
, Page et Page , qui fonctionnent comme attendu).
Elle a nanmoins un avantage sur more. force de faire dler le contenu du
chier, la commande more, lorsquelle ache sa dernire ligne, se termine automa-
tiquement et lon revient linvite de linterprteur de commandes. Ceci peut tre
gnant si lon est all trop vite et quon souhaite revenir en arrire. Il faut alors
relancer la commande. En revanche, less na pas ce dfaut. Arrive en n de chier,
cette commande ne se termine pas et il est possible soit de remonter soit de la quitter
explicitement.
Il est donc souvent plus pratique dutiliser less plutt que more.
noter que more est une commande standard, fournie avec tout systme UNIX,
ce qui nest pas le cas de less. Cette dernire est nanmoins trs rpandue et, en
particulier, est fournie avec tous les systmes UNIX libres (BSD, Linux).
http://www.gnu.org/software/less/
http://www.greenwoodsoftware.com/less/
http://fr.wikipedia.org/wiki/Less
_
(Unix)
93
Chapitre 7. Linterprteur de commandes
7.5 La commande man
Nous navons abord au paragraphe 7.3 page 88 que deux des nombreuses options
de la commande ls. Le lecteur curieux qui souhaite en apprendre davantage et
lutilisateur qui a oubli le fonctionnement exact de telle commande ou de telle
option peuvent se reporter au manuel en ligne disponible sur tout systme UNIX
grce la commande man (pour manual). Elle sutilise en lui passant en argument le
nom de la commande dont on souhaite consulter le manuel :
$ man ls
Ceci ache le manuel de la commande ls au moyen de more ou less.
Toutes les commandes utilisables dans linterprteur de commandes ont systma-
tiquement un manuel en ligne, y compris man :
$ man man
http://fr.wikipedia.org/wiki/Man
_
(Unix)
7.6 La commande clear
La commande clear permet deacer lcran de linterprteur de commandes :
$ date
Mon Mar 1 17:56:08 CET 2010
$ ls -l
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ clear
Aprs avoir appuy sur la touche Enter , on obtient un cran vide ne contenant
plus, tout en haut, que linvite et le curseur :
$
Lhistorique (voir les paragraphes 7.2.6 page 86 et 9.1 page 157), en revanche, nest
pas eac donc il est toujours possible de naviguer dans les commandes prcdentes
au moyen des touches ches.
http://fr.wikipedia.org/wiki/Clear
_
(Unix)
94
7.7. La commande exit
7.7 La commande exit
La commande exit permet de quitter linterprteur de commandes :
$ exit
http://fr.wikipedia.org/wiki/Exit
_
(Unix)
95
8
Gestion, organisation et traitement des chiers
L
es fichiers ont une trs grande importance sous UNIX. Ils forment la
base du stockage de linformation et de nombreux concepts manipu-
ls par le systme dexploitation peuvent tre assimils des chiers.
Nous tudierons les commandes fondamentales permettant de grer des
chiers, puis de les organiser. Nous tudierons galement plusieurs mcanismes per-
mettant de traiter des chiers ecacement ainsi que celui permettant den contrler
laccs. Enn, nous tudierons comment conserver des donnes nayant plus dutilit
immdiate, en occupant le moins de volume possible.
8.1 Gestion des chiers
Nous allons aborder ici les commandes usuelles de gestion des chiers, qui en
permettent la copie, le renommage, la suppression ainsi que la cration de liens.
8.1.1 Copie de chiers : la commande cp
La commande cp (pour copy) permet de crer une copie dun chier :
$ cp toto.txt tata.txt
La commande cp prend deux noms de chiers en arguments :
1. le chier dorigine, qui doit exister pralablement, ici toto.txt ;
2. le chier que lon souhaite crer comme une copie du premier, ici tata.txt.
An de bien comprendre le fonctionnement de cp, il est utile de contrler la liste
des chiers avant et aprs lopration, comme ceci :
97
Chapitre 8. Gestion, organisation et traitement des chiers
$ ll
total 4
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ cp toto.txt tata.txt
$ ll
total 8
-rw-r--r-- 1 babafou prof 334 Jul 31 15:11 tata.txt
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Remarquez que le chier tata.txt est dat du moment o lon a eectu la copie.
Un chier copi est donc toujours plus rcent que le chier dorigine.
La commande cp nache rien si elle se droule correctement. Cest tout fait
normal. La plupart des commandes que nous allons tudier sont destines raliser
une fonction prcise, pas acher quelque chose.
Si un chier tata.txt existait avant deectuer la copie, il est cras sans demander
conrmation. Si lon souhaite tre prudent et viter dcraser un chier par mgarde,
on peut utiliser loption -i (pour interactive) :
$ cp -i toto.txt tata.txt
cp: overwrite tata.txt?
On peut alors rpondre y si lon souhaite craser le chier tata.txt ou n pour
annuler lopration.
La copie peut chouer, en particulier si chier dorigine nexiste pas. En cas
derreur, un message appropri est ach :
$ cp tutu.txt tata.txt
cp: cannot stat tutu.txt: No such file or directory
http://en.wikipedia.org/wiki/Cp
_
(Unix)
8.1.2 Renommage de chiers : la commande mv
La commande mv (pour move) permet de renommer un chier :
$ mv toto.txt tata.txt
La commande mv prend deux noms de chiers en arguments :
1. le chier dorigine, qui doit exister pralablement, ici toto.txt ;
98
8.1. Gestion des chiers
2. le nouveau nom que lon souhaite donner ce chier, ici tata.txt.
la dirence de cp, on a donc toujours un chier unique avant et aprs lopra-
tion. Il a seulement chang de nom entre temps :
$ ll
total 4
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ mv toto.txt tata.txt
$ ll
total 4
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 tata.txt
La commande mv nache rien si elle se droule correctement.
Si un chier tata.txt existait avant deectuer le renommage, il est cras sans
demander conrmation. Si lon souhaite tre prudent et viter dcraser un chier
par mgarde, on peut utiliser loption -i (comme pour cp) :
$ mv -i toto.txt tata.txt
mv: overwrite tata.txt?
On peut alors rpondre y si lon souhaite craser le chier tata.txt ou n pour
annuler lopration.
Le renommage peut chouer, en particulier si le chier dorigine nexiste pas. En
cas derreur, un message appropri est ach :
$ mv tutu.txt tata.txt
mv: cannot stat tutu.txt: No such file or directory
http://en.wikipedia.org/wiki/Mv
8.1.3 Suppression de chiers : la commande rm
La commande rm (pour remove) permet de supprimer un ou plusieurs chiers,
dont les noms sont passs en arguments :
$ rm toto.txt
$ rm toto1.txt toto2.txt toto3.txt
99
Chapitre 8. Gestion, organisation et traitement des chiers
La commande rm nache rien si elle se droule correctement.
Il nest demand aucune conrmation avant de supprimer un chier. Si lon
souhaite tre prudent et viter de supprimer un chier par mgarde, on peut utiliser
loption -i :
$ rm -i toto1.txt toto2.txt toto3.txt
rm: remove regular file toto1.txt? y
rm: remove regular file toto2.txt? n
rm: remove regular file toto3.txt?
Si lun des chiers supprimer nexiste pas, rm ache un message derreur mais
supprime correctement les chiers qui existent :
$ rm toto.txt tutu.txt tata.txt
rm: cannot remove tutu.txt: No such file or directory
Lorsquun chier a t supprim, il ny a aucun moyen simple pour le rcuprr.
Do limportance deectuer des sauvegardes rgulires de ses donnes.
http://fr.wikipedia.org/wiki/Rm
_
(Unix)
8.1.4 Cration de liens : la commande ln
La commande ln (pour link) permet de crer un lien (link en anglais) supplmen-
taire sur un chier.
Pour comprendre son fonctionnement, il faut se pencher sur la faon dont les
chiers sont stocks sur disque.
Un chier est compos de trois lments :
1. un ou plusieurs noms (nous allons voir quun mme chier peut avoir plusieurs
noms, cest tout lintrt de la commande ln) ;
2. un i-nud (inode en anglais) ;
3. son contenu proprement dit.
Le nom dun chier ainsi que son contenu vous sont familiers. Li-nud, en
revanche, est un concept nouveau, bien que dj abord sans le savoir. Li-nud est
une structure du systme de chiers permettant de stocker, pour un chier donn :
ses droits daccs ;
son nombre de liens ;
son propritaire ;
son groupe ;
sa taille ;
100
8.1. Gestion des chiers
la date de dernire modication de son contenu ;
la date de dernire modication de li-nud lui-mme ;
sa date de dernier accs ;
et enn un pointeur vers la localisation de son contenu sur le disque.
En pratique, la majorit de ces informations se retouve dans lachage de ls -l.
Un numro unique est associ li-nud, permettant de le localiser sur le disque.
Ce numro est appel index et son initiale a donn son i au terme i-nud .
Le nom du chier fait rfrence au numro de son i-nud. Cette relation est
ce quon appelle un lien. Li-nud est lui aussi rattach son contenu. Le tout est
schmatis dans la gure 8.1. Ce chanage permet de recoller tous les morceaux dun
chier.
nom
i-nud
contenu
lien
Figure 8.1 Structure dun chier.
Enn, on peut faire acher le numro di-nud associ un chier au moyen de
loption -i de la commande ls :
$ ls -i
68782057 toto.txt
Combine avec loption -l, elle fait apparatre le numro di-nud en premire
colonne :
$ ls -il
total 4
68782057 -rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Cette digression thorique nous ayant permis de prparer le terrain, revenons
la commande ln. Celle-ci permet donc de crer un lien supplmentaire sur un chier
existant, cest--dire un nom supplmentaire :
101
Chapitre 8. Gestion, organisation et traitement des chiers
$ ls -il
total 4
68782057 -rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ ln toto.txt tata.txt
$ ls -il
total 8
68782057 -rw-r--r-- 2 babafou prof 334 Jul 30 17:02 tata.txt
68782057 -rw-r--r-- 2 babafou prof 334 Jul 30 17:02 toto.txt
La commande ln a cr un second nom, tata.txt, pour le chier ordinaire
toto.txt, comme schmatis dans la gure 8.2. Il ne sagit pas dune copie car les
deux noms correspondent au mme numro di-nud. Celui-ci, ainsi que le contenu
du chier, nont donc pas t dupliqus, ce qui fait que la cration dun lien ne prend
quasiment pas de place sur disque. On peut galement remarquer que la valeur de la
colonne indiquant le nombre de liens a augment. Celle-ci indique donc le nombre
de noms dont un chier dispose.
contenu
i-nud
toto.txt
lien
tata.txt
lien
Figure 8.2 Structure dun chier ayant deux noms.
Supprimer lun des deux noms ne supprime pas le chier en tant que tel (i-nud
et contenu), il supprime le lien correspondant. Tant quil existe au moins un lien sur
un chier, celui-ci reste accessible.
En revanche, supprimer lun des deux noms modie le nombre de liens du
chier :
102
8.1. Gestion des chiers
$ ls -il
total 8
68782057 -rw-r--r-- 2 babafou prof 334 Jul 30 17:02 tata.txt
68782057 -rw-r--r-- 2 babafou prof 334 Jul 30 17:02 toto.txt
$ rm tata.txt
$ ls -il
total 4
68782057 -rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Comme pour cp et mv, si un chier tata.txt existait, il est cras lors de la
cration du lien. L encore, loption -i de ln permet de demander conrmation en
cas dcrasement :
$ ln -i toto.txt tata.txt
ln: replace tata.txt?
Il est possible de crer autant de liens dun chier quon le souhaite.
Pour le moment, pouvoir disposer de plusieurs noms pour le mme chier peut
paratre inutile. Nous y reviendrons au paragraphe 8.3.3 page 111.
Toujours est-il quil est dicile de distinguer les liens correspondant un chier
particulier si lon travaille avec un grand nombre de chiers. Pour cela, il existe un
autre type de lien, le lien symbolique.
Loption -s de ln permet de crer un lien symbolique :
$ ll
total 4
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ ln -s toto.txt tata.txt
$ ll
total 4
lrwxrwxrwx 1 babafou prof 8 Aug 3 2009 tata.txt -> toto.txt
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Remarquez que :
il est clairement indiqu que tata.txt est un lien symbolique vers toto.txt ;
un lien symbolique nest pas un chier ordinaire, comme lindique le caractre
l en premire colonne, il sagit dun type de chier particulier ;
le nombre de liens sur le chier toto.txt na pas chang.
Le lien symbolique est en fait un type de chier particulier contenant le nom
dun autre chier, comme schmatis dans la gure 8.3 page suivante. Le contenu
103
Chapitre 8. Gestion, organisation et traitement des chiers
de tata.txt est donc toto.txt, do sa taille de 8 octets et le fait que ls -l puisse
acher tata.txt -> toto.txt. Lorsquon tente de lire le contenu de tata.txt, le
systme dexploitation remarque quil ne sagit pas dun chier ordinaire mais dun
lien symbolique et accde en ralit au contenu de toto.txt.
lien symbolique chier ordinaire
tata.txt toto.txt
i-nud i-nud
toto.txt contenu
Figure 8.3 Principe du lien symbolique.
Lavantage par rapport au lien vu prcdemment est quil est clairement indiqu
dans lachage de ls -l, sans avoir comparer les numros di-nud, que tata.txt
est un lien symbolique vers toto.txt. Linconvnient est que la relation entre les
deux noms nest pas symtrique. En eet, dans la mesure o le lien symbolique
contient le nom du chier de rfrence, le premier cessera de fonctionner si le second
est supprim ou renomm.
Nanmoins, le simple fait de pouvoir acher la relation entre les deux chiers
fait que les liens symboliques sont de loin les plus utiliss.
http://fr.wikipedia.org/wiki/Ln
_
(Unix)
http://fr.wikipedia.org/wiki/Lien
_
matriel
http://fr.wikipedia.org/wiki/Lien
_
symbolique
http://fr.wikipedia.org/wiki/Inode
8.2 Le compltement
Vous laurez certainement remarqu, travailler avec linterprteur de commandes
ncessite lutilisation constante de nombreux noms de chiers. Nous reviendrons
au paragraphe 8.6 page 135 sur la bonne faon de nommer ses chiers mais on peut,
sans trop dorer le sujet, deviner quun bon nom de chier est un nom qui permet
den identier le contenu sans ambigut. Cest donc un nom relativement long et
prcis. Or taper de longs noms de chiers en entier peut vite savrer fastidieux pour
lutilisateur.
104
8.2. Le compltement
Cest pourquoi les interprteurs de commandes modernes (TENEX C shell,
Korn shell, Bourne-again shell et Z shell), en plus davoir une fonction ddition de
la ligne de commande, qui fait dj gagner beaucoup de temps, proposent aussi le
compltement
1
(completion en anglais) des noms de chiers.
Lide est de taper le minimum de choses et de laisser linterprteur de commande
complter automatiquement les noms des chiers, plutt que de les taper en entier.
Voyons tout de suite un exemple. Le principe du compltement est de taper le
dbut du nom de chier et de laisser linterprteur de commandes le terminer tout
seul en appuyant sur la touche tabulation

:
$ ll to

Dans la mesure o toto.txt est le seul chier commenant par to, linteprteur
de commandes complte le nom du chier, le fait suivre dune espace (au cas o lon
souhaite taper dautres noms de chiers) et positionne le curseur la suite :
$ ll toto.txt
On peut alors saisir un autre nom de chier ou simplement valider la commande
avec Enter (lespace en n de ligne est alors ignore, il est inutile de la supprimer).
Dans le cas o plusieurs chiers commencent de la mme faon, linterprteur de
commandes va complter ce quil peut, puis demander lutilisateur de poursuivre
manuellement. Commenons par prparer le terrain :
$ cp toto.txt toto1.txt
$ cp toto.txt toto2.txt
$ cp toto.txt toto3.txt
Nous avons donc maintenant quatre chiers commenant par to.
$ ll to

Linterprteur de commandes regarde quels sont les chiers dont le nom com-
mence par to. Ils ont tous en commun la proprit de commencer par toto donc
linterprteur de commandes est capable de complter le nom de chier jusqu ce
point :
$ ll toto
1. On utilise galement langlicisme compltion, qui est vraiment laid.
105
Chapitre 8. Gestion, organisation et traitement des chiers
Remarquez que le curseur est coll toto, sans espace comme nous avions dans le
prcdent exemple. Ceci est un repre visuel indiquant que le nom du chier nest pas
complet et que linterprteur de commandes a besoin que lutilisateur tape quelque
chose pour laider faire la dirence entre les noms des chiers commenant par
toto.
Si lon na plus en mmoire les noms des chiers, on peut les faire acher en
tapant deux fois sur la touche

:
$ ll toto

Linterprteur de commandes ache alors les noms des chiers commenant par
toto et rache la ligne de commande :
$ ll toto
toto.txt toto1.txt toto2.txt toto3.txt
$ ll toto
Si le chier dsir est toto1.txt, il sut de taper 1 puis une nouvelle fois

pour que linterprteur de commandes termine le nom du chier :


$ ll toto1

Ce qui donne :
$ ll toto1.txt
Avec des noms de chiers aussi courts, il est presque aussi rapide de les saisir en
entier. Nanmoins, avec des noms de chiers plus longs, lutilisation du compltement
fait vraiment gagner beaucoup de temps.
Le rappel des commandes prcdentes et ldition de la ligne de commande,
abords au paragraphe 7.2.6 page 86, ainsi que le compltement rendent lutilisation
de linterprteur de commandes la plus rapide possible. Il est essentiel dutiliser ces
fonctions ds que possible an de taper le minimum de choses et donc de travailler
ecacement.
http://en.wikipedia.org/wiki/Command-line
_
completion
106
8.3. Organisation des chiers
8.3 Organisation des chiers
Lorsquon travaille avec de nombreux chiers, il est utile de pouvoir les organiser,
les classer, les regrouper.
Lobjet permettant dorganiser les chiers sappelle un rpertoire (directory en
anglais). On rencontre galement les termes dossier (folder en anglais) et catalogue
(catalog en anglais).
http://fr.wikipedia.org/wiki/Rpertoire
_
(informatique)
8.3.1 Cration de rpertoires : la commande mkdir
La commande mkdir (pour make directories) permet de crer un rpertoire, dont
le nom lui est pass en argument :
$ ll
total 4
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ mkdir rep
$ ll
total 8
drwxr-xr-x 2 babafou prof 4096 Aug 4 15:56 rep
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
On reconnat que rep est un rpertoire au d prsent en dbut de ligne de lachage
de ls.
On peut acher le contenu du rpertoire (qui est pour linstant vide) grce ls :
$ ls rep
Si lon souhaite en revanche obtenir lachage long des informations du rper-
toire lui-mme et non de son contenu, il faut utiliser loption -d de ls (qui na
dintrt que couple loption -l) :
$ ll -d rep
drwxr-xr-x 2 babafou prof 4096 Aug 4 15:56 rep
Si lon souhaite crer plusieurs rpertoires en mme temps, mkdir accepte plu-
sieurs arguments :
$ mkdir rep1 rep2 rep3
107
Chapitre 8. Gestion, organisation et traitement des chiers
http://fr.wikipedia.org/wiki/Mkdir
8.3.2 Chemin daccs et structure arborescente
Nous navons pour le moment quun rpertoire rep vide mais supposons quil
contienne un chier toto.
Pour dsigner ce chier, il est ncessaire dindiquer le nom du rpertoire qui le
contient, savoir rep, immdiatement suivi du caractre /, immdiatement suivi du
nom du chier, ce qui donne :
rep/toto
Cest ce quon appelle le chemin daccs (path en anglais) au chier toto. Le terme
est imag et dcrit bien la faon de le construire : on parcourt le chemin suivre
pour accder au chier en indiquant le nom du rpertoire contenant le chier, le
sparateur / puis le nom du chier.
Donc, par exemple, pour acher les informations concernant le chier toto, on
peut utiliser la commande :
$ ll rep/toto
Pour supprimer le chier :
$ rm rep/toto
Et ainsi de suite.
noter que le compltement fonctionne galement avec les noms de rpertoires.
On peut donc faire :
$ ll r

Ce qui donnera :
$ ll rep/
On peut alors appuyer sur Enter si lon souhaite simplement acher le contenu
du rpertoire (le / en n de ligne est ignor) ou poursuivre :
$ ll rep/t

108
8.3. Organisation des chiers
voire simplement :
$ ll rep/

dans la mesure o le rpertoire rep ne contient quun seul chier.


On aura au bout du compte :
$ ll rep/toto
Supposons maintenant que le rpertoire rep contienne deux chiers, toto et tata.
Leurs chemins daccs sont donc respectivement rep/toto et rep/tata.
On peut reprsenter graphiquement la structure du rpertoire rep comme indiqu
dans la gure 8.4.
rep
toto tata
Figure 8.4 Structure du rpertoire rep.
Supposons maintenant que lon cre un rpertoire rep2 dans rep. La commande
permettant ceci est :
$ mkdir rep/rep2
Supposons que rep2 contienne deux chiers, titi et tutu. Leurs chemins daccs
sont donc respectivement rep/rep2/titi et rep/rep2/tutu.
L encore, on peut reprsenter graphiquement la structure du rpertoire rep
contenant rep2 comme indiqu dans la gure 8.5 page suivante.
Vous imaginez bien quon peut dvelopper cet exemple quasiment linni, par
exemple avec une structure comme celle schmatise dans la gure 8.6 page suivante
(qui nindique que les rpertoires, pas les chiers).
Une structure de cette forme est ce quon appelle un arbre. Chaque chier
correspond lune des extrmits de la structure, quon appelle une feuille (les
rpertoires vides, qui nont dailleurs aucun intrt, sont galement des feuilles).
Chaque rpertoire est un embranchement quon appelle un nud. Chaque nud
peut tre raccord dautres nuds et des feuilles. En revanche, un nud donn
na quun seul nud de niveau suprieur (voire aucun une fois quon se trouve tout
en haut de la structure).
109
Chapitre 8. Gestion, organisation et traitement des chiers
rep
toto rep2
titi tutu
tata
Figure 8.5 Structure du rpertoire rep contenant rep2.
rep01
rep02
rep05 rep06 rep07
rep11
rep17 rep18 rep19
rep12 rep13
rep03 rep04
rep08 rep09
rep14 rep15 rep16
rep10
Figure 8.6 Arborescence imaginaire.
Il sagit exactement de la structure dun arbre, avec ses branches, ses ramications
et ses feuilles, sauf que lhabitude en informatique est de le reprsenter lenvers.
Au lieu de pousser vers le ciel, comme les arbres vgtaux, les arbres informatiques
poussent vers le sol.
Cest pour cette raison que le systme de chiers sous UNIX est souvent quali
darborescence. Cette structure arborescente du systme de chiers a t introduite
pour la premire fois dans Multics, popularise par UNIX puis reprise par tous les
systmes dexploitation qui ont suivi.
Terminons par une remarque de vocabulaire. Lorsquon considre un rpertoire,
on utilise gnralement le terme sous-rpertoire pour dsigner un rpertoire contenu
dans le premier. Ainsi, dans lexemple de la gure 8.6, le rpertoire rep01 a trois
sous-rpertoires, rep02, rep03 et rep04. son tour, le rpertoire rep02 a trois sous-
rpertoires, rep05, rep06 et rep07. La notion de sous-rpertoire est donc relative.
Par extension, on peut galement qualier de sous-rpertoire un rpertoire situ
plus profondment dans larborescence. Toujours dans lexemple de la gure 8.6, le
110
8.3. Organisation des chiers
rpertoire rep19 peut donc tre considr comme un sous-rpertoire du rpertoire
rep01.
http://fr.wikipedia.org/wiki/Arbre
_
enracin
http://fr.wikipedia.org/wiki/Sous-rpertoire
8.3.3 Retour sur les commandes de gestion des chiers
Maintenant que nous avons un rpertoire, comment y ranger des chiers ? Outre
le fait de crer directement des chiers dans ce rpertoire, on peut y copier ou y
dplacer des chiers existants.
Pour cela, nous pouvons utiliser les commandes cp, mv et ln abordes respective-
ment aux paragraphes 8.1.1 page 97, 8.1.2 page 98 et 8.1.4 page 100.
8.3.3.1 La commande cp et les rpertoires
Reprenons notre exemple habituel et copions le chier toto.txt dans le rpertoire
rep :
$ ll
total 8
drwxr-xr-x 2 babafou prof 4096 Aug 4 15:56 rep
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ cp toto.txt rep
$ ll rep
total 4
-rw-r--r-- 1 babafou prof 334 Aug 4 17:45 toto.txt
$ ll
total 8
drwxr-xr-x 2 babafou prof 4096 Aug 4 15:56 rep
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Lorsque son second argument est un rpertoire, la commande cp y copie le chier
dont le nom est pass en premier argument.
Nous avons donc maintenant deux chiers du mme nom : toto.txt. Comment
les direncier ? Cest trs simple, ils nont pas le mme chemin daccs. Le chier
dorigine a simplement pour chemin daccs toto.txt alors que sa copie a pour
chemin daccs rep/toto.txt.
Il est en eet tout fait possible davoir deux chiers du mme nom tant que
leurs chemins daccs sont dirents.
La commande de copie prcdente est donc quivalente :
$ cp toto.txt rep/toto.txt
111
Chapitre 8. Gestion, organisation et traitement des chiers
Il est possible de nommer la copie diremment du chier dorigine en indiquant
explicitement son nom :
$ cp toto.txt rep/tata.txt
Enn, si lon dsire copier un ensemble de chiers sous le mme nom dans un
rpertoire, il est possible de faire comme ceci :
$ cp fichier1 fichier2 fichier3 rpertoire
8.3.3.2 La commande mv et les rpertoires
De la mme faon, on peut dplacer un chier dans un rpertoire :
$ ll
total 8
drwxr-xr-x 2 babafou prof 4096 Aug 4 15:56 rep
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ mv toto.txt rep
$ ll rep
total 4
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
$ ll
total 4
drwxr-xr-x 2 babafou prof 4096 Aug 4 15:56 rep
Cest dailleurs la fonction principale de la commande mv, comme son nom peut
le laisser supposer. Le renommage nest quune forme particulire de dplacement.
On peut galement renommer un chier tout en le dplaant :
$ mv toto.txt rep/tata.txt
Et, comme pour cp, on peut dplacer un ensemble de chiers dans un rpertoire :
$ mv fichier1 fichier2 fichier3 rpertoire
112
8.3. Organisation des chiers
8.3.3.3 La commande ln et les rpertoires
Lutilisation de liens prend tout son sens avec les rpertoires. Il semble en eet
inutile de disposer de plusieurs noms pour le mme chiers sauf si ce chier doit
exister de manire identique des endroits dirents.
La syntaxe dutilisation de ln avec des rpertoires est strictement identique celle
de cp et de mv qui vient dtre indique. Nous nallons pas la rappeler une troisime
fois mais donner un exemple de la faon dont on peut utiliser les liens.
Considrons un laboratoire dont lquipe, compose de quatre personnes, doit
analyser des chiers volumineux. Ces chiers sont stocks dans un rpertoire commun,
accessible tous, et ne doivent pas tre dplacs. Or, pour faciliter lutilisation de
ces chiers, il serait pratique que chaque personne ait les chiers utiles dans son
rpertoire de travail (p1 pour la premire personne, p2 pour la deuxime et ainsi de
suite). Copier les chiers serait possible mais cela gaspillerait de lespace de stockage
puisque les chiers prsents dans les rpertoires de travail des personne seraient en
double par rapport au rpertoire commun. Une solution lgante est, dans chaque
rpertoire de travail, de crer des liens ou des liens symboliques vers les chiers
analyser dans le rpertoire commun, comme schmatis dans la gure 8.7.
labo
p1 p2 p3 p4 commun
Figure 8.7 Exemple dutilisation de ln.
Ainsi chacun dispose dans son rpertoire des chiers qui lui ont t attribus
sans augmenter le volume des donnes stockes (un lien ou un lien symbolique ne
prennent quasiment pas de place sur disque).
8.3.4 Se dplacer dans un rpertoire : la commande cd
Nous avons vu au paragraphe 8.3.2 page 108 comment dsigner un chier stock
dans un rpertoire, ventuellement sur plusieurs niveaux de profondeur, en prxant
son nom par ceux de la suite de rpertoires traverser, spars par des /.
Cela convient si lon na que quelques commandes taper mais le fait de prxer
les noms de chiers peut vite savrer fastidieux. Il serait plus utile de pouvoir se
dplacer dans le rpertoire qui contient les chiers sur lesquels on veut travailler an
de pouvoir les dsigner directement par leur nom.
113
Chapitre 8. Gestion, organisation et traitement des chiers
Ceci se fait au moyen de la commande cd (pour change directory) :
$ cd rep
On se retrouve alors dans le rpertoire rep et lon peut dsigner les chiers qui
sy trouvent directement par leur nom.
Le rpertoire rep est maintenant le rpertoire courant (working directory en
anglais), cest--dire celui dans lequel on se trouve et o lon peut dsigner les chiers
sans les prxer.
Un eet de bord intressant de la commande cd est quelle modie linvite de
linterprteur de commandes :
babafou@babasse:~$ cd rep
babafou@babasse:~/rep$
Au paragraphe 7.2.2 page 83, nous navions pas vraiment dcrit la partie de
linvite se situant entre : et $. Nous ne pouvons pas encore la dcrire totalement
mais vous devez maintenant y reconnatre le nom du rpertoire dans lequel on vient
de se dplacer. Cela ressemble quelque part un chemin daccs. Cest en eet le cas,
cest le chemin daccs absolu (nous reviendrons sur cette notion au paragraphe 8.3.6
page 119) du rpertoire courant.
Le fait dindiquer le chemin daccs absolu du rpertoire courant dans linvite
est spcique la conguration de lENSTA ParisTech mais cest une pratique
assez rpandue parce quelle permet de savoir en un coup dil dans quel rpertoire
on se trouve.
dfaut, on peut utiliser la commande pwd (pour print working directory), qui
ache le chemin daccs absolu du rpertoire courant :
babafou@babasse:~/rep$ pwd
/home/b/babafou/rep
Remarquez que les chemins daccs ~/rep et /home/b/babafou/rep semblent
dirents. Ils sont en fait quivalents parce que le caractre ~ est une notation
permettant de dsigner le chemin daccs absolu de son propre rpertoire personnel
(en loccurrence /home/b/babafou).
Maintenant que nous sommes dans le rpertoire rep, protons-en pour regarder
ce qui sy trouve :
114
8.3. Organisation des chiers
$ ll -a
total 12
drwxr-xr-x 2 babafou prof 4096 Aug 5 16:00 .
drwxr-xr-x 6 babafou prof 4096 Jul 30 17:02 ..
-rw-r--r-- 1 babafou prof 334 Aug 4 17:45 toto.txt
Alors que nous venons tout juste de crer le rpertoire rep et de recopier un
chier dedans, voil dj que deux autres rpertoires le squattent ! Mais do viennent-
ils ? Et pourquoi ont-ils ces noms tranges ?
Si vous avez fait attention, nous les avons dj aperus dans les exemples da-
chage de ls -a.
Les rpertoires . et .. font partie de la structure du systme de chiers. Ils
existent dans chaque rpertoire et sont crs automatiquement dans tout nouveau
rpertoire.
Le rpertoire . est un lien sur le rpertoire qui le contient. Il est en eet utile, nous
le verrons par la suite, de pouvoir dsigner ici de manire simple. En consquence,
la commande suivante est sans eet :
babafou@babasse:~/rep$ cd .
babafou@babasse:~/rep$
Le rpertoire .. est un lien sur le rpertoire parent de celui qui le contient dans
larborescence du systme de chiers, cest--dire au-dessus . Nous avons en eet
vu au paragraphe 8.3.2 page 108 quun nud donn de larborescence du systme
de chiers na quun seul nud de niveau suprieur. En consquence, la commande
suivante permet de remonter dun rpertoire :
babafou@babasse:~/rep$ cd ..
babafou@babasse:~$
En rsum, on peut donc dire que . est ici et que .. est au-dessus .
http://fr.wikipedia.org/wiki/Cd
_
(Commande)
http://fr.wikipedia.org/wiki/Pwd
8.3.5 Promenade dans le systme de chiers
ui a dit que linformatique tait ennuyeuse ? Au contraire, cest loccasion de
faire une promenade dans des contres sauvages...
Puisquil est maintenant possible de se dplacer dans le systme de chiers, nous
pouvons envisager dexplorer les rpertoires qui nous entourent. Il est assez clair au
115
Chapitre 8. Gestion, organisation et traitement des chiers
vu de lachage de la commande pwd que nous sommes dans un rpertoire /home/b/
babafou. Il sagit du rpertoire personnel (home directory en anglais) de lutilisateur
babafou. Chaque utilisateur dun systme UNIX possde en eet un rpertoire
personnel, qui est celui dans lequel il est plac en dbut de session et qui contient
tous ses chiers.
Traditionnellement, sur un systme UNIX, le nom du rpertoire personnel dun
utilisateur est identique son identiant et les rpertoires personnels de tous les utili-
sateurs sont situs dans le rpertoire /home. Nanmoins, si le nombre dutilisateurs
du systme est important, il peut tre ncessaire de hirarchiser lorganisation des
rpertoires personnels plutt que de les stocker tous au mme niveau.
Cest le cas lENSTA ParisTech, o un niveau supplmentaire a t ajout,
savoir un rpertoire entre /home et les rpertoires personnels des utilisateurs,
correspondant linitiale de lidentiant de chaque utilisateur.
uy a-t-il au-dessus ?
babafou@babasse:~$ cd ..
babafou@babasse:/home/b$
Faites de mme et achez le contenu du rpertoire avec ls. Vous y verrez les
rpertoires personnels de tous les utilisateurs dont lidentiant a la mme initiale
que le vtre.
uy a-t-il au-dessus ?
babafou@babasse:/home/b$ cd ..
babafou@babasse:/home$
On retrouve ici les rpertoires correspondant aux initiales des identiants des
utilisateurs.
uy a-t-il au-dessus ?
babafou@babasse:/home$ cd ..
babafou@babasse:/$
Ce quon trouve ici est plus dicile dcrire. Nous ne le ferons sommairement
dans un instant.
uy a-t-il au-dessus ?
116
8.3. Organisation des chiers
babafou@babasse:/$ cd ..
babafou@babasse:/$
Tiens, on ne bouge plus. Le rpertoire courant dans linvite na visiblement
pas chang et il est facile de vrier avec ls quon voit toujours les mmes chiers
quauparavant.
Nous sommes en eet dans le rpertoire racine (root directory en anglais) du
systme de chiers. Le rpertoire racine est le point de dpart du systme de chiers
et on le dsigne sous le nom /. Le mme caractre sert donc dsigner le rpertoire
racine et sparer les composants dun chemin daccs.
Le rpertoire racine est un rpertoire particulier, pour lequel . et .. sont iden-
tiques. Cest mme le seul rpertoire ayant cette particularit.
Revenons sur le contenu du rpertoire racine. Il serait fastidieux de le dcrire
en dtail, dautant plus quil existe des dirences entre UNIX utiliss mais on
peut dgager certaines constantes. Nous en proterons dailleurs pour explorer
larborescence plus en profondeur.
/
bin dev etc home lib sbin
tmp usr
X11R6 bin include lib local
bin include lib sbin share
sbin share
var
Figure 8.8 Structure du systme de chiers sous UNIX.
Larborescence classique dun systme de chiers UNIX est schmatise dans la
gure 8.8.
Le rpertoire racine contient :
un rpertoire bin (pour binaries), qui contient beaucoup des commandes que
nous avons utilises ;
un rpertoire dev (pour devices), qui contient les chiers spciaux (dont nous
discuterons au paragraphe 9.4.1 page 174) ;
un rpertoire etc (pour et cetera), qui contient les chiers de conguration du
systme ;
117
Chapitre 8. Gestion, organisation et traitement des chiers
un rpertoire home, qui contient, comme nous lavons dj vu, les rpertoires
personnels des utilisateurs ;
un rpertoire lib (pour libraries), qui contient des bibliothques de code
utilises par lensemble du systme ;
un rpertoire sbin, qui contient des commandes utilises pour la maintenance
du systme ;
un rpertoire tmp, qui sert stocker des chiers temporaires ;
un rpertoire usr, que nous allons dcrire plus en dtail ;
un rpertoire var, qui contient des donnes dont le volume peut varier (docu-
ments en attente dimpression, par exemple).
Le rpertoire /usr contient :
un rpertoire X11R6, qui contient les logiciels et chiers de linterface gra-
phique ;
un rpertoire include, qui contient les chiers den-tte du compilateur C;
un rpertoire local, dont nous allons discuter juste aprs ;
un rpertoire share, qui contient des chiers partageables entre dirents
systmes, principalement de la documentation.
Le rpertoire /usr contient galement des rpertoires bin, lib et sbin, dont le
principe est identique ceux quon trouve dans le rpertoire racine. La dirence est
que ceux du rpertoire racine contiennent des chiers indispensables au dmarrage
du systme. Historiquement, /usr tait plac sur un disque dirent du disque de
dmarrage, voire sur un serveur de chiers, et ntait donc pas accessible pendant le
dmarrage du systme. On y stockait donc des chiers uniquement utiles une fois le
dmarrage termin et donc destins aux utilisateurs (do le nom usr).
Le rpertoire /usr/local contient des rpertoires bin, include, lib, sbin et
share, sur le mme principe que /usr, la dirence quils sont locaux chaque
ordinateur ou chaque site. Les chiers spciques de la conguration de lENSTA
ParisTech, par exemple, sont donc quelque part sous ce rpertoire.
Vous pouvez utiliser la commande man hier pour avoir une description plus
prcise de larborescence du systme de chiers de lUNIX que vous utilisez.
Une fois la promenade termine, chacun peut rentrer chez soi au moyen de la
commande cd, sans argument :
babafou@babasse:/$ cd
babafou@babasse:~$
O quon soit dans le systme de chiers, cd sans argument ramne dans son
rpertoire personnel.
http://fr.wikipedia.org/wiki/Rpertoire
_
racine
http://fr.wikipedia.org/wiki/Filesystem
_
Hierarchy
_
Standard
118
8.3. Organisation des chiers
8.3.6 Chemin daccs absolu et chemin daccs relatif
Aprs ce priple pique, nous avons bien mrit de nous reposer en discutant de
vocabulaire. Il faut en eet approfondir le concept de chemin daccs.
Un chemin daccs absolu est un chemin daccs qui part du rpertoire racine du
systme de chiers et parcourt celui-ci pour aboutir au chier dsigner. Un chemin
daccs absolu commence donc par /. Par exemple, /home/b/babafou/toto est un
chemin daccs absolu.
Un chemin daccs relatif est un chemin daccs qui ne part pas du rpertoire
racine du systme de chiers. Un chemin daccs relatif ne commence donc pas par /.
Par exemple, rep/toto est un chemin daccs relatif.
Un chemin daccs absolu est non ambigu, il dsigne toujours le mme chier, in-
dpendamment de lendroit o lon se trouve. Un chemin daccs relatif, en revanche,
est relatif lendroit o lon se trouve.
Considrons par exemple larborescence reprsente dans la gure 8.9.
/home/b/babafou
rep1
rep
toto
rep2
rep
toto
Figure 8.9 Chemin daccs relatif (exemple 1).
Si lon se trouve dans le rpertoire rep1, le chier toto de gauche a pour chemin
daccs relatif rep/toto. Celui de droite a pour chemin daccs relatif ../rep2/rep/
toto.
Si lon se trouve dans le rpertoire rep2, le chier toto de gauche a pour chemin
daccs relatif ../rep1/rep/toto. Celui de droite a pour chemin daccs relatif rep/
toto.
Le rpertoire courant conditionne donc les chemins daccs relatifs. Ce sont
nanmoins ceux quon utilise le plus souvent parce quils sont plus courts que les
chemins daccs absolus et donc plus pratiques utiliser.
Il est important de bien apprhender leur construction, qui est en fait un parcours
darbre trs simple. Le dpart seectue du rpertoire courant. uand on remonte
119
Chapitre 8. Gestion, organisation et traitement des chiers
un niveau, on met .., quand on descend, on met le nom du rpertoire quon traverse.
Et on spare le tout avec des /.
Considrons maintenant larborescence un peu plus complexe reprsente dans
la gure 8.10.
/home/b/babafou
rep1
rep3
toto1
rep4
toto2
rep2
rep5
toto3
rep6
toto4
Figure 8.10 Chemin daccs relatif (exemple 2).
Le tableau 8.1 indique, lorsquon se trouve dans chacun des rpertoires, les
chemins daccs relatifs des chiers toto1 et toto2.
toto1 toto2
rep1 rep3/toto1 rep4/toto2
rep2 ../rep1/rep3/toto1 ../rep1/rep4/toto2
rep3 toto1 ../rep4/toto2
rep4 ../rep3/toto1 toto2
rep5 ../../rep1/rep3/toto1 ../../rep1/rep4/toto2
rep6 ../../rep1/rep3/toto1 ../../rep1/rep4/toto2
Table 8.1 Chemin daccs relatif (exemple 2), toto1 et toto2.
Essayez, sans regarder le tableau 8.2 page suivante qui contient la solution, de
faire la mme chose pour toto3 et toto4.
http://fr.wikipedia.org/wiki/Chemin
_
daccs
8.3.7 Notation simplie du rpertoire personnel
Nous avons vu au paragraphe 8.3.4 page 113 que le caractre ~ pouvait tre utilis
pour dsigner son propre rpertoire personnel. Ainsi, la commande suivante :
120
8.3. Organisation des chiers
toto3 toto4
rep1 ../rep2/rep5/toto3 ../rep2/rep6/toto4
rep2 rep5/toto3 rep6/toto4
rep3 ../../rep2/rep5/toto3 ../../rep2/rep6/toto4
rep4 ../../rep2/rep5/toto3 ../../rep2/rep6/toto4
rep5 toto3 ../rep6/toto4
rep6 ../rep5/toto3 toto4
Table 8.2 Chemin daccs relatif (exemple 2), toto3 et toto4.
$ more ~/rep/toto.txt
est quivalente :
$ more /home/b/babafou/rep/toto.txt
Il est galement possible de dsigner le rpertoire personnel dun autre utilisateur
en faisant suivre le caractre ~ de son identiant :
$ cd ~identifiant
Ici, linterprteur de commandes va remplacer ~identifiant par le chemin daccs
absolu du rpertoire personnel de lutilisateur indiqu. Ceci fonctionne bien entendu
avec nimporte quelle commande utilisant un chemin daccs :
$ more ~identifiant/rep/toto.txt
8.3.8 Suppression de rpertoires
8.3.8.1 La commande rmdir
La commande rmdir (pour remove directories) permet de supprimer un ou plu-
sieurs rpertoires vides (cest--dire ne contenant plus rien dautre que . et ..) :
$ rmdir rep
$ rmdir rep1 rep2 rep3
Si le rpertoire supprimer nest pas vide, on obtient un message derreur :
121
Chapitre 8. Gestion, organisation et traitement des chiers
$ rmdir rep
rmdir: rep: Directory not empty
http://en.wikipedia.org/wiki/Rmdir
8.3.8.2 Loption -r de la commande rm
Si lon souhaite en revanche supprimer un ou plusieurs rpertoires et tout leur
contenu, il faut utiliser la commande rm avec loption -r :
$ rm -r rep
$ rm -r rep1 rep2 rep3
8.3.9 uelques conseils pour organiser vos chiers
Maintenant que vous savez travailler avec des rpertoires, vous pouvez crer, par
exemple, un rpertoire sii pour y ranger tous les chiers relatifs ce cours au lieu
de les amonceler directement dans votre rpertoire personnel.
Par la suite, vous pourrez crer un rpertoire par cours et, au besoin, ramier ce
rpertoire si ncessaire, par exemple en crant dedans un rpertoire par petite classe
pour y stocker les exercices de chaque sance.
8.4 Les mtacaractres de gnration de noms de chiers
Nous avons vu prcdemment que certaines commandes acceptaient un nombre
quelconque darguments. Il nest ainsi pas rare de traiter plusieurs chiers en une
seule commande plutt que un par un.
Par exemple, on utilisera :
$ rm toto1 toto2 toto3
plutt que :
$ rm toto1
$ rm toto2
$ rm toto3
Dans cet exemple, il ny a que trois chiers mais imaginez quil faille supprimer
les chiers toto00 jusqu toto99. Mme avec laide du compltement, taper la
122
8.4. Les mtacaractres de gnration de noms de chiers
commande de suppression serait fastidieux et rptitif. Or nous avons vu que lun
des objectifs de linterprteur de commandes tait justement de fournir des outils
permettant de simplier les tches rptitives.
Cest le but des mtacaractres de gnration de noms de chiers (quon appellera
plus simplement mtacaractres par la suite). Leur but est dexprimer un ensemble
de noms de chiers de la manire la plus compacte possible.
http://fr.wikipedia.org/wiki/Mtacaractre
8.4.1 Le mtacaractre ?
Revenons notre premier exemple. Si lon veut supprimer les chiers toto1,
toto2 et toto3, on peut donc utiliser la commande :
$ rm toto1 toto2 toto3
Mais on aura plus vite fait ainsi :
$ rm toto?
Le caractre ? est en eet un mtacaractre remplaant exactement un caractre
quelconque.
Comment cela fonctionne-t-il ? Une fois quon a tap sur Enter , linterprteur
de commandes va analyser la ligne la recherche de caractres ayant une signication
particulire pour lui. Cest le cas de ?. Il considre donc lexpression contenant ce
caractre, savoir toto?. Cela signie : les noms de chiers commenant par toto,
suivi dexactement un caractre quelconque. Linterprteur de commandes eectue
alors lquivalent dun ls, slectionne les chiers dont le nom correspond ce critre,
remplace toto? dans la ligne de commandes par la liste de ces chiers et, nalement,
excute la commande.
On peut visualiser ce processus en utilisant la commande echo, dont le but est
simplement dacher la liste de ses arguments :
$ echo toto?
toto1 toto2 toto3
La commande echo na donc pas reu toto? en argument mais la liste explicite
compose de toto1, toto2 et toto3. Cest linterprteur de commandes qui a eectu
cette substitution.
Lorsquon commence utiliser les mtacaractres ou quon souhaite simplement
vrier une commande avant de lexcuter, il est intressant dutiliser echo. Cela
123
Chapitre 8. Gestion, organisation et traitement des chiers
permet de vrier que lexpression contenant les mtacaractres est correcte sans
risquer de perdre des chiers. Dans les exemples suivants, nous utiliserons donc echo.
Attention, sil existe des chiers toto4, toto5, etc. ou des chiers totoa, totob,
etc., ils seront pris en compte par lexpression toto?. Nous verrons des mtacaractres
plus restrictifs dans la section suivante.
Il faut galement bien comprendre que les expressions contenant des mtacarac-
tres vont gnrer uniquement les noms des chiers qui existent dj. Cela ne peut
servir crer de nouveaux chiers. Dans les exemples suivants, nous supposerons
que les chiers mentionns existent bien.
Il est bien entendu possible dutiliser ? nimporte o dans un nom de chier. Par
exemple lexpression suivante achera tous les chiers dont le nom commence par
toto suivi dexactement un caractre suivi de .txt :
$ echo toto?.txt
On peut mme utiliser des expressions contenant plusieurs ? si cela est ncessaire.
Ainsi lexpression suivante achera les chiers toto00 jusqu toto99 :
$ echo toto??
8.4.2 Les mtacaractres [ et ]
Le mtacaractre ? remplace exactement un caractre quelconque. Mais il est
parfois utile dtre plus prcis. Ainsi, sil existe des chiers toto1 jusqu toto9 mais
quon ne souhaite exprimer que toto1 jusqu toto3, on peut utiliser :
$ echo toto[123]
Lexpression [123] reprsente un et un seul caractre parmi ceux indiqus,
savoir 1, 2 ou 3.
On peut galement indiquer un intervalle. Ici, [1-5] dsigne les chires de 1 5 :
$ echo toto[1-5]
On peut galement utiliser des lettres, minuscules ou majuscules :
$ echo toto[a-z]
$ echo toto[A-Z]
Attention ne pas mlanger chires, minuscules et majuscules, il faut avoir le
mme type de caractre de part et dautre du tiret.
124
8.4. Les mtacaractres de gnration de noms de chiers
8.4.3 Le mtacaractre
*
Le meilleur est pour la n. Le mtacaractre
*
remplace zro, un ou plusieurs
caractres. Cest le mtacaractre ultime. Avec lui, plus rien ne dpasse !
Par exemple, lexpression suivante achera tous les chiers dont le nom com-
mence par toto (suivi de rien ou de quelque chose) :
$ echo toto
*
Celle-ci achera tous les chiers dont le nom se termine par .txt :
$ echo
*
.txt
Et ceci nest ni plus ni moins que le ls du pauvre :
$ echo
*
Vous pouvez imaginer les ravages que peut produire une commande telle que :
$ rm
*
Il faut dailleurs tre prudent lorsquon utilise
*
avec des commandes destructrices.
Supposons que lon souhaite supprimer tous les chiers dont le nom commence par
toto et quon fasse :
$ rm toto
*
Oui, il y a bien une funeste erreur de frappe : une espace entre toto et
*
. Ceci va
donc supprimer toto et tous les chiers se trouvant dans le rpertoire courant. Les
chiers que lon souhaitait supprimer lauront bien t mais avec quelques dommages
collatraux. Prudence, donc.
8.4.4 Utilisation avance
Indiquons quelques exemples plus compliqus dutilisation des mtacaractres.
On peut utiliser les mtacaractres dans des chemins daccs :
$ echo rep/toto
*
125
Chapitre 8. Gestion, organisation et traitement des chiers
Les mtacaractres gnrent indiremment noms de chiers et noms de rper-
toires :
$ echo
*
/toto.txt
Et on peut bien entendu tout mlanger :
$ echo toto-200[0-4]-??-??-
*
8.4.5 Gestion des erreurs
On ne le rptera jamais assez : les mtacaractres ne permettent de gnrer que
des noms de chiers qui existent. Les utiliser dans des expressions ne permettant de
gnrer aucun nom de chier peut causer des surprises.
En eet, le comportement des mtacaractres appliqus des noms de chiers
qui nexistent pas est dirent suivant les interprteurs de commandes. On peut le
tester avec la commande echo.
Supposons quil existe dans le rpertoire courant trois chiers toto1, toto2, toto3
et cest tout.
Les interprteurs de commandes sh, ksh et bash, confronts une expression
contenant un mtacaractre et ne correspondant aucun chier existant, laissent
cette expression telle quelle :
$ echo toto? tata?
toto1 toto2 toto3 tata?
Pour leur part, csh et tcsh suppriment lexpression fautive :
% echo toto? tata?
toto1 toto2 toto3
Enn, zsh adopte le seul comportement quon puisse considrer comme sens, il
nexcute pas la commande et ache un message derreur :
% echo toto? tata?
zsh: no matches found: tata?
Aucun de ces comportements ne pose vraiment de problme mais il est prf-
rable dtre conscient de ces dirences. Il est encore meilleur dviter dutiliser des
expressions contenant un mtacaractre et ne permettant de gnrer aucun nom de
chier.
126
8.5. Les droits daccs
8.5 Les droits daccs
UNIX a toujours t un systme dexploitation multi-utilisateur, cest--dire quil
permet plusieurs personnes dutiliser le mme ordinateur simultanment. Cela
ncessite certaines mesures de scurit, en particulier en ce qui concerne laccs aux
chiers. On peut en eet vouloir que certains utilisateurs puissent accder certains
de ses chiers mais pas dautres, que dautres utilisateurs ne puissent accder
aucun de ses chiers, etc.
Cest lobjet des droits daccs.
http://fr.wikipedia.org/wiki/Permissions
_
Unix
8.5.1 Principe des droits daccs
Chaque chier dispose de droits daccs qui sont stocks dans son i-nud et
achs en premire colonne par ls -l :
$ ls -l toto.txt
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Les droits daccs suivent immdiatement le premier caractre de la premire
colonne, qui indique le type du chier. Les droits daccs du chier toto.txt sont
donc :
rw-r--r--
Il faut lire ceci comme trois ensembles de trois caractres :
rw- r-- r--
Dans chaque ensemble de trois caractres, on peut avoir :
1. en premire position, un r (pour read) si le droit de lire le chier est accord
ou un - sil ne lest pas ;
2. en deuxime position, un w (pour write) si le droit dcrire dans le chier est
accord ou un - sil ne lest pas ;
3. en troisime position, un x (pour execute) si le droit dexcuter
2
le chier est
accord ou un - sil ne lest pas ; ce droit na de sens que pour les logiciels, pas
pour les chiers de donnes.
2. Excuter au sens de lancer un programme , pas de fusiller ...
127
Chapitre 8. Gestion, organisation et traitement des chiers
Chaque ensemble de droits concerne des utilisateurs particuliers du systme
informatique :
1. le premier ensemble sapplique au propritaire du chier ;
2. le deuxime ensemble sapplique aux membres du groupe du chier ;
3. le troisime ensemble sapplique tous les autres utilisateurs.
Dtaillons tout cela avec notre chier toto.txt :
$ ls -l toto.txt
-rw-r--r-- 1 babafou prof 334 Jul 30 17:02 toto.txt
Le premier ensemble de droits, rw-, sapplique donc au propritaire du chier,
babafou (qui est indiqu dans la troisime colonne de lachage de ls -l). Celui-ci
a (r) le droit de lire son chier. Il a galement (w) le droit dcrire dans son chier.
Tout cela semble raisonnable. En revanche, il na pas (-) le droit dexcuter ce chier.
Puisquil ne sagit pas dun logiciel mais dun chier de donnes, cest tout fait
comprhensible.
Le deuxime ensemble de droits, r--, sapplique aux membres du groupe du
chier. Celui-ci est indiqu dans la quatrime colonne de lachage de ls -l. Il sagit
ici de prof. lENSTA ParisTech, tous les enseignants font partie de ce groupe.
Ils peuvent donc lire le chier toto.txt et cest tout. Les lves, quant eux, sont
regroups par promotion. Les droits daccs de groupe de leurs chiers concernent
donc leur promotion.
Le troisime ensemble de droits, r--, sapplique tous les autres utilisateurs du
systme informatique, cest--dire ceux qui ne sont ni lutilisateur babafou ni les
membres du groupe prof.
Le tableau 8.3 rsume tout ceci.
propritaire groupe autres
prsence du droit r w x r w x r w x
absence du droit - - - - - - - - -
Table 8.3 Droits daccs.
Il est logique que le propritaire dun chier dispose de plus ou dau moins
autant de droits que les membres de son groupe. De mme, il est logique que ceux-ci
disposent de plus ou dau moins autant de droits que les autres utilisateurs.
Des droits daccs tels que ceux-ci, par exemple, nont donc aucune logique et ne
devraient tre rencontrs sur aucun systme UNIX :
--xr-xrwx
128
8.5. Les droits daccs
Les droits daccs sur les rpertoires ont une signication semblable si lon
considre un rpertoire comme tant la liste des noms des chiers quil contient :
1. le droit r donne la possibilit dacher la liste des noms des chiers contenus
dans le rpertoire, donc de faire ls dessus ;
2. le droit w donne la possibilit dcrire dans la liste des noms des chiers
contenus dans le rpertoire, donc de crer des chiers dans le rpertoire, mme
si lon nest pas propritaire de celui-ci, de renommer et de supprimer des
chiers dans le rpertoire, mme si lon nest pas propritaire de ces chiers ;
3. le droit x donne la possibilit de traverser le rpertoire, cest--dire de faire cd
dans le rpertoire ou daccder au contenu de ses chiers (sous rserve que les
droits daccs aux chiers eux-mmes le permettent).
Il convient dinsister sur le danger davoir sur ses propres rpertoires un w ailleurs
que pour soi. Un w pour le groupe fait que tous les membres de celui-ci peuvent en
particulier supprimer les chiers contenus dans le rpertoire. Un w pour les autres
est videmment bien plus dangereux.
Les droits daccs r et x sur les rpertoires, quant eux, vont quasiment toujours
ensemble. Il semble en eet peu logique de pouvoir acher le contenu dun rpertoire
si lon ne peut sy dplacer et a contrario de ne pas avoir la liste des chiers quil
contient si lon peut aller dedans.
Imaginez que le rpertoire est une ptisserie. Le droit r est le droit de regarder
dans la vitrine tous ces babas au rhum, ces clairs, ces meringues, ces millefeuilles,
ces oranais, ces paris-brest, ces religieuses... Le droit x est le droit dentrer dans la
ptisserie pour cder la tentation... a ne sert rien de baver devant la vitrine si
lon ne peut pas rentrer dans la boutique (r--). De mme, y rentrer sans voir ce
quon y vend est frustrant (--x).
Enn, les plus perspicaces auront remarqu que les liens symboliques avaient des
droits daccs inquitants :
lrwxrwxrwx 1 babafou prof 8 Aug 3 2009 tata.txt -> toto.txt
En ralit, les droits daccs des liens symboliques sont ignors, ce sont toujours
les droits daccs du chier vers lequel pointe le lien symbolique qui sont pris en
compte.
8.5.2 Reprsentation numrique des droits daccs
Comme toujours en informatique, il est ncessaire de reprsenter les droits daccs
sous forme numrique plutt que sous la forme dune chane de caractres telle que
rw-r--r--. Comment faire ?
La reprsentation des droits daccs sous la forme dune chane de caractres a
deux caractristiques remarquables :
129
Chapitre 8. Gestion, organisation et traitement des chiers
chaque droit daccs a une position bien prcise ;
chaque droit daccs na que deux tats possibles, accord ou refus.
On peut donc envisager de reprsenter des droits daccs sous la forme dun
nombre binaire (voir le paragraphe 2.1.3.1 page 25) comprenant neuf chires, un par
droit daccs, chaque chire correspondant au droit situ la mme position dans la
reprsentation des droits daccs sous la forme dune chane de caractres et, pour
chaque chire, 1 reprsentant laccord dun droit et 0 son refus. Ainsi, rw-r--r--
peut tre reprsent par 110100100.
Cette reprsentation est malheureusement loin dtre pratique et il serait in-
tressant de pouvoir la simplier. Par dnition, le nombre binaire 110100100 se
dcompose en puissances de 2 ainsi :
110100100 = 1 2
8
+1 2
7
+0 2
6
+
1 2
5
+0 2
4
+0 2
3
+
1 2
2
+0 2
1
+0 2
0
soit, en factorisant la puissance de 2 la plus petite de chaque ligne :
110100100 = (1 2
2
+1 2
1
+0 2
0
) 2
6
+
(1 2
2
+0 2
1
+0 2
0
) 2
3
+
(1 2
2
+0 2
1
+0 2
0
) 2
0
or 2
0
= 8
0
, 2
3
= 8
1
et 2
6
= 8
2
:
110100100 = (1 2
2
+1 2
1
+0 2
0
) 8
2
+
(1 2
2
+0 2
1
+0 2
0
) 8
1
+
(1 2
2
+0 2
1
+0 2
0
) 8
0
et donc, en calculant les expressions entre parenthses :
110100100 = 6 8
2
+4 8
1
+4 8
0
Le nombre binaire 110100100 peut donc galement tre reprsent par le nombre
644 en base 8. Attention ne pas dire six cent quarante-quatre car il ne sagit pas
de 644 en base 10. En loccurrence, on ne peut pas vraiment dire mieux que six
quatre quatre ...
Vous conviendrez que la dmonstration prcdente est gnralisable nimporte
quel nombre binaire dont on groupe les chires trois par trois. Cest dailleurs une
relation gnrale entre une base de numration et ses puissances.
130
8.5. Les droits daccs
On peut donc reprsenter les droits daccs sous forme de nombres en base
8, cest--dire en octal (voir le paragraphe 2.1.3.2 page 25). Chaque chire octal
correspondant un ensemble de trois droits daccs. Les correspondances entre droits
daccs, binaire et octal sont rsumes dans le tableau 8.4.
r w x binaire octal
--- 0 0 0 000 0
--x 0 0 1 001 1
-w- 0 1 0 010 2
-wx 0 1 1 011 3
r-- 1 0 0 100 4
r-x 1 0 1 101 5
rw- 1 1 0 110 6
rwx 1 1 1 111 7
Table 8.4 Droits daccs en binaire et en octal.
Dailleurs, si lon retient que r correspond 2
2
= 4, que w correspond 2
1
= 2 et
que x correspond 2
0
= 1, on peut nutiliser que ces trois valeurs pour transformer
des droits daccs en nombre octal et vice versa plutt que dutiliser les huit valeurs
du tableau 8.4.
Donc rw-r--r-- donne rw- pour le premier chire, soit 4 +2 = 6, r-- pour les
deuxime et troisime chires, soit 4, cest--dire 644 au nal. La dcomposition
inverse se fait sans ambigut.
Pour terminer, indiquons que lordre dans lequel les droits daccs sont indiqus
(r puis w puis x) est purement arbitraire mais obit une certaine logique. Il est en
eet plus utile de pouvoir lire le contenu dun chier que de pouvoir crire dedans
(en pratique, on consulte beaucoup plus souvent ses chiers quon ne les modie).
De mme, il est plus utile de pouvoir crire dans un chier que de pouvoir lexcuter
(en pratique, il y a beaucoup plus de chiers de donnes que de logiciels). On attribue
donc la plus haute valeur numrique r, la suivante w et la plus faible x. De cette
faon, comme dj indiqu, il est facile de vrier numriquement que le propritaire
dun chier possde des droits daccs suprieurs ou gaux ceux de son groupe,
eux-mmes suprieurs ou gaux ceux des autres.
Aprs ce petit intermde mathmatique, revenons quelque chose de plus infor-
matique.
8.5.3 La commande chmod
La commande chmod (pour change mode) permet de modier les droits daccs
dun ensemble de chiers ou de rpertoires.
131
Chapitre 8. Gestion, organisation et traitement des chiers
Sa syntaxe est inhabituelle parce que son premier argument (ce nest pas une
option) indique quels droits daccs modier dans les chiers dont les noms gurent
dans les argument suivants.
Prenons un exemple :
$ chmod o-r toto
Cette commande va supprimer le droit en lecture pour les autres sur le chier
toto.
Le premier argument de chmod contient en eet trois parties :
1. la premire partie indique qui appliquer la modication des droits daccs :
u (pour user) sil sagit du propritaire du chier,
g (pour group) sil sagit du groupe du chier,
o (pour others) sil sagit des autres,
on peut regrouper ces caractres pour appliquer la modication plusieurs
catgories : ug, uo, go, voire ugo quon peut galement exprimer par a (pour
all) ;
2. la deuxime partie indique si lon veut ajouter (+) ou supprimer (-) des droits
daccs ;
3. la troisime partie indique lesquels, sous la forme habituelle (r, w et x).
Donc la commande suivante ajoute les droits en criture pour le groupe et les
autres sur le chier toto :
$ chmod go+w toto
Il est galement possible dutiliser des mtacaractres :
$ chmod go+r toto
*
Nanmoins, lutilisation de chmod pour modier les droits daccs de plusieurs
chiers de cette faon se heurte un problme.
Si lon a des chiers ayant des droits daccs htroclites, comment les remettre
tous identiques, par exemple rw-r--r-- ? On peut toujours faire :
$ chmod a-rwx toto
*
$ chmod a+r toto
*
$ chmod u+w toto
*
132
8.5. Les droits daccs
pour supprimer les droits daccs existants, rajouter les droits en lecture pour tous
puis le droit en criture pour le propritaire mais faire la chose en trois commandes
nest pas lgant.
Dans ce cas, utiliser la reprsentation numrique des droits daccs appliquer
aux chiers est la bonne faon de faire :
$ chmod 644 toto
*
Ici, les droits daccs sont xs 644 (rw-r--r--) indpendamment des droits
daccs initiaux des chiers.
Bien entendu, cela fonctionne galement avec un seul chier :
$ chmod 644 toto
La commande chmod, utilise avec loption -R, permet galement de modier les
droits daccs rcursivement sur le contenu des rpertoires rencontrs.
Par exemple, la commande suivante ne modie que les droits daccs du rpertoire
rep lui-mme sans toucher aux droits daccs des chiers et sous-rpertoires quil
contient :
$ chmod g+w rep
Si lon ajoute loption -R, les droits daccs des chiers et des sous-rpertoires
contenus dans rep (et rcursivement lintrieur des sous-rpertoires) seront gale-
ment modis :
$ chmod -R g+w rep
http://fr.wikipedia.org/wiki/Chmod
8.5.4 La commande umask
La commande chmod permet de modier les droits daccs de chiers qui existent
dj. Si lon souhaite faire en sorte que les chiers que lon va crer aient des droits
daccs particuliers, sans avoir les modier aprs leur cration, il faut utiliser la
commande umask.
Utilise sans argument, elle ache la valeur (en octal) du masque de cration des
chiers (le premier 0 indique simplement que la valeur qui suit est en octal) :
$ umask
0022
133
Chapitre 8. Gestion, organisation et traitement des chiers
022 est une valeur classique de masque de cration des chiers sous UNIX.
Celui-ci est utilis pour modier les droits daccs par dfaut des chiers ordi-
naires, qui sont 666, et des rpertoires, qui sont 777. Pour comprendre son fonction-
nement, il faut raisonner en binaire :
pour chaque bit valant 1 dans le masque de cration, le bit de mme position
dans les droits daccs par dfaut est x 0, quelle que soit sa valeur ;
pour chaque bit valant 0 dans le masque de cration, le bit de mme position
dans les droits daccs par dfaut reste inchang.
Mathmatiquement parlant, lopration exacte qui permet de calculer les droits
daccs de cration dun chier ordinaire ou dun rpertoire est un et logique entre les
droits daccs par dfaut (666 ou 777) et le complment un du masque de cration :
droits daccs = droits daccs par dfaut masque de cration
En pratique, cela revient retirer des droits daccs par dfaut ceux qui sont
prsents dans le masque de cration, ce qui correspond approximativement eectuer
en octal une soustraction chire chire, sans retenue.
Les tableaux 8.5 et 8.6 illustrent ceci avec le masque de cration des chiers 022.
propritaire groupe autres
r w x r w x r w x
chier (666) 1 1 0 1 1 0 1 1 0
masque (022) 0 0 0 0 1 0 0 1 0
rsultat (644) 1 1 0 1 0 0 1 0 0
Table 8.5 Masque de cration des chiers (chier ordinaire).
propritaire groupe autres
r w x r w x r w x
rpertoire (777) 1 1 1 1 1 1 1 1 1
masque (022) 0 0 0 0 1 0 0 1 0
rsultat (755) 1 1 1 1 0 1 1 0 1
Table 8.6 Masque de cration des chiers (rpertoire).
Les chiers ordinaires sont crs par dfaut avec 666 comme droits daccs,
auxquels on retire la valeur du masque de cration 022, ce qui donne 644. Cest pour
cela que les chiers ordinaires sont crs avec rw-r--r-- comme droits daccs.
De mme, les rpertoires sont crs par dfaut avec 777 comme droits daccs,
auxquels on retire la valeur du masque de cration 022, ce qui donne 755. Cest pour
cela que les rpertoires sont crs avec rwxr-xr-x comme droits daccs.
134
8.6. Les noms des chiers
Si lon souhaite que ses chiers soient crs avec des droits daccs plus restrictifs,
la meilleure mthode est de commencer avec les rpertoires.
Par exemple, pour que les rpertoires soient crs avec rwx------, cest--dire 700,
comme droits daccs, il faut un masque de cration valant 077 (puisquil faut retirer
077 777 pour obtenir 700).
On fait cela en donnant un argument umask :
$ umask 077
En ce qui concerne les chiers ordinaires, avec ce masque de cration, ceux-ci
seront crs avec les droits daccs 600 (666, dont on retire 077, ce qui revient faire
une soustraction chire chire, sans retenue), cest--dire rw-------.
Cest pour cela quil faut calculer le masque de cration partir des droits daccs
que lon souhaite pour les rpertoires. Si lon tait parti des chiers ordinaires, on
aurait calcul un masque de cration valant 066 (puisquil faut retirer 066 666 pour
obtenir 600). Mais, dans ce cas, les rpertoires auraient t crs avec 711 comme
droits daccs, ce qui nest pas la valeur souhaite.
Le masque de cration des chiers est indpendant dans chaque interprteur
de commandes. Donc si plusieurs fentres dmulateur de terminal sont ouvertes,
toute modication du masque de cration dans linterprteur de commandes de lune
delles na pas dincidence sur les autres.
http://fr.wikipedia.org/wiki/Umask
8.6 Les noms des chiers
Nous avons jusqu maintenant utilis des noms de chiers sans dnir exactement
quelles rgles ils doivent respecter.
En thorie, un nom de chier sous UNIX peut contenir nimporte quoi sauf /,
puisque ce caractre sert sparer les composants dun chemin daccs, et loctet nul
(code ASCII 0), qui sert sous UNIX marquer la n dune chane de caractres.
Les autres caractres sont utilisables. Nanmoins, nous avons vu que certains
ont une signication particulire pour linterprteur de commandes. Et il en existe
dautres, qui nont pas encore t tudis. Dailleurs, quasiment tous les signes de
ponctuation ont une signication particulire pour linterprteur de commandes. Il
convient donc de les viter, sauf le point (.), le tiret (-) et le tiret bas (
_
).
Si lon tient absolument utiliser des caractres ayant une signication particu-
lire pour linterprteur de commandes, il est ncessaire de prendre des prcautions.
Supposons que vous avez un chier malhabilement appel
*
et que vous voulez le
supprimer. Bien entendu, on peut faire :
$ rm
*
135
Chapitre 8. Gestion, organisation et traitement des chiers
Ceci eacera le chier
*
et un certain nombre dautres, comme nous lavons vu
au paragraphe 8.4.3 page 125.
Pour neacer que le chier
*
, la bonne faon de faire est dindiquer linter-
prteur de commandes de ne pas tenir compte de la signication particulire de ce
caractre en le faisant prcder dune barre oblique inverse \ :
$ rm \
*
Si un nom de chier contient plusieurs caractres spciaux, il faut les faire prcder
chacun dun \. Par exemple, pour eacer le chier toto[1] :
$ rm toto\[1\]
On peut galement entourer lensemble du nom de chier dune paire de guille-
mets ou dapostrophes (les apostrophes permettent dinhiber plus de caractres
spciaux que les guillemets, voir le paragraphe 12.5 page 235) :
$ rm "toto[1]"
$ rm toto[1]
Il en va de mme avec les espaces :
$ rm nom\ de\ fichier\ avec\ espaces
$ rm "nom de fichier avec espaces"
$ rm nom de fichier avec espaces
Il est prfrable de ne pas utiliser de caractres accentus dans les noms de chiers
et de sen tenir aux seuls caractres du code ASCII. En eet, si lon souhaite trans-
mettre des chiers dun ordinateur un autre, lASCII est la seule partie commune
de tous les systmes de codages et un nom de chier ne contenant que des caractres
ASCII sera toujours bien transmis.
De manire plus gnrale, il faut concevoir ses noms de chiers de faon les
rendre ecacement manipulables au moyen des mtacaractres, cest--dire prvoir
les noms des chiers pour pouvoir dsigner au moyen des mtacaractres ceux qui
auront tre traits ensemble.
Pour cela, on peut par exemple privilgier le format de date ISO 8601, qui indique
dabord lanne, puis le mois, puis le jour (cest--dire quon indique les lments
dune date du plus signicatif au moins signicatif). Ainsi, 1789-07-14 dsigne le 14
juillet 1789.
On peut par exemple traiter tous ses chiers de 2009 ainsi, quelle que soit leur
extension :
136
8.6. Les noms des chiers
$ commande fichier-2009-
*
Pour ne traiter que les chiers texte :
$ commande fichier-2009-
*
.txt
Le format de date habituellement utilis en France, outre son ambigut avec
dautres formats nationaux et le fait quon ne puisse pas utiliser de / dans un nom
de chier, oblige gnralement utiliser des expressions plus compliques. Ainsi le
premier exemple devient :
$ commande fichier-
*
-2009.
*
Enn, il est prfrable de ne pas utiliser de tiret comme premier caractre dun
nom de chier. Supposons que vous avez un chier -i et que vous souhaitez leacer :
$ rm -i
usage: rm [-f|-i] [-dPRrvW] file ...
Ici, rm considre -i comme une option, puisquil sagit dun mot commenant
par un tiret, et pas comme un argument. Puisquil lui manque son argument, il se
plaint en achant la syntaxe permettant de lutiliser.
Utiliser les guillemets, les apostrophes ou \ ne fonctionnera pas dans la mesure
ou le tiret nest pas un caractre spcial pour linterprteur de commandes.
La bonne faon de faire est dutiliser un chemin daccs ne commenant pas par
un tiret. Le plus simple est :
$ rm ./-i
Et le tour est jou !
http://fr.wikipedia.org/wiki/ISO
_
8601
http://www.cl.cam.ac.uk/~mgk25/iso-time.html
137
Chapitre 8. Gestion, organisation et traitement des chiers
8.7 Gestion de lespace de stockage, compression et archivage
De plus en plus de donnes sont stockes sous forme de chiers informatiques.
Selon leur nature et leur intrt, ceux-ci doivent tre conservs sur des priodes va-
riables, allant de quelques jours plusieurs dizaines dannes. Mme si les capacits de
stockage ne cessent daugmenter, elles ont nanmoins un cot. Il est donc important
de connatre et doptimiser le volume occup par ses chiers.
Lorsquils ne sont plus frquemment utiliss mais quon souhaite les conserver,
les chiers ou ensembles de chiers peuvent tre comprims (il sagit de rduire
la taille de chaque chier an quil occupe moins de place tout en prservant son
contenu) ou archivs (il sagit de rassembler un ensemble de chiers dans un unique
chier, quon appelle une archive, et qui est lui-mme souvent comprim).
8.7.1 Gestion de lespace de stockage
Plus on travaille sur un systme informatique, plus on accumule de chiers. Com-
ment retrouver certains chiers dont on a oubli lemplacement exact ? Comment
savoir quel est lespace total occup par lensemble de ses chiers ? Comment savoir
quel est lespace occup par chaque rpertoire ? Comment connatre loccupation des
disques locaux et des serveurs de chiers ?
8.7.1.1 Retrouver des chiers : la commande find
La commande find permet de retrouver, selon certains critres, des chiers dont
on a oubli lemplacement exact.
Elle sutilise suivie dun ou de plusieurs noms de rpertoires dans lesquels eec-
tuer les recherches et doptions indiquant les critres de recherche. Elle parcourt
alors rcursivement ces rpertoires et ache les noms des chiers sy trouvant et
correspondant aux critres de recherche indiqus.
Pour les exemples qui suivent, nous supposerons tre dans un rpertoire courant
ayant la structure reprsente dans la gure 8.11 page ci-contre. rep1, rep2 et rep3
sont des rpertoires, fich1, fich2 et fich3 sont des chiers ordinaires.
La faon la plus simple dutiliser la commande find est de ne pas indiquer de
critre de recherche. Dans ce cas, elle se contente de parcourir rcursivement les
rpertoires indiqus en arguments en achant rpertoires et chiers rencontrs :
$ find rep1 rep2/rep3
rep1
rep1/fich1
rep2/rep3
rep2/rep3/fich3
138
8.7. Gestion de lespace de stockage, compression et archivage
.
rep1
fich1
rep2
fich2 rep3
fich3
Figure 8.11 Arborescence utilise pour illustrer la commande find.
Lorsquelle parcourt un rpertoire, la commande find ache rpertoires et
chiers rencontrs dans un ordre qui semble alatoire :
1 $ find .
2 .
3 ./rep2
4 ./rep2/rep3
5 ./rep2/rep3/fich3
6 ./rep2/fich2
7 ./rep1
8 ./rep1/fich1
Comme on peut le voir, lachage nest pas tri comme lest, par exemple, celui
de la commande ls. En eet, dans le rpertoire courant, le rpertoire rep2 (lignes 3
6) est parcouru avant le rpertoire rep1 (lignes 7 et 8) et, dans le rpertoire rep2, le
chier fich2 (ligne 6) apparat aprs le rpertoire rep3 (lignes 4 et 5). En ralit, cela
na rien dalatoire. Chaque rpertoire est simplement parcouru dans lordre selon
lequel son contenu est stock dans le systme de chiers.
Par ailleurs, lorsquun sous-rpertoire est rencontr, il est parcouru en totalit
avant de poursuivre le parcours du rpertoire qui le contient. On peut le voir de
la ligne 3 la ligne 6 de lexemple prcdent. On entre dans le rpertoire rep2 la
ligne 3, o lon trouve un rpertoire rep3 la ligne 4. Plutt que de poursuivre le
parcours du rpertoire rep2, on explore rep3 la ligne 5 puis on reprend le parcours
du rpertoire rep2 la ligne 6. Cest ce quon appelle un parcours en profondeur
dabord. Lautre mthode de parcours dun arbre est le parcours en largeur dabord,
dans lequel chaque rpertoire est explor en totalit avant de descendre dans ses
sous-rpertoires.
139
Chapitre 8. Gestion, organisation et traitement des chiers
Les critres de recherche sont indiqus sous la forme doptions qui doivent tre
places aprs les noms des rpertoires dans lesquels eectuer les recherches.
Loption -name de la commande find permet dindiquer tout ou partie du nom
du chier recherch. Ici, on recherche, partir du rpertoire courant, les chiers (il
peut y en avoir plusieurs, dans des rpertoires dirents) qui sappellent exactement
fich1 :
$ find . -name fich1
./rep1/fich1
Il est possible dutiliser des mtacaractres (voir le paragraphe 8.4 page 122) en
prenant la prcaution de les inhiber (voir le paragraphe 8.6 page 135) an quils
ne soient pas pris en compte par linterprteur de commandes mais soient passs
tels quels la commande find. Ainsi, la commande suivante recherche, partir du
rpertoire courant, les chiers dont le nom commence par fi :
$ find . -name fi\
*
./rep2/rep3/fich3
./rep2/fich2
./rep1/fich1
Loption -mtime de la commande find, suivie dun nombre n, permet de trouver
les chiers ayant t modis depuis moins de n jours :
$ find . -mtime 1
./rep2/fich2
Il existe de nombreux autres critres de recherche. Le lecteur curieux pourra se
reporter au manuel de la commande find pour approfondir ses connaissances.
Enn, il convient de terminer par une mise en garde. Il arrive de voir des exemples
dutilisation de la commande find eectuant leur recherche partir du rpertoire
racine / et tout administrateur systme a dj t confront des utilisateurs faisant
de mme, la recherche dun de leurs chiers :
$ find / -name toto
Il faut tre conscient quune telle recherche implique de parcourir lensemble du
systme de chiers, qui peut atteindre un volume consquent si lordinateur utilis
est raccord des serveurs de chiers de grande capacit ce qui est frquent sur
des ordinateurs autres que des postes purement personnels tels que des serveurs
de calcul. Et, plus le systme de chiers parcourir est volumineux, plus cette
140
8.7. Gestion de lespace de stockage, compression et archivage
recherche durera longtemps. Par ailleurs, une telle recherche utilise des ressources
non ngligeables au niveau du microprocesseur. Il est de toute faon gnralement
inutile deectuer une recherche partir du rpertoire racine, tant donn que les
chiers des utilisateurs ne peuvent se trouver que dans leurs rpertoires personnels
respectifs et, ventuellement, dans certains rpertoires partags, dont les utilisateurs
concerns ont ncessairement connaissance puisquils y ont sciemment plac des
chiers. Il est donc indispensable, lorsquon cherche un chier, de se limiter aux seuls
rpertoires o il peut se trouver, an de ne pas gaspiller les ressources informatiques
mises disposition.
http://fr.wikipedia.org/wiki/Find
8.7.1.2 La commande quota
Sur certains systmes informatiques, les utilisateurs se voient imposer une limita-
tion de lespace de stockage allou leurs chiers. Une telle limitation sappelle un
quota.
Il existe deux types de quotas :
un quota sur le volume occup par les chiers ;
un quota sur le nombre de chiers.
Les quotas ont pour but dviter quun utilisateur ne remplisse lui seul la partie
restante dun espace de stockage mutualis, au dtriment des autres utilisateurs. cet
eet, il convient que ladministrateur du systme sassure que la somme des quotas
des utilisateurs est infrieure la taille de lespace de stockage mutualis.
lENSTA ParisTech, des quotas sont imposs aux lves, qui sont limits
2Gio en volume et 100000 chiers.
La commande quota permet dacher ses quotas :
1 $ quota
2 Disk quotas for user babafou (uid 1664):
3 Filesystem blocks quota limit grace files quota limit grace
4 se2.ensta.fr:/home
5 60296 1843200 2048000 1029 90000 100000
On y retrouve un habituel achage en colonnes, dont la ligne 3 indique la
signication de chaque colonne des lignes suivantes.
Les lignes 4 et 5 de lexemple constituent en fait la mme ligne logique, qui a t
scinde en deux en raison de la largeur de la premire colonne.
Chaque ligne partir de la ligne 4 indique les quotas de lutilisateur sur les disques
locaux et sur les serveurs de chiers sur lesquels il dispose dun espace de stockage.
Dans lexemple, lutilisateur ne dispose que dun seul espace de stockage.
141
Chapitre 8. Gestion, organisation et traitement des chiers
La colonne Filesystem indique lespace de stockage concern. Les disques locaux
sont indiqus sous la forme dun chemin daccs absolu commenant par /dev (il
sagit du chier spcial permettant daccder au disque) et les serveurs de chiers
sont indiqus par leur nom suivi de deux-points puis du chemin daccs absolu du
rpertoire contenant les espaces de travail des utilisateurs (cest le cas dans notre
exemple).
Les quatre colonnes suivantes concernent le quota sur le volume occup par les
chiers.
La colonne blocks indique le volume total occup, en kibioctets.
La premire colonne quota indique le quota sur le volume allou lutilisateur,
en kibioctets.
La premire colonne limit indique la limite sur le volume alloue lutilisateur,
en kibioctets.
La dirence entre quota et limite est la suivante. Lutilisateur ne peut en aucun
cas dpasser la limite. Ce contrle est eectu chaque criture de chier par le
systme dexploitation. En revanche, il peut dpasser le quota (mais en restant sous
la limite) condition quil repasse dessous en moins dune semaine. Faute de le faire,
lutilisateur ne pourra alors ni modier ses chiers existants ni crer de nouveaux
chiers et devra imprativement repasser sous le quota. An dviter ce dsagrment,
il convient donc de vrier rgulirement ltat de ses quotas et de ne pas tarder
supprimer les chiers inutiles ou archiver (en comprimant larchive) ceux qui nont
plus dutilit immdiate.
La premire colonne grace indique, dans le cas o lutilisateur a dpass le quota
sur le volume, le temps quil lui reste pour repasser dessous.
Les quatre colonnes suivantes concernent le quota sur le nombre de chiers.
La colonne files indique le nombre de chiers.
La seconde colonne quota indique le quota sur le nombre de chiers allou
lutilisateur.
La seconde colonne limit indique la limite sur le nombre de chiers alloue
lutilisateur.
La signication du quota et de la limite sur le nombre de chiers est la mme que
pour le quota et la limite sur le volume.
La seconde colonne grace indique, dans le cas o lutilisateur a dpass le quota
en nombre de chiers, le temps quil lui reste pour repasser dessous.
http://en.wikipedia.org/wiki/Disk
_
quota
8.7.1.3 La commande du
La commande du (pour disk usage) permet dacher le volume occup par
lensemble du contenu dun rpertoire et de chacun de ses sous-rpertoires.
Selon lUNIX utilis, les rsultats sont achs soit en demi-kibioctets soit en
kibioctets. An dviter de se poser des questions et davoir des rsultats plus parlants,
142
8.7. Gestion de lespace de stockage, compression et archivage
il est prfrable dutiliser la commande du avec loption -k, qui permet lachage des
rsultats en kibioctets.
Pour les exemples qui suivent, nous supposerons tre dans un rpertoire courant
ayant la structure reprsente dans la gure 8.12. Les rpertoires indiqus contiennent
quelques chiers.
.
rep1 rep2 rep3
rep4 rep5
Figure 8.12 Arborescence utilise pour illustrer la commande du.
Utilise sans argument, la commande du ache le volume occup par chacun des
sous-rpertoires du rpertoire courant puis par le rpertoire courant lui-mme :
1 $ du -k
2 546 ./rep1
3 2866 ./rep2
4 338 ./rep3/rep4
5 34 ./rep3/rep5
6 390 ./rep3
7 7294 .
Pour un rpertoire donn, le volume indiqu en premire colonne est le volume
total occup par lensemble du contenu du rpertoire, chiers et sous-rpertoires
compris.
Ainsi, dans lexemple prcdent, les lignes 2 5 indiquent les volumes occups
par les chiers contenus respectivement dans les rpertoires rep1, rep2, rep3/rep4
et rep3/rep5, qui nont aucun sous-rpertoire. La ligne 6 indique le volume total
occup par le rpertoire rep3, savoir le volume occup par les chiers quil contient
directement ainsi que ceux des rpertoires rep3/rep4 et rep3/rep5. la ligne 7 indique
le volume total occup par le rpertoire courant, ses chiers, tous ses sous-rpertoires
et leurs chiers.
Utilise avec un ou plusieurs noms de rpertoires en arguments, la commande
du ache, pour chaque rpertoire en argument, le volume occup par chacun de ses
sous-rpertoires puis par le rpertoire lui-mme :
143
Chapitre 8. Gestion, organisation et traitement des chiers
$ du -k rep1 rep3
546 rep1
338 rep3/rep4
34 rep3/rep5
390 rep3
Si le volume occup par les sous-rpertoire na pas dintrt et quon ne souhaite
acher que le volume total, on peut utiliser la commande du avec loption -s (pour
summarize) :
$ du -ks
7294 .
$ du -ks rep1 rep3
546 rep1
390 rep3
La commande du ne permet pas delle-mme le tri de son achage. Il serait
pourtant utile que les rpertoires puissent tre tris selon le volume total occup par
chacun deux. Cela est possible en raccordant la commande du au moyen dun tuyau
la commande sort (voir le paragraphe 9.5.5 page 196).
http://fr.wikipedia.org/wiki/Du
_
(Unix)
8.7.1.4 La commande df
La commande df (pour disk free) permet dacher loccupation des disques
locaux et des serveurs de chiers constituant le systme de chiers.
Selon lUNIX utilis, les rsultats sont achs soit en demi-kibioctets soit en
kibioctets. An dviter de se poser des questions et davoir des rsultats plus parlants,
il est prfrable dutiliser la commande df avec loption -k, qui permet lachage des
rsultats en kibioctets :
$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 73590752 44378456 25413728 64% /
/dev/sda1 101086 20293 75574 22% /boot
tmpfs 516664 0 516664 0% /dev/shm
se2.ensta.fr:/home 1117077480 125568680 933849112 12% /auto/se2
se4.ensta.fr:/opt 1805969176 392989256 1321241944 23% /auto/se4
144
8.7. Gestion de lespace de stockage, compression et archivage
Malheureusement, les capacits actuelles des serveurs de chiers, qui se comptent
au minimum en tbioctets, font que les nombres sont illisibles tellement ils sont
importants et que lachage en colonnes sen retrouve dcal. De nombreux UNIX
fournissent donc une commande df avec une option -h (pour human-readable), qui
permet dacher des rsultats plus clairs :
1 $ df -h
2 Filesystem Size Used Avail Use% Mounted on
3 /dev/sda3 71G 43G 25G 64% /
4 /dev/sda1 99M 20M 74M 22% /boot
5 tmpfs 505M 0 505M 0% /dev/shm
6 se2.ensta.fr:/home 1.1T 120G 891G 12% /auto/se2
7 se4.ensta.fr:/opt 1.7T 375G 1.3T 23% /auto/se4
Les tailles indiques sont suivies dun M sil sagit de mbioctets, dun G sil sagit
de gibioctets et dun T sil sagit de tbioctets.
On retrouve un habituel achage en colonnes, dont la ligne 2 indique la signi-
cation de chaque colonne des lignes suivantes.
Chaque ligne partir de la ligne 3 indique loccupation dun disque local ou dun
serveur de chiers constituant le systme de chiers.
La colonne Filesystem indique le disque local ou le serveur de chiers concern.
Les disques locaux sont indiqus sous la forme dun chemin daccs absolu commen-
ant par /dev (il sagit du chier spcial permettant daccder au disque), ce qui est le
cas des lignes 3 et 4 de lexemple prcdent, et les serveurs de chiers sont indiqus
par leur nom suivi de deux-points puis du chemin daccs absolu du rpertoire quils
partagent, ce qui est le cas des lignes 6 et 7 de lexemple prcdent. La ligne 5, quant
elle, correspond un espace de stockage situ en mmoire vive, cest une particularit
de certains UNIX (Linux dans notre exemple).
La colonne Size indique la taille du disque local ou du serveur de chiers.
La colonne Used indique lespace occup sur le disque local ou le serveur de
chiers.
La colonne Avail indique lespace libre sur le disque local ou le serveur de chiers.
La colonne Use% indique le taux doccupation du disque local ou du serveur de
chiers.
La colonne Mounted on indique o se situe le disque local ou le serveur de chiers
dans larborescence du systme de chiers (cest ce quon appelle le point de montage).
Plutt utilise par ladministrateur du systme, la commande df peut nanmoins
se rvler utile pour un utilisateur. Par exemple, si lon dispose dun espace de stockage
sans quotas et quon doit gnrer ou transfrer un gros volume de donnes, il est
prfrable de vrier que lespace libre est susant avant de procder lopration.
145
Chapitre 8. Gestion, organisation et traitement des chiers
http://fr.wikipedia.org/wiki/Df
_
(Unix)
8.7.2 Compression
La compression consiste transformer, au moyen dun algorithme, une suite de
donnes (par exemple le contenu dun chier) en une autre suite de donnes plus
courte mais contenant les mmes informations. La dcompression est lopration
inverse.
Sans rentrer dans les dtails, il faut savoir quil existe deux types de compressions :
la compression dite sans perte lorsque la dcompression restitue exactement les
donnes dorigine ;
la compression dite avec pertes lorsque la dcompression aboutit des donnes
lgrement direntes des donnes dorigine.
La compression avec pertes ne peut sappliquer qu certains types de donnes
bien particuliers. Elle est par exemple utilise par le format dimage JPEG. Trs
grossirement, dans une image JPEG, on prote du fait que lil humain discerne
trs mal les faibles dirences de teinte pour rduire le volume de stockage des zones
de teinte homogne. La compression avec pertes est galement utilise par le format
audio MP3 dans lequel la prcision du codage de certains sons peu audibles est
rduite.
En revanche, nous nutiliserons pour notre part que de la compression sans perte
an de pouvoir restaurer les donnes dorigine sans aucune altration.
Trs schmatiquement, la compression sans perte consiste dcouper les donnes
comprimer en blocs. Chaque bloc est analys de faon identier les redondances
quil contient. Ces redondances sont alors stockes une seule fois, en indiquant quels
endroits du bloc elles se trouvent. Les chiers contenant de nombreuses redondances
(typiquement, les chiers texte) seront donc plus comprims que des chiers en
contenant moins.
Les chiers contenant peu de redondances nont donc pas intrt tre comprims
de la sorte. Cest en particulier le cas pour les chiers dj comprims dune autre
faon, comme les images JPEG ou les chiers audio MP3.
Nous allons maintenant tudier plusieurs commandes permettant la compression
et la dcompression de chiers, dans lordre croissant de leur ecacit (qui corres-
pond galement leur ordre chronologique). Chaque commande de compression
sera applique un chier texte tmoin de 100 Kio an de juger de son taux de
compression.
http://fr.wikipedia.org/wiki/Compression
_
de
_
donnes
http://fr.wikipedia.org/wiki/JPEG
http://fr.wikipedia.org/wiki/MPEG-1/2
_
Audio
_
Layer
_
3
146
8.7. Gestion de lespace de stockage, compression et archivage
8.7.2.1 Les commandes compress et uncompress
La plus ancienne des commandes de compression est compress. Cest aussi la
moins ecace. Elle prend un ou plusieurs noms de chiers en arguments. Chacun
de ces chiers sera comprim et remplac par un chier du mme nom auquel
sera rajoute lextension .Z (en majuscule, on reconnat cette extension un chier
comprim avec compress) :
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
$ compress toto.txt
$ ll toto.txt.Z
-rw-r--r-- 1 babafou prof 45513 Dec 8 14:30 toto.txt.Z
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont conservs dans le chier comprim.
Sur le chier tmoin, compress gnre un chier comprim tout de mme plus
de deux fois plus petit.
Pour dcomprimer un ou plusieurs chiers comprims avec compress, on utilise
la commande uncompress :
$ uncompress toto.txt.Z
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont restaurs dans le chier dcomprim.
http://fr.wikipedia.org/wiki/Compress
8.7.2.2 Les commandes gzip et gunzip
La plus rpandue des commandes de compression est gzip. Elle prend un ou
plusieurs noms de chiers en arguments. Chacun de ces chiers sera comprim
et remplac par un chier du mme nom auquel sera rajoute lextension .gz (on
reconnat cette extension un chier comprim avec gzip) :
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
$ gzip toto.txt
$ ll toto.txt.gz
-rw-r--r-- 1 babafou prof 32188 Dec 8 14:30 toto.txt.gz
147
Chapitre 8. Gestion, organisation et traitement des chiers
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont conservs dans le chier comprim.
Sur le chier tmoin, gzip gnre un chier comprim de moins du tiers de sa
taille dorigine.
Il est possible de contrler le niveau de compression de gzip au moyen des
options -1 -9. Loption -1 donne le temps dexcution le plus rapide au prix
dune compression moins ecace. Loption -9 donne la compression la plus ecace
au prix dun temps dexcution plus important. Les autres options permettent
dobtenir les niveaux de compression intermdiaires. Le niveau par dfaut (sans
option) correspond loption -6. Sur notre chier tmoin, avec loption -9, gzip
gnre eectivement un chier plus petit :
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
$ gzip -9 toto.txt
$ ll toto.txt.gz
-rw-r--r-- 1 babafou prof 32143 Dec 8 14:30 toto.txt.gz
Compte tenu des performances des ordinateurs actuels, on peut utiliser systma-
tiquement loption -9.
Pour dcomprimer un ou plusieurs chiers comprims avec gzip, on utilise la
commande gunzip :
$ gunzip toto.txt.gz
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont restaurs dans le chier dcomprim.
http://www.gnu.org/software/gzip/
http://fr.wikipedia.org/wiki/Gzip
8.7.2.3 Les commandes bzip2 et bunzip2
Une autre commande de compression trs rpandue est bzip2. Elle prend un
ou plusieurs noms de chiers en arguments. Chacun de ces chiers sera comprim
et remplac par un chier du mme nom auquel sera rajoute lextension .bz2 (on
reconnat cette extension un chier comprim avec bzip2) :
148
8.7. Gestion de lespace de stockage, compression et archivage
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
$ bzip2 toto.txt
$ ll toto.txt.bz2
-rw-r--r-- 1 babafou prof 29289 Dec 8 14:30 toto.txt.bz2
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont conservs dans le chier comprim.
Sur le chier tmoin, bzip2 gnre un chier comprim un peu plus petit que ce
que donne gzip.
Pour dcomprimer un ou plusieurs chiers comprims avec bzip2, on utilise la
commande bunzip2 :
$ bunzip2 toto.txt.bz2
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont restaurs dans le chier dcomprim.
http://www.bzip.org/
http://fr.wikipedia.org/wiki/Bzip2
8.7.2.4 Les commandes lzma et unlzma
Une autre commande de compression est lzma. Elle prend un ou plusieurs noms
de chiers en arguments. Chacun de ces chiers sera comprim et remplac par un
chier du mme nom auquel sera rajoute lextension .lzma (on reconnat cette
extension un chier comprim avec lzma) :
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
$ lzma toto.txt
$ ll toto.txt.lzma
-rw-r--r-- 1 babafou prof 29251 Dec 8 14:30 toto.txt.lzma
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont conservs dans le chier comprim.
Sur le chier tmoin, lzma gnre un chier comprim de taille quivalente ce
que donne bzip2.
Pour dcomprimer un ou plusieurs chiers comprims avec lzma, on utilise la
commande unlzma :
149
Chapitre 8. Gestion, organisation et traitement des chiers
$ unlzma toto.txt.lzma
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont restaurs dans le chier dcomprim.
http://tukaani.org/lzma/
http://fr.wikipedia.org/wiki/LZMA
8.7.2.5 Les commandes xz et unxz
La plus rcente des commandes de compression, qui utilise une volution de
lalgorithme de lzma, est xz. Elle prend un ou plusieurs noms de chiers en arguments.
Chacun de ces chiers sera comprim et remplac par un chier du mme nom auquel
sera rajoute lextension .xz (on reconnat cette extension un chier comprim
avec xz) :
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
$ xz toto.txt
$ ll toto.txt.xz
-rw-r--r-- 1 babafou prof 29296 Dec 8 14:30 toto.txt.xz
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont conservs dans le chier comprim.
Sur le chier tmoin, xz gnre un chier comprim de taille quivalente ce que
donnent lzma et bzip2.
Pour dcomprimer un ou plusieurs chiers comprims avec xz, on utilise la
commande unxz :
$ unxz toto.txt.xz
$ ll toto.txt
-rw-r--r-- 1 babafou prof 102400 Dec 8 14:30 toto.txt
Les droits daccs ainsi que la date de dernire modication du chier dorigine
sont restaurs dans le chier dcomprim.
http://tukaani.org/xz/
http://fr.wikipedia.org/wiki/XZ
_
(format
_
de
_
fichier)
150
8.7. Gestion de lespace de stockage, compression et archivage
8.7.3 Archivage
Larchivage consiste rassembler une arborescence de rpertoires et de chiers
dans un unique chier, quon appelle une archive, et qui contient toutes les informa-
tions ncessaires la recration de larborescence dorigine.
Lorsquun ensemble de chiers na plus dutilit immdiate, on peut gnrer
une archive permettant de recrer ces chiers le jour venu. An doccuper le moins
de volume de stockage possible, cette archive est souvent comprime, sauf si elle
contient un grand nombre de chiers dj comprims, comme des images JPEG,
des chiers audio MP3 ou des chiers comprims avec les commandes qui viennent
dtre tudies.
Une archive (comprime au besoin) peut ainsi facilement tre stocke sur un
support externe (cl USB, bande magntique, etc.) ou transfre grce au rseau
informatique.
http://en.wikipedia.org/wiki/List
_
of
_
archive
_
formats
8.7.3.1 La commande tar
Sous UNIX, la commande de prdilection pour manipuler des archives est la
commande tar (pour tape archiver). Comme son nom lindique, elle trouve son
origine dans larchivage sur bande magntique mais elle peut tout aussi bien grer
des archives sous forme de chiers.
La commande tar sutilise obligatoirement avec au moins une option. Dans ces
conditions, lutilisation du tiret pour introduire les options nest pas ncessaire.
http://fr.wikipedia.org/wiki/Tar
_
(informatique)
8.7.3.1.1 Crer une archive
Pour crer une archive dun rpertoire nomm rep et contenant trois chiers,
toto1, toto2 et toto3, on utilise :
$ tar cvf rep.tar rep
rep/
rep/toto1
rep/toto2
rep/toto3
Cette commande cre une archive rep.tar du rpertoire rep. Il est dusage de
nommer les archives du mme nom que le rpertoire archiver, suivi de lextension
.tar.
La signication des options de la commande tar est la suivante :
loption -c (pour create) permet de crer une archive ;
151
Chapitre 8. Gestion, organisation et traitement des chiers
loption -v (pour verbose) permet dacher les chemins daccs relatifs des
chiers archivs ;
loption -f (pour le) permet de crer une archive dans le chier dont le nom
suit plutt que sur bande magntique.
Loption -v provoque lachage des noms des rpertoires et chiers au fur et
mesure quils sont intgrs dans larchive. Cette option nest pas indispensable mais
elle permet de visualiser lavancement de la commande. Larchivage de rpertoires
volumineux peut en eet tre long et il est toujours utile de voir que les choses
progressent.
Lordre dans lequel on indique les options de la commande tar est sans impor-
tance.
Dans lexemple prcdent, nous avons archiv un unique rpertoire et son
contenu. La commande tar permet darchiver des chiers seuls, des rpertoires
et toute combinaison des deux :
$ tar cvf archive.tar toto1 toto2 rep1 rep2
[...]
Nanmoins, il est prfrable de sen tenir larchivage dun unique rpertoire
(quitte regrouper dedans ce quon souhaite archiver). En eet, ceci permet de
nommer larchive selon le nom du rpertoire archiv en lui rajoutant lextension
.tar, comme nous venons de le voir. Ceci permet galement dassurer la personne
qui va extraire cette archive que cette opration va crer un unique rpertoire dont
on connat dj le nom (puisquil sagit du nom de larchive, sans lextension .tar). Il
est en eet particulirement dsagrable dextraire une archive contenant des dizaines
de chiers sans quils soient contenus dans un rpertoire, tant et si bien quils vont
polluer le rpertoire courant et, dans le pire des cas, craser des chiers prexistants
ayant des noms identiques ceux de certains chiers contenus dans larchive.
La commande tar laisse les rpertoires et chiers archivs en place. Une fois
larchive cre, on peut donc supprimer le rpertoire ayant t archiv :
$ rm -r rep
8.7.3.1.2 Extraire une archive
Pour extraire une archive, cest--dire recrer larborescence dorigine, on utilise :
$ tar xvf rep.tar
rep/
rep/toto1
rep/toto2
rep/toto3
152
8.7. Gestion de lespace de stockage, compression et archivage
Loption -x (pour extract) de la commande tar permet dextraire larchive. Les
autres options ont la mme signication que pour la cration dune archive.
Si larchive na plus dutilit, on peut alors la supprimer.
8.7.3.1.3 Acher le contenu dune archive
Il peut tre utile dacher le contenu dune archive sans pour autant lextraire.
Pour cela, on utilise loption -t (pour list) de la commande tar :
$ tar tf rep.tar
rep/
rep/toto1
rep/toto2
rep/toto3
8.7.3.1.4 Compression et dcompression dune archive
An doccuper le moins de place possible, il est intressant de comprimer une
archive nouvellement cre :
$ tar cvf rep.tar rep
[...]
$ bzip2 rep.tar
Lutilisation de la commande bzip2 va donc gnrer un chier rep.tar.bz2.
Pour dcomprimer le chier et extraire larchive, on procde dans lordre inverse :
$ bunzip2 rep.tar.bz2
$ tar xvf rep.tar
[...]
On peut bien entendu utiliser les commandes de compression et de dcompres-
sion de son choix.
Nanmoins, comme lutilisation de la compression en conjonction avec larchi-
vage est quasiment systmatique, les versions modernes de la commande tar savent
la grer directement, au moins pour les commandes compress, gzip, bzip2, xz et les
commandes de dcompression associes. Pour les autres commandes, il faut procder
en deux tapes comme indiqu prcdemment.
Ainsi les options suivantes de la commande tar permettent dutiliser automati-
quement une commande de compression (si elles sont utilises avec loption -c) ou
de dcompression (si elles sont utilises avec les options -x ou -t) :
loption -Z (majuscule) pour compress et uncompress ;
153
Chapitre 8. Gestion, organisation et traitement des chiers
loption -z (minuscule) pour gzip et gunzip ;
loption -j (minuscule) pour bzip2 et bunzip2 ;
loption -J (majuscule) pour xz et unxz.
Par exemple :
$ tar cvjf rep.tar.bz2 rep
[...]
$ tar xvjf rep.tar.bz2
[...]
Lors de la cration de larchive, il est ncessaire dindiquer lextension correcte
(.Z pour loption -Z, .gz pour loption -z, .bz2 pour loption -j et .xz pour loption
-J) de larchive comprime.
8.7.4 changes avec dautres systmes dexploitation
Si, sous UNIX, lutilisation de la commande tar pour larchivage, en conjonc-
tion avec une commande de compression, est incontournable, dautres systmes
dexploitation utilisent des logiciels qui leur sont propres.
Ces logiciels ralisent gnralement ensemble les fonctions darchivage et de
compression, ce qui est probablement plus simple pour lutilisateur novice mais
empche de choisir lalgorithme de compression.
8.7.4.1 Les commandes zip et unzip
Le format ZIP est le format natif darchive comprime sous Windows. De ce
fait, il est trs rpandu. Les chiers ZIP se reconnaissent leur extension .zip
(ventuellement en majuscules, Windows ne faisant pas la dirence entre majuscules
et minuscules).
Lalgorithme de compression utilis par le format ZIP est le mme que celui
utilis par la commande gzip. Une archive ZIP aura donc quasiment la mme taille
quune archive cre avec tar puis comprime avec gzip.
La commande zip, utilise avec loption -r permet de crer une archive :
$ zip -r rep.zip rep
adding: rep/ (stored 0%)
adding: rep/toto1 (deflated 72%)
adding: rep/toto2 (deflated 72%)
adding: rep/toto3 (deflated 72%)
La commande unzip permet dextraire une archive :
154
8.7. Gestion de lespace de stockage, compression et archivage
$ unzip rep.zip
Archive: rep.zip
creating: rep/
inflating: rep/toto1
inflating: rep/toto2
inflating: rep/toto3
Loption -l de la commande unzip permet dacher le contenu dune archive
sans lextraire :
$ unzip -l rep.zip
Archive: rep.zip
Length Date Time Name
-------- ---- ---- ----
0 12-10-09 18:39 rep/
420211 12-10-09 18:41 rep/toto1
420211 12-10-09 18:41 rep/toto2
420211 12-10-09 18:41 rep/toto3
-------- -------
1260633 4 files
http://fr.wikipedia.org/wiki/ZIP
_
(format
_
de
_
fichier)
8.7.4.2 La commande unrar
Le format RAR, quoique moins utilis que le format ZIP, est pourtant relative-
ment rpandu sous Windows. Les chiers RAR se reconnaissent leur extension .rar
(ventuellement en majuscules, Windows ne faisant pas la dirence entre majuscules
et minuscules).
La cration darchives au format RAR nest possible quavec des logiciels com-
merciaux sous licence de lauteur du format.
En revanche, lextraction darchives au format RAR est possible sous UNIX au
moyen de la commande unrar.
La commande unrar, utilise avec e (pour extract) comme argument, suivi du
nom du chier darchive, permet dextraire celle-ci :
155
Chapitre 8. Gestion, organisation et traitement des chiers
$ unrar e rep.rar
UNRAR 3.90 beta 4 freeware Copyright (c) 1993-2009 Alexander Roshal
Extracting from rep.rar
Extracting toto1 OK
Extracting toto2 OK
Extracting toto3 OK
All OK
La commande unrar, utilise avec l (pour list) comme argument, suivi du nom
du chier darchive, permet den acher le contenu :
$ unrar l rep.rar
UNRAR 3.90 beta 4 freeware Copyright (c) 1993-2009 Alexander Roshal
Archive rep.rar
Name Size Packed Ratio Date Time Attr CRC Meth Ver
-------------------------------------------------------------------------------
toto1 421361 118036 28% 10-12-09 19:58 .....A. 496B92BD m3g 2.9
toto2 421361 118036 28% 10-12-09 19:58 .....A. 496B92BD m3g 2.9
toto3 421361 118036 28% 10-12-09 19:58 .....A. 496B92BD m3g 2.9
rep 0 0 0% 10-12-09 19:58 .D..... 00000000 m0 2.0
-------------------------------------------------------------------------------
4 1264083 354108 28%
http://fr.wikipedia.org/wiki/RAR
_
(format
_
de
_
fichier)
156
9
Commandes, processus et redirections
L
a fonction premire dun ordinateur nest pas le stockage des chiers,
qui est dailleurs ralis par des priphriques, mais bel et bien lexcution
de logiciels qui, elle, est ralise par le cerveau de lordinateur, cest--dire
le microprocesseur. cet eet, linterprteur de commandes permet de
contrler le lancement, lexcution et larrt des logiciels. Il ore galement des outils
permettant den conserver les rsultats et de faire dialoguer les logiciels entre eux.
9.1 Lhistorique des commandes
Comme nous lavons vu au paragraphe 7.2.6 page 86, il est possible dutiliser les
touches ches pour naviguer dans lhistorique des commandes. Il est galement
possible de lutiliser au travers dun ensemble dexpressions.
http://en.wikipedia.org/wiki/Command
_
history
9.1.1 La commande history
Lhistorique des commandes peut tre ach grce la commande history :
$ history
1 date
2 ls -l toto.txt
3 chmod 644 toto.txt
4 cp tata.txt tutu.txt
5 history
Les commandes sont aches dans lordre chronologique et sont prcdes de
leur numro.
Certains interprteurs de commandes (C shell, TENEX C shell et Bourne-again
shell) indiquent la commande history qui vient dtre excute comme dernire
commande de lhistorique (cest le cas dans lexemple prcdent) alors que dautres
157
Chapitre 9. Commandes, processus et redirections
(Korn shell et Z shell) sarrtent la commande prcdente. La commande history
nexiste pas en Bourne shell.
Lorsque lhistorique est un peu long et quon ne souhaite acher que les dernires
commandes, on en indique le nombre en argument de la commande history :
$ history 3
3 chmod 644 toto.txt
4 cp tata.txt tutu.txt
5 history 3
Lhistorique a une taille nie. Il contient gnralement quelques dizaines ou
quelques centaines de commandes.
http://en.wikipedia.org/wiki/History
_
(Unix)
9.1.2 Au sujet des exemples qui suivent
An de conserver le mme rfrentiel et dviter de rappeler systmatiquement
lhistorique ou de le reconstruire mentalement, les exemples qui suivent seront
supposs tre saisis immdiatement aprs cet historique, cest--dire lendroit o se
trouve le curseur :
$ history
1 date
2 ls -l toto.txt
3 chmod 644 toto.txt
4 cp tata.txt tutu.txt
5 history
$
9.1.3 Excuter nouveau une commande dans son intgralit
Il est possible dexcuter nouveau une commande en saisissant un point dexcla-
mation suivi de son numro dans lhistorique. Ainsi, la commande ls de lexemple
prcdent peut tre excute nouveau en tapant !2 :
$ !2
ls -l toto.txt
-rw-r--r-- 1 babafou prof 554923 Mar 1 11:44 toto.txt
158
9.1. Lhistorique des commandes
Linterprteur de commandes ache la commande quil excute avant de le faire.
On peut obtenir le mme rsultat en faisant suivre le point dexclamation dun
nombre ngatif indiquant la commande excuter. Ici, la commande ls est la qua-
trime commande en remontant dans lhistorique donc on peut taper !-4 :
$ !-4
ls -l toto.txt
-rw-r--r-- 1 babafou prof 554923 Mar 1 11:44 toto.txt
La commande prcdente peut tre excute nouveau en tapant simplement !!,
qui est donc lquivalent de !-1.
On peut galement excuter nouveau la dernire commande commenant par
une chane de caractres en saisissant un point dexclamation suivi de cette chane de
caractres. Ainsi, !da excutera nouveau la dernire commande commenant par
da :
$ !da
date
Mon Mar 1 10:47:01 CET 2010
De mme, on peut excuter nouveau la dernire commande contenant une
chane de caractres en saisissant un point dexclamation suivi dun point dinterro-
gation et de cette chane de caractres. Ainsi, !?tot excutera nouveau la dernire
commande contenant tot (dans son nom, ses options ou ses arguments) :
$ !?tot
ls -l toto.txt
-rw-r--r-- 1 babafou prof 554923 Mar 1 11:44 toto.txt
9.1.4 Utiliser certains mots dune commande prcdente
Plutt que dexcuter nouveau une commande prcdente dans sa totalit, on
peut galement en extraire certains mots en utilisant les expressions que nous venons
dtudier suivies dun suxe introduit par un deux-points.
Ainsi, deux-points suivi dun nombre dsigne le mot correspondant (en commen-
ant par 0).
$ ls -l !4:1
ls -l tata.txt
-rw-r--r-- 1 babafou prof 556643 Mar 2 10:32 tata.txt
159
Chapitre 9. Commandes, processus et redirections
Ici, lexpression!4:1 fait rfrence au deuxime (puisquon commence zro)
mot de la quatrime commande de lhistorique.
On peut galement indiquer un intervalle et utiliser des lments provenant de
direntes commandes de lhistorique :
$ !ls:0-1 !4:1
ls -l tata.txt
-rw-r--r-- 1 babafou prof 556643 Mar 2 10:32 tata.txt
Ici, lexpression!ls:0-1 fait rfrence aux premier et deuxime mots de la der-
nire commande commenant par ls.
Le caractre $ peut tre utilis dans un intervalle pour dsigner le dernier mot ou
tre utilis seul :
$ rm !ls:$
rm toto.txt
Pour extraire un ou plusieurs mots dune commande contenant une chane de
caractres, il faut ajouter un point dinterrogation immdiatement avant le deux-
points du suxe :
$ rm !?tot?:2
rm toto.txt
Pour rutiliser un mot de la commande prcdente, on peut utiliser plus simple-
ment !:0, !:1, etc., jusqu !:$ quon peut simplier en!$.
Il est assez courant dexcuter la suite plusieurs commandes ayant le mme
argument. Cest l que !$ se rvle trs utile :
$ ls -l toto.txt
-rw-r--r-- 1 babafou prof 554923 Mar 1 11:44 toto.txt
$ rm !$
rm toto.txt
Enn, il est possible de rpter la commande prcdente en remplaant une
chane de caractres par une autre. Pour cela, on saisit un accent circonexe suivi de
la chane de caractres remplacer suivie dun autre accent circonexe suivi de la
chane de caractres de remplacement (le tout sans espaces, sauf, au besoin, dans les
chanes de caractres) :
160
9.2. Les chemins de recherche des commandes
$ ls -l toto.txt
-rw-r--r-- 1 babafou prof 554923 Mar 1 11:44 toto.txt
$ ^toto^tata
ls -l tata.txt
-rw-r--r-- 1 babafou prof 556643 Mar 2 10:32 tata.txt
9.2 Les chemins de recherche des commandes
9.2.1 Commandes externes et commandes internes
ue se passe-t-il lorsquon excute une commande ? Nous avons vu au para-
graphe 8.3.5 page 115 que certains rpertoires (en loccurrence /bin, /sbin, /usr/bin,
/usr/sbin, /usr/local/bin et /usr/local/sbin) contiennent des chiers excutables
dont les noms sont identiques certaines commandes que nous avons tudies.
Ce nest pas une concidence. En eet, quasiment toutes les commandes sont des
chiers excutables qui sont stocks quelque part dans larborescence du systme de
chiers. Ce sont des commandes externes.
Par opposition, il existe quelques commandes internes, qui sont directement
traites par linterprteur de commandes. Les commandes cd, exit, type (que nous
allons tudier plus loin) et umask sont des commandes internes et il en existe dautres.
Il existe galement quelques trs rares commandes qui sont des commandes
internes et qui existent galement en tant que commandes externes. Cest par exemple
le cas des commandes kill (que nous allons tudier au paragraphe 9.3.5 page 170),
echo et which (que nous allons tudier plus loin).
Revenons la question initiale. ue se passe-t-il lorsquon excute une com-
mande ? Si celle-ci est une commande interne, linterprteur de commandes reconnat
son nom et il la traite directement. Sinon, il sagit dune commande externe.
Si le nom de cette commande contient une barre oblique /, linterprteur de
commandes essaie dexcuter le chier correspondant, considr comme un chemin
daccs relatif si le nom de la commande ne commence pas par / ou comme un
chemin daccs absolu si le nom de la commande commence par /. Par exemple, si
lon tape la commande suivante :
$ rep/toto
linterprteur de commandes essaiera dexcuter le chier toto (qui doit donc tre
excutable) situ dans le rpertoire rep.
Sinon (cest le cas gnral), linterprteur de commandes doit dterminer o
se trouve le chier excutable de la commande dans larborescence du systme de
chiers. Pour cela, il utilise la variable denvironnement PATH.
161
Chapitre 9. Commandes, processus et redirections
9.2.2 La variable denvironnement PATH
Une variable denvironnement est un paramtre de conguration de linterprteur
de commandes, dont la valeur est xe par ladministrateur du systme ou par
lutilisateur.
On peut accder la valeur dune variable denvironnement en faisant prcder
son nom dun symbole dollar $. Ainsi, on peut acher le contenu dune variable
denvironnement en utilisant la commande echo :
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
La variable denvironnement PATH contient une liste de chemins daccs de rper-
toires spars par des deux-points. Cest ce quon appelle les chemins de recherche
des commandes.
En eet, lors de son dmarrage, linterprteur de commandes va parcourir dans
lordre les rpertoires indiqus dans la variable denvironnement PATH et conserver
en mmoire une liste des commandes (cest--dire des chiers excutables) quils
contiennent.
Lorsquon excute une commande externe dont le nom ne contient pas de barre
oblique /, donc, linterprteur de commandes va parcourir cette liste la recherche
de la commande et va excuter la premire quil trouve (lordre des rpertoires dans
la variable denvironnement PATH a donc son importance) ou acher un message
derreur si la commande ny gure pas.
http://en.wikipedia.org/wiki/PATH
_
(variable)
9.2.3 Les commandes type et which
Si lon souhaite acher le chemin daccs absolu dune commande en utilisant
les informations contenues dans la variable denvironnement PATH, on peut utiliser
les commandes type ou which :
$ type ls
ls is /bin/ls
$ which ls
/bin/ls
http://fr.wikipedia.org/wiki/Type
_
(Unix)
http://fr.wikipedia.org/wiki/Which
162
9.2. Les chemins de recherche des commandes
9.2.4 Mise en garde
Il arrive frquemment de voir le rpertoire . (rpertoire courant) dans le contenu
de la variable denvironnement PATH :
$ echo $PATH
/usr/bin:/bin:.
Ceci peut tre pratique pour les personnes qui font beaucoup de programmation.
En eet, quand on programme, on va gnrer un chier excutable dans le rpertoire
courant. Comment faire pour lexcuter ? Si le rpertoire courant ne gure pas dans
le contenu de la variable denvironnement PATH, il faut excuter son programme
(quon appellera test) de la sorte :
$ ./test
On est donc tent dajouter . quelque part dans le contenu de la variable denvi-
ronnement PATH pour spargner de taper les deux caractres ./ :
$ test
Malheureusement, ceci pose deux problmes.
Si . gure vers la n du contenu de la variable denvironnement PATH (en tout
cas, aprs /bin), on risque davoir une surprise. Supposons que notre programme
test soit conu pour acher des informations ds son lancement :
$ test
$
Rien nest ach... On peut passer longtemps chercher pourquoi dans le
programme parce que la source du problme ny est pas. En eet il existe une
commande test dans le rpertoire /bin (quand elle nest pas une commande interne
de linterprteur de commandes). Comme /bin gure avant . dans le contenu de
la variable denvironnement PATH, cest /bin/test qui est excut quand on tape
simplement test.
u cela ne tienne, il sut donc de mettre . au dbut du contenu de la variable
denvironnement PATH pour que ce soit notre test qui soit excut. Le problme
inverse se posera alors parce quil sera impossible dexcuter les commandes ayant le
mme nom quun de ses programmes autrement que par son chemin daccs absolu
(ce que lutilisation de la variable denvironnement PATH est cense viter).
163
Chapitre 9. Commandes, processus et redirections
La morale de cette histoire est double. Tout dabord, mettre . dans le contenu de
la variable denvironnement PATH pose des problmes, o quil soit. On aura beau
prendre garde ne pas nommer ses programmes comme des commandes externes,
il y en a tellement quon aura forcment un problme un jour. Ensuite, quand on
programme, il est fortement recommand dexcuter ses programmes en faisant
systmatiquement prcder leur nom de ./ an dtre toujours certain dexcuter le
bon programme :
$ ./mon
_
programme
9.3 Gestion des processus
UNIX tant un systme dexploitation multitche, il est possible de faire fonc-
tionner plusieurs logiciels en mme temps. Plus prcisment, on parle de processus
(process en anglais) pour dsigner un logiciel en cours dexcution.
http://fr.wikipedia.org/wiki/Processus
_
(informatique)
9.3.1 Lordonnancement
Mais les processus fonctionnent-ils rellement en mme temps ? Un micropro-
cesseur mono-cur nous discuterons des microprocesseurs multi-curs plus loin
ne peut excuter quune seule instruction un instant donn. Il ne peut donc
excuter quun seul processus la fois. Lillusion du multitche provient du fait que
chaque processus fonctionne pendant un laps de temps donn puis laisse sa place un
autre processus et ainsi de suite. Ce laps de temps, de lordre de quelques dizaines de
millisecondes, est susamment long lchelle du microprocesseur, qui est cadenc
plusieurs gigahertz, pour laisser au processus un temps dexcution raisonnable
et susamment court notre chelle pour nous donner lillusion dune excution
simultane des processus.
Plus techniquement, un processus se voit attribuer lutilisation du micropro-
cesseur pendant un certain temps, quon appelle un quantum, par lordonnanceur
(scheduler en anglais), qui est le composant du systme dexploitation responsable
de lattribution du microprocesseur aux dirents processus. Le mcanisme dattri-
bution sappelle lordonnancement (scheduling en anglais). la n de son quantum,
lordonnanceur retire lutilisation du microprocesseur au processus qui en disposait,
choisit un nouveau processus (qui peut parfois tre le mme) et lui cone lutilisa-
tion du microprocesseur pendant un nouveau quantum (qui peut tre dune dure
dirente du prcdent).
La gure 9.1 page ci-contre reprsente lordonnancement de trois processus,
indiqus sur laxe des ordonnes par les repres 1, 2 et 3. Le temps est indiqu par
laxe des abscisses.
164
9.3. Gestion des processus
processus
1
2
3
temps
t
0
t
1
t
2
t
3
t
4
t
5
t
6
Figure 9.1 Ordonnancement.
Le processus 1 utilise le microprocesseur du temps t
0
au temps t
1
. cet instant,
lutilisation du microprocesseur lui est retire par lordonnanceur, qui choisit un
nouveau processus qui coner lutilisation du microprocesseur, savoir le processus
2. Ceci dure un temps
1
. Pendant ce temps, aucun processus ne sexcute puisque
lordonnanceur utilise le microprocesseur. Lexcution de lordonnanceur est repr-
sente par les deux traits interrompus verticaux, le premier en t
1
et le second en
t
1
+
1
(non indiqu sur laxe des abscisses).
Il en va de mme pour le processus 2 et ainsi de suite.
Les quanta, reprsents dans la gure 9.1 par les lignes horizontales gurant en
face de chaque processus, ne sont pas ncessairement de la mme dure. Les processus
ne sont pas non plus ncessairement ordonnancs de manire rgulire (1 puis 2
puis 3 puis 1 puis 2 puis 3, etc.). Tout ceci dpend de lalgorithme de choix de
lordonnanceur et de la priorit des processus (voir le paragraphe 9.6.2 page 201).
Un fonctionnement multitche o lordonnanceur retire lutilisation du mi-
croprocesseur aux processus est dit premptif . Cest aujourdhui le mode de fonc-
tionnement de tout systme dexploitation srieux. Par le pass, certains systmes
dexploitation (dont Windows avant Windows 95, qui ntait dailleurs pas totalement
premptif, et Mac OS avant Mac OS X) utilisaient un fonctionnement multitche
coopratif, dans lequel les processus devaient deux-mmes rendre lutilisation du
microprocesseur lordonnanceur, ce quils ne faisaient pas toujours...
Avec un microprocesseur multi-cur, plusieurs processus (autant que de curs)
peuvent rellement sexcuter simultanment. Lordonnanceur utilise lun des curs,
pralablement retir au processus qui lutilisait, an de choisir un autre processus au-
quel lattribuer. Pendant ce temps, les processus utilisant les autres curs continuent
fonctionner.
Lordonnancement est tudi plus en dtail dans le cours IN102, Systmes
dexploitation.
165
Chapitre 9. Commandes, processus et redirections
http://fr.wikipedia.org/wiki/Ordonnancement
_
dans
_
les
_
systmes
_
d
exploitation
http://fr.wikipedia.org/wiki/Multitche
_
premptif
http://fr.wikipedia.org/wiki/Microprocesseur
_
multi-cur
9.3.2 Lancement dun processus en arrire-plan
Nous navons pour le moment utilis des commandes que squentiellement.
Ceci peut dailleurs poser problme avec certaines dentre elles. En eet, par dfaut,
linterprteur de commandes attend la n de chaque commande quil excute avant
dacher une nouvelle invite. Cela est raisonnable pour la plupart des commandes
que nous avons tudies, qui se droulent trs rapidement mais dautres peuvent
durer beaucoup plus longtemps.
Par exemple, lanons une petite commande sympathique appele xeyes :
$ xeyes

Une fois cette commande lance, linterprteur de commandes attend quelle


se termine avant dacher une nouvelle invite. Pendant ce temps, linterprteur de
commandes ayant servi lancer xeyes nest pas utilisable. Cela est dautant plus
regrettable que xeyes ouvre sa propre fentre et na ensuite plus aucune interaction
avec lutilisateur par le biais de linterprteur de commandes. Cest dailleurs le cas
de quasiment toutes les commandes ouvrant leur propre fentre.
Il serait plus utile de pouvoir lancer ce type de commande en indiquant lin-
terprteur de commandes quil peut ne pas attendre sa n et racher une nouvelle
invite tout de suite.
Ceci est possible grce au caractre & :
$ xeyes &
[1] 1664
$
Celui-ci indique linterprteur de commandes quil doit lancer la commande
en arrire-plan (background en anglais) on parle galement de tche de fond ,
cest--dire sans attendre quelle se termine.
Ce caractre doit gurer en dernier sur la ligne de commande. Il nest pas nces-
saire de le faire prcder dune espace.
Linterprteur de commandes ache donc tout de suite une nouvelle invite aprs
avoir indiqu deux informations :
1. entre crochets, le numro de tche de la commande qui vient dtre lance
(nous ne reviendrons pas sur ce concept) ;
166
9.3. Gestion des processus
2. lidentiant de processus (nous reviendrons sur ce concept au paragraphe 9.3.3)
de la commande qui vient dtre lance.
Il est ensuite possible dutiliser linterprteur de commandes pendant que xeyes
sexcute en arrire-plan.
Lorsque quon ferme xeyes, linterprteur de commandes lindique juste avant
dacher sa prochaine invite :
[1]+ Done xeyes
Ceci peut tre utile lorsquon lance en arrire-plan, par exemple, une commande
qui se contente deectuer des traitements (calcul scientique, simulation, etc.) sans
ouvrir sa propre fentre ou acher quoi que ce soit dans le terminal. On est alors
averti de la n de cette commande.
Pour nir, que faire si lon a lanc une commande en oubliant de le faire en
arrire-plan ? On se retrouve avec un interprteur de commande inutilisable, ce qui
est dommage. On peut gnralement quitter le logiciel quon vient de lancer pour le
relancer en arrire-plan mais il y a une faon plus lgante de sen sortir.
Dans linterprteur de commandes, il sut de taper ^Z :
$ xeyes
^Z
[1]+ Stopped xeyes
$
Cela va suspendre lexcution du processus et provoquer lachage de linvite. Il
faut alors indiquer linterprteur de commandes quil doit reprendre lexcution du
processus mais en arrire-plan au moyen de la commande bg (pour background) :
$ bg
[1]+ xeyes &
$
Et la boulette est oublie !
http://fr.wikipedia.org/wiki/Bg
_
(Unix)
9.3.3 La commande ps
La commande ps (pour process status) ache la liste des processus en activit sur
lordinateur.
167
Chapitre 9. Commandes, processus et redirections
Son achage nest pas intressant sans options. cet gard, ps est une commande
inhabituelle car elle accepte plusieurs ensembles doptions et aucun argument. Lun
des ensembles doptions ne ncessite pas de les faire prcder par le tiret que nous
avons utilis jusque l, cest cet ensemble doptions que nous allons utiliser.
Loption x permet dacher lensemble de ses processus :
$ ps x
PID TTY STAT TIME COMMAND
18230 ? S 0:00 sshd
18231 pts/1 Ss 0:00 -tcsh
18641 pts/1 R+ 0:00 ps x
On retrouve un habituel achage en colonnes. Chaque ligne, hormis la premire,
correspond un processus.
La signication de chaque colonne est la suivante :
1. la colonne PID indique lidentiant de processus (process identier en anglais),
qui est un nombre unique attribu chaque commande lors de son lancement ;
2. la colonne TTY (pour teletype) indique le terminal depuis lequel la commande a
t lance ;
3. la colonne STAT (pour status) indique ltat du processus : R (pour runnable) sil
est prt tre excut, S (pour sleeping) sil est en sommeil ; il existe dautres
tats que nous ne mentionnerons pas ;
4. la colonne TIME indique la dure cumule doccupation du microprocesseur ;
5. la colonne COMMAND indique la commande telle quelle a t lance depuis linter-
prteur de commandes ou telle quelle a dcid dapparatre dans lachage de
ps (le libell de cette colonne est en eet paramtrable par chaque commande).
Loption u permet dacher quelques informations (donc quelques colonnes)
supplmentaires :
$ ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
babafou 18230 0.0 0.1 10968 2084 ? S 17:19 0:00 sshd
babafou 18231 1.5 0.1 8740 2728 pts/1 Ss 17:19 0:00 -tcsh
babafou 27371 0.0 0.0 8056 1888 pts/1 R+ 17:28 0:00 ps ux
la colonne USER indique le propritaire du processus ;
la colonne %CPU
1
indique le pourcentage du microprocesseur utilis par le
processus ;
1. CPU signie central processing unit.
168
9.3. Gestion des processus
la colonne %MEM indique le pourcentage de mmoire utilis par le processus ;
la colonne VSZ (pour virtual size) indique (en kibioctets) la taille totale du
processus ;
la colonne RSS (pour resident set size) indique (en kibioctets) le volume de
mmoire vive occup par le processus ;
la colonne START indique lheure de lancement du processus.
Loption a (pour all) permet dacher lensemble des processus en activit sur
lordinateur, pas seulement les siens :
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2112 636 ? Ss 00:12 0:02 init [5]
[...]
La colonne COMMAND tant tronque pour que lachage des lignes ne dpasse pas
80 caractres, il est possible de forcer un achage complet grce loption w (pour
wide) :
$ ps auxw
[...]
http://fr.wikipedia.org/wiki/Ps
_
(Unix)
http://fr.wikipedia.org/wiki/Identifiant
_
de
_
processus
9.3.4 La commande top
La commande ps donne une vision statique des processus. Il est parfois utile den
avoir une vision plus vivante an de suivre leur fonctionnement en temps rel.
La commande top ache, outre certaines informations globales, la liste des
processus les plus actifs, cest--dire de ceux qui utilisent le plus le microprocesseur.
Cest particulirement utile lorsquon gre un systme informatique, an de
savoir quels sont les plus gros consommateurs des ressources de calcul et de dtecter
dventuels abus. Lorsquon met au point des programmes de calcul, il est gale-
ment intressant den tudier le comportement de cette faon an de suivre leur
consommation au niveau du microprocesseur et de la mmoire.
La commande top a un fonctionnement particulier par rapport aux commandes
vues jusqu prsent puisquelle prend, durant le temps de son excution, le contrle
de tout lmulateur de terminal (un peu comme vi, more ou less) et met jour son
achage toutes les trois secondes :
169
Chapitre 9. Commandes, processus et redirections
top - 19:38:28 up 19:25, 1 user, load average: 0.00, 0.02, 0.00
Tasks: 122 total, 1 running, 121 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 0.9%sy, 0.0%ni, 98.4%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2040636k total, 957472k used, 1083164k free, 348932k buffers
Swap: 2048276k total, 0k used, 2048276k free, 286348k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2920 gdm 20 0 13616 4020 3320 S 2 0.2 0:29.34 at-spi-registry
1 root 20 0 2112 636 544 S 0 0.0 0:02.47 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.41 migration/0
4 root 15 -5 0 0 0 S 0 0.0 0:03.61 ksoftirqd/0
5 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/0
6 root RT -5 0 0 0 S 0 0.0 0:00.81 migration/1
7 root 15 -5 0 0 0 S 0 0.0 0:02.49 ksoftirqd/1
8 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/1
9 root 15 -5 0 0 0 S 0 0.0 0:00.26 events/0
10 root 15 -5 0 0 0 S 0 0.0 0:00.20 events/1
11 root 15 -5 0 0 0 S 0 0.0 0:00.00 khelper
63 root 15 -5 0 0 0 S 0 0.0 0:00.02 kblockd/0
64 root 15 -5 0 0 0 S 0 0.0 0:00.00 kblockd/1
66 root 15 -5 0 0 0 S 0 0.0 0:00.00 kacpid
67 root 15 -5 0 0 0 S 0 0.0 0:00.00 kacpi
_
notify
136 root 15 -5 0 0 0 S 0 0.0 0:00.00 cqueue
Les cinq premires lignes donnent dirents indicateurs globaux sur ltat du
systme dexploitation (nous ne rentrerons pas dans les dtails).
Le reste reprend un achage en colonnes semblable celui de ps. On y retrouve
les colonnes les plus intressantes : PID, USER, %CPU, %MEM et COMMAND. La signication
de la colonne NI sera tudie au paragraphe 9.6.2 page 201. Les processus sont classs
par ordre dcroissant doccupation du microprocesseur (colonne %CPU).
Pour quitter top, il faut taper q.
http://www.unixtop.org/
http://en.wikipedia.org/wiki/Top
_
(software)
9.3.5 La commande kill
Le nom de cette commande est fort mal choisi. Certes elle permet de tuer un
processus mais ce nest l quun des aspects de son fonctionnement. De manire plus
gnrale kill sert envoyer un signal un processus. Un signal est une information
atomique envoye dun processus un autre ou du systme dexploitation un
processus. Les signaux sont tudis plus en dtail dans le cours IN102, Systmes
dexploitation.
La commande kill ne doit tre utilise pour tuer un processus quen dernier
recours, lorsquon ne peut plus quitter le logiciel correspondant par les voies natu-
relles.
170
9.3. Gestion des processus
Pour illustrer le fonctionnement de la commande kill, nous allons utiliser
nouveau la commande xeyes, que nous allons lancer en arrire-plan :
$ xeyes &
[1] 1664
$
Celle-ci ouvre une fentre, placez-l bien en vue, elle permettra, en disparaissant,
de vrier que le processus a bien t tu.
La commande kill prend en argument le ou les identiants des processus tuer.
Ici, celui de xeyes est 1664 donc il faut faire :
$ kill 1664
Il existe un ensemble ni de signaux, dont on peut avoir la liste au moyen de
loption -l (pour list) de kill :
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Chaque signal a un nom et un numro. Par dfaut, le signal envoy par kill
est SIGTERM (pour terminate). Si le processus liminer est rcalcitrant (certains
processus peuvent rsister lenvoi du signal SIGTERM), il est possible denvoyer le
signal SIGKILL, dont on ne rchappe pas. On indique kill le signal envoyer en
mettant en option son nom, sans le SIG initial, ou son numro. Il sagit dun cas o
les options sont des mots complets et pas des caractres individuels.
171
Chapitre 9. Commandes, processus et redirections
Donc pour envoyer le signal SIGKILL un processus, il faut utiliser loption -KILL
(par nom) ou loption -9 (par numro) :
$ kill -KILL 1664
$ kill -9 1664
http://fr.wikipedia.org/wiki/Kill
_
(Unix)
http://fr.wikipedia.org/wiki/Signal
_
(informatique)
9.3.6 Le statut de sortie dun processus
Lorsquil se termine, un processus envoie un nombre entier au processus qui
la cr. Ce nombre est le statut de sortie du processus. Il indique sil a pu eectuer
correctement la tche qui lui incombait ou sil a rencontr un problme. Le statut de
sortie vaut :
0 si le processus sest correctement droul ;
une valeur non nulle (souvent 1) en cas derreur.
http://en.wikipedia.org/wiki/Exit
_
status
9.3.6.1 Les variables spciales ? et status
Une variable spciale est une variable dont la valeur est xe par linterprteur de
commandes.
Le statut de sortie de la dernire commande est stock dans une variable spciale :
? pour les Bourne shell (sh), Korn shell (ksh), Bourne-again shell (bash) et Z
shell (zsh) (le TENEX C shell (tcsh) reconnat galement cette variable) ;
status pour les C shell (csh) et TENEX C shell (tcsh) (le Z shell (zsh)
reconnat galement cette variable).
Ainsi, avec sh, ksh, bash ou zsh :
$ ls
tata toto
$ echo $?
0
$ rm titi
rm: titi: No such file or directory
$ echo $?
1
Avec csh ou tcsh :
172
9.3. Gestion des processus
% ls
tata toto
% echo $status
0
% rm titi
rm: titi: No such file or directory
% echo $status
1
Il faut bien comprendre que les variables ? et status contiennent le statut de
sortie de la dernire commande. Considrons lexemple suivant :
$ commande1
[...]
$ commande2
[...]
$ echo $?
0
Ici, le statut de sortie ach correspond celui de commande2. Nayant pas utilis ?
ou status immdiatement aprs la n de commande1, son statut de sortie est perdu.
9.3.6.2 Succession de commandes
Il est possible dutiliser le statut de sortie dune commande pour excuter une
autre commande sous condition.
Considrons loprateur && :
$ commande1 && commande2
La commande commande2 ne sera excute que si le statut de sortie de la commande
commande1 est nul, cest--dire si elle sest correctement termine. Donc, si commande1
se termine correctement, commande2 sera excute. Si commande1 ne se termine pas
correctement, commande2 ne sera pas excute. Pour cette raison, loprateur && est
appel oprateur et .
Les espaces autour de loprateur && ne sont pas indispensables.
Considrons maintenant loprateur || :
$ commande1 || commande2
173
Chapitre 9. Commandes, processus et redirections
La commande commande2 ne sera excute que si le statut de sortie de la commande
commande1 est non nul, cest--dire si elle ne sest pas correctement termine. Donc, si
commande1 se termine correctement, commande2 ne sera pas excute. Si commande1 ne
se termine pas correctement, commande2 sera excute. Pour cette raison, loprateur
|| est appel oprateur ou .
Les espaces autour de loprateur || ne sont pas indispensables.
Enn, pour tre tout fait complet, signalons galement lexistence du spara-
teur ; :
$ commande1 ; commande2
Le sparateur ; permet dexcuter une squence de commandes, sans condition.
Ici, commande1 sera excute, suivie de commande2.
Les espaces autour du sparateur ; ne sont pas indispensables.
9.3.6.3 Les commandes true et false
Signalons lexistence des commandes true, dont le statut de sortie est toujours
vrai, et false, dont le statut de sortie est toujours faux :
$ true
$ echo $?
0
$ false
$ echo $?
1
http://en.wikipedia.org/wiki/True
_
and
_
false
_
(Unix)
9.4 Redirections, tuyaux et substitution de commande
9.4.1 Sous UNIX, tout est chier
Lun des choix de conception dUNIX est particulirement lgant et ouvre
de nouveaux horizons. Il sagit de ramener le plus de choses, en particulier les
priphriques, des chiers, dans la mesure o cela est possible, cest--dire si la
communication avec eux se fait en lisant ou en crivant une suite doctets (comme
on lit ou on crit une suite doctets dans un chier).
Une imprimante, par exemple, est un priphrique qui sattend recevoir une
suite doctets dcrivant les donnes imprimer. On peut donc, sous UNIX, accder
limprimante au moyen dun chier spcial /dev/lp, /dev/lpt0 ou /dev/lp0 (cela
varie en fonction de lUNIX utilis).
174
9.4. Redirections, tuyaux et substitution de commande
Un chier spcial est un chier qui, lorsquon lit ou crit dedans, transfre les
donnes depuis ou vers le priphrique qui lui est associ. Les chiers spciaux sont
tous regroups dans le rpertoire /dev.
De mme, le terminal peut tre considr comme trois chiers :
lentre standard, correspondant au clavier ;
la sortie standard, correspondant lcran ;
la sortie derreur standard, correspondant galement lcran.
Il y a deux sorties standards pour pouvoir au besoin faire la dirence entre le
ux de sortie normal et les messages derreur.
Lentre standard est accessible via le chier spcial /dev/stdin, la sortie standard
est accessible via le chier spcial /dev/stdout et la sortie derreur standard est
accessible via le chier spcial /dev/stderr.
En pratique, les commandes utilises dans linterprteur de commandes lisent leur
entre standard et crivent sur leur sortie standard et leur sortie derreur standard
via ces chiers spciaux comme reprsent dans la gure 9.2. Les fonctions de lecture
et dcriture dans un chier leur servent donc galement accder indirectement au
clavier et lcran du terminal.
clavier
commande
cran
entre
standard
sortie
standard
sortie derreur
standard
Figure 9.2 Entre, sortie et sortie derreur standards.
Historiquement, cela a permis de simplier considrablement laccs des logiciels
aux priphriques. Ils devaient auparavant grer une grande partie des communica-
tions eux-mmes et connatre, par exemple, les spcicits des dirents types de
terminaux susceptibles dtre utiliss. Grce aux chiers spciaux, UNIX soccupe
seul de grer laccs aux priphriques pour tous les logiciels, ceux-ci se contentant
de lire et dcrire dans des chiers.
Nous allons voir que, grce cette faon de sabstraire du terminal, il est possible
de faire des choses trs intressantes.
http://fr.wikipedia.org/wiki/Flux
_
standard
http://en.wikipedia.org/wiki/Redirection
_
(computing)
9.4.2 Redirection de la sortie standard
La plupart des commandes que nous avons tudies nachent rien du tout.
Dautres, en revanche, savent tre plus loquaces. Cest le cas, par exemple, de ps,
dont le but est justement dacher quelque chose.
175
Chapitre 9. Commandes, processus et redirections
Il peut tre utile de conserver dans un chier ce quune commande ache.
Comment faire ? On pourrait envisager dutiliser un diteur de texte an dy copier-
coller ce que la commande a ach. Nanmoins, sil y a plusieurs crans faire dler,
ceci est rptitif (pas bon...) et il est toujours possible de commettre des erreurs
dinattention (oubli dune ligne ou copie en double). Si lachage est susamment
volumineux, le dbut peut mme avoir disparu de la mmoire de lmulateur de
terminal. Bref, ce nest pas la bonne solution.
Puisque lachage se fait en crivant sur la sortie standard, par dfaut raccorde
lcran, pourquoi ne pas plutt la raccorder un chier qui permettrait de conserver
lachage de la commande, comme reprsent dans la gure 9.3 ?
chier
clavier
commande
cran
entre
standard
s
o
r
t
i
e
s
t
a
n
d
a
r
d
sortie derreur
standard
Figure 9.3 Redirection de la sortie standard.
Cest possible en redirigeant la sortie standard vers un chier :
$ ps aux > sortie
$
Remarquez que rien na t ach lcran. En revanche, un chier sortie a
t cr, qui contient ce que ps aux aurait ach sans la redirection (vous pouvez le
vrier avec cat, more ou less).
Le caractre > a donc pour eet de rediriger la sortie standard de la commande
qui le prcde vers le chier dont le nom est indiqu aprs lui.
Si le chier existait auparavant, il est cras.
Si lon souhaite accumuler dans un chier les achages successifs de plusieurs
commandes, on peut utiliser une autre forme de redirection de la sortie standard :
$ commande1 >> sortie
$ commande2 >> sortie
$ commande3 >> sortie
Lexpression >> redirige la sortie standard de la commande qui la prcde vers le
chier dont le nom est indiqu aprs elle.
176
9.4. Redirections, tuyaux et substitution de commande
Si le chier nexistait pas auparavant, il est cr. Sil existait, le rsultat de la
redirection est plac aprs le contenu du chier.
Pour revenir notre exemple, le chier sortie (dont on supposera quil nexistait
pas auparavant) contient donc lachage de commande1, suivi de celui de commande2,
suivi de celui de commande3.
noter que, pour une fois, les espaces autour de > et >> ne sont pas ncessaires.
On souhaite parfois utiliser une commande loquace pour ses eets de bord, sans
avoir besoin de ce quelle ache lcran. Dans ce cas, il est possible de rediriger
sa sortie standard vers le chier spcial /dev/null, qui se comporte comme un trou
noir :
$ commande > /dev/null
$
http://fr.wikipedia.org/wiki//dev/null
9.4.3 Redirection de la sortie derreur standard
clavier
commande
cran
chier
entre
standard
sortie
standard
s
o
r
t
i
e
d

e
r
r
e
u
r
s
t
a
n
d
a
r
d
Figure 9.4 Redirection de la sortie derreur standard.
Si lon souhaite rediriger vers un chier la sortie derreur standard, comme
reprsent dans la gure 9.4, il faut utiliser lexpression 2> :
$ ls fichier
_
qui
_
n
_
existe
_
pas 2> erreur
$ cat erreur
ls: fichier
_
qui
_
n
_
existe
_
pas: No such file or directory
Lespace prcdent 2> est obligatoire. Celle suivant cette expression ne lest pas.
On peut combiner les deux formes de redirection des sorties pour rediriger la
sortie standard et la sortie derreur standard vers des chiers, comme reprsent dans
la gure 9.5 page suivante :
$ commande > sortie 2> erreur
177
Chapitre 9. Commandes, processus et redirections
chier
clavier
commande
cran
chier
entre
standard
s
o
r
t
i
e
s
t
a
n
d
a
r
d
s
o
r
t
i
e
d

e
r
r
e
u
r
s
t
a
n
d
a
r
d
Figure 9.5 Redirection des sortie et sortie derreur standards.
9.4.4 Redirection de lentre standard
Il est galement possible de rediriger lentre standard, cest--dire de faire en
sorte quune commande, au lieu de lire au clavier, lise le contenu dun chier, comme
reprsent dans la gure 9.6.
chier
clavier
commande
cran
e
n
t
r

e
s
t
a
n
d
a
r
d
sortie
standard
sortie derreur
standard
Figure 9.6 Redirection de lentre standard.
Pour tester ceci, il convient dintroduire la commande bc (pour basic calculator).
Celle-ci excute les oprations arithmtiques reues sur son entre standard :
$ bc
24+27
51
13
*
128
1664
quit
$
Nous allons donc rediriger lentre standard de bc. Pour cela, nous avons besoin
dun chier dentre. Saisissez dans un chier entree, au moyen de votre diteur de
texte favori, quelques lignes contenant des oprations arithmtiques, par exemple :
178
9.4. Redirections, tuyaux et substitution de commande
24+27
13
*
128
Il est inutile dindiquer quit, bc se terminera en atteignant la n du chier (ce
qui fermera lentre standard).
Sauvez le chier et quittez lditeur de texte.
Pour rediriger lentre standard depuis un chier, il faut utiliser le caractre < :
$ bc < entree
51
1664
$
Les espaces autour de < ne sont pas ncessaires.
On peut bien entendu associer toutes les formes de redirection pour que certaines
commandes, dont lexcution peut tre longue, vivent leur vie sans dranger personne.
On en prote galement pour les lancer en arrire-plan :
$ commande < entree > sortie 2> erreur &
9.4.5 Les tuyaux
Nous allons rutiliser la commande amusante xeyes an de voir comment il est
possible den automatiser lassassinat :
$ xeyes &
[1] 1664
$
Faisons comme si nous navions pas vu lidentiant de processus ach lors du
lancement de la commande en arrire-plan. Pour lobtenir, dans le but dutiliser kill,
on peut utiliser la commande ps :
$ ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
[...]
babafou 1664 0.0 0.1 7456 2636 ttyq5 SN 14:18 0:00 xeyes
[...]
179
Chapitre 9. Commandes, processus et redirections
Il serait intressant de pouvoir isoler la ligne qui concerne xeyes. Il existe juste-
ment une commande permettant dacher les lignes dun chier contenant un motif
textuel : la commande grep (qui sera tudie au paragraphe 9.5.2 page 185). Nous
allons donc rediriger la sortie standard de ps an de pouvoir utiliser grep dessus :
$ ps ux > sortie-ps
$ grep xeyes sortie-ps
babafou 1664 0.0 0.1 7456 2636 ttyq5 SN 14:18 0:00 xeyes
La commande grep recherche le motif qui lui est pass en premier argument dans
les chiers dont les noms lui sont passs dans les arguments suivants et ache les
lignes de ces chiers contenant ce motif.
Le plus gros du travail est fait. Pour terminer, il serait intressant dextraire
lidentiant de processus de la sortie standard de grep. La commande awk (qui sera
tudie au paragraphe 9.5.3 page 189) fait cela :
$ grep xeyes sortie-ps > sortie-grep
$ awk {print $2} sortie-grep
1664
Ici, on demande awk dextraire la deuxime colonne (les colonnes tant spares
par des espaces) de chaque ligne du chier sortie-grep. Sa syntaxe est un peu
complique. En eet, awk est un outil de traitement de donnes trs puissant reposant
sur un vrai langage de programmation.
Nous avons donc notre rsultat et nous pouvons rement faire :
$ kill 1664
Nous pouvons aussi honteusement faire :
$ rm sortie-ps sortie-grep
voire :
$ rm sortie-
*
si ce sont les deux seuls chiers dont le nom commence par sortie-.
En eet, il est honteux davoir recours de la sorte des chiers temporaires, quil
faut eacer dans les instants qui suivent leur cration. Cest parfaitement inecace.
Retraons la suite doprations ayant permis dobtenir lidentiant du processus
xeyes :
180
9.4. Redirections, tuyaux et substitution de commande
$ ps ux > sortie-ps
$ grep xeyes sortie-ps > sortie-grep
$ awk {print $2} sortie-grep
1664
On peut schmatiser lenchanement des commandes comme reprsent dans la
gure 9.7.
ps sortie-ps
sortie-ps grep sortie-grep
sortie-grep
awk 1664
sortie
standard
argument
sortie
standard
argument
sortie
standard
Figure 9.7 Obtention de lidentiant de processus avec des chiers temporaires.
Il savre que grep est une commande particulire, quon appelle ltre. Un ltre
est une commande ralisant une certaine action sur les chiers dont les noms lui sont
passs en arguments ou, en leur absence, sur son entre standard.
On peut facilement vrier ces deux comportements :
$ grep xeyes sortie-ps
babafou 1664 0.0 0.1 7456 2636 ttyq5 SN 14:18 0:00 xeyes
$ grep xeyes < sortie-ps
babafou 1664 0.0 0.1 7456 2636 ttyq5 SN 14:18 0:00 xeyes
Dans le premier cas, on donne le chier sortie-ps en argument, dans le second,
on redirige lentre standard de grep depuis ce mme chier. Dans les deux cas, le
rsultat est le mme.
Il est donc tentant dessayer de se passer du chier temporaire sortie-ps en
connectant directement la sortie standard de ps lentre standard de grep.
Ceci est possible grce un tuyau (pipe en anglais). Le terme tube est galement
employ. Un tuyau permet dinterconnecter la sortie standard dune commande
lentre standard dune autre et de faire transiter les donnes de lune lautre
directement en mmoire, sans passer par un chier temporaire.
181
Chapitre 9. Commandes, processus et redirections
On cre un tuyau en intercalant une barre verticale | (il nest pas ncessaire de
lentourer despaces) entre les deux commandes relier :
$ ps ux | grep xeyes
babafou 1664 0.0 0.1 7456 2636 pts/1 Ss 14:18 0:00 xeyes
babafou 3351 0.0 0.1 2868 1136 pts/1 S+ 22:30 0:00 grep xeyes
Ceci se comprend ainsi : faire la liste des processus et nacher que les lignes
contenant xeyes.
Bizarrement, on a un rsultat dirent de celui utilisant un chier temporaire.
La dirence est que maintenant, ps et grep fonctionnent simultanment. Dans
la mesure o largument de grep est le motif recherch, la ligne concernant grep
apparat galement. Il faudrait pouvoir, dans la sortie standard de grep, supprimer
cette ligne. Cest possible grce loption -v de grep, qui inverse son fonctionnement.
Au lieu dacher les lignes contenant un motif, grep -v nache que celles ne le
contenant pas :
$ ps ux | grep xeyes | grep -v grep
babafou 1664 0.0 0.1 7456 2636 pts/1 Ss 14:18 0:00 xeyes
Ceci se comprend ainsi : faire la liste des processus, nacher que les lignes
contenant xeyes mais pas celles contenant grep.
Par chance (ou peut-tre lexemple est-il habilement choisi...), awk est galement
un ltre. On peut donc faire :
$ ps ux | grep xeyes | grep -v grep | awk {print $2}
1664
Ceci se comprend ainsi : faire la liste des processus, nacher que les lignes
contenant xeyes mais pas celles contenant grep et en extraire la deuxime colonne.
On peut schmatiser lenchanement des commandes comme reprsent dans la
gure 9.8 page suivante.
Cette fois, nous pouvons enn rement faire :
$ kill 1664
Firement parce que les tuyaux sont au cur de la philosophie dUNIX et il faut
les utiliser ds que possible. Ds quon repre un chier temporaire gnr par la
redirection de la sortie standard dune commande et pris comme argument ou entre
standard dune autre, ainsi que reprsent dans la gure 9.7 page prcdente.
De nombreuses commandes sont dailleurs des ltres. Certaines dentre elles sont
tudies au paragraphe 9.5 page 184.
182
9.4. Redirections, tuyaux et substitution de commande
ps
grep
grep
awk 1664
sortie
standard
entre
standard
sortie
standard
entre
standard
sortie
standard
entre
standard
sortie
standard
Figure 9.8 Obtention de lidentiant de processus avec des tuyaux.
http://fr.wikipedia.org/wiki/Tube
_
(shell)
9.4.6 Substitution de commande
Ceci nest pas une redirection proprement parler mais un mcanisme relative-
ment proche et qui nous manque pour terminer notre exemple dassassinat de xeyes
en beaut.
Grce aux tuyaux, nous aboutissons donc :
$ ps ux | grep xeyes | grep -v grep | awk {print $2}
1664
$ kill 1664
Mais il reste toujours une tape manuelle dans ce traitement...
Les plus hardis ont certainement envie de faire :
$ ps ux | grep xeyes | grep -v grep | awk {print $2} | kill
Mais cela ne peut pas fonctionner. En eet, kill nest pas un ltre et ne sait donc
pas lire son entre standard en labsence dargument.
Nanmoins, il existe une fonctionnalit de linterprteur de commandes adapte
ce cas : la substitution de commande. Il existe deux syntaxes pour la raliser.
La premire utilise une paire dapostrophes inverses (cest un caractre qui est
toujours utilis par paire) :
183
Chapitre 9. Commandes, processus et redirections
$ kill ps ux | grep xeyes | grep -v grep | awk {print $2}
La seconde utilise $( et ) :
$ kill $(ps ux | grep xeyes | grep -v grep | awk {print $2})
Lorsquil rencontre une substitution de commande, cest--dire une commande
simple ou un enchanement avec des tuyaux, le tout entour par une paire dapos-
trophes inverses ou par $( et ), linterprteur de commandes substitue sa sortie
standard lensemble ... ou $(...) comme reprsent dans la gure 9.9.
kill
ps ux | grep xeyes | grep -v grep | awk {print $2}
1664
Figure 9.9 Substitution de commande.
Si la sortie standard de la substitution de commande est compose de plusieurs
lignes, celles-ci sont concatnes en les sparant par des espaces.
http://en.wikipedia.org/wiki/Command
_
substitution
9.5 uelques ltres usuels
Un ltre est une commande ralisant une certaine action sur les chiers dont les
noms lui sont passs en arguments ou, en leur absence, sur son entre standard, trs
souvent interconnecte avec la sortie standard dune autre commande au moyen dun
tuyau (voir le paragraphe 9.4.5 page 179).
Les tuyaux occupant une place centrale dans la philosophie dUNIX, toutes les
commandes qui sy prtent sont en fait des ltres, an de pouvoir les utiliser comme
tels.
http://en.wikipedia.org/wiki/Filter
_
(Unix)
9.5.1 Les commandes more et less
Certaines commandes gnrent un achage qui peut se rvler parfois long, par
exemple ps aux ou ls dans un rpertoire contenant de nombreux chiers. Lorsque
lachage dborde de la fentre, il nest pas toujours confortable de remonter en
arrire grce lascenseur de la fentre de lmulateur de terminal. On peut alors
rediriger la sortie standard de la commande vers un chier, pour pouvoir le consulter
184
9.5. uelques ltres usuels
confortablement avec more ou less. Ce chier tant un chier temporaire, cela
devrait dclencher tout de suite une alarme : mais o sont passs les tuyaux !
En eet, more et less sont des ltres, parmi les plus utiliss. En prsence dune
commande ayant un achage gnreux, on peut donc faire :
$ commande | more
ou :
$ commande | less
Il vaut dailleurs mieux utiliser less dans ce cas. En eet, certaines versions
de more ne permettent pas de revenir en arrire lorsquelles sont utilises comme
ltre. Par ailleurs, le problme mentionn au paragraphe 7.4.3 page 93 subsiste :
arriv en n dachage, more se termine, contrairement less. L o il nest pas
vraiment gnant de relancer more sur un chier, cela lest beaucoup plus lorsquil
sagit de relancer un enchanement de commandes, qui peut utiliser des ressources
non ngligeables.
Pour terminer sur le sujet, essayez, si vous ne lavez pas dj fait, dutiliser more
ou less derrire un tuyau :
$ ps aux | more
$ ps aux | less
Vous pouvez constater quon peut bien naviguer dans lachage au moyen des
touches du clavier quon utilise habituellement avec ces commandes. Mais, puisque
lentre standard de more ou less est raccorde la sortie standard de ps grce au
tuyau, il est normalement impossible ces deux commande daccder au clavier...
Pas par leur entre standard, en tout cas. Mais more et less ont plus dun tour
dans leur sac. Elles accdent en fait au clavier grce au chier spcial /dev/tty qui est
toujours raccord au terminal, redirection ou pas. Lire dans ce chier spcial permet
daccder au clavier, crire dedans lcran.
9.5.2 La commande grep
La commande grep (pour global regular expression print) recherche le motif qui
lui est pass en premier argument dans les chiers dont les noms lui sont passs dans
les arguments suivants ou, en leur absence, sur lentre standard (puisquil sagit dun
ltre) et, par dfaut, ache chaque ligne contenant ce motif.
Le motif doit tre fourni sous la forme dune expression rationnelle. Les expres-
sions rationnelles sont trs souvent utilises sous UNIX pour le traitement des chanes
185
Chapitre 9. Commandes, processus et redirections
de caractres. Elles seront tudies au paragraphe 9.5.2.1. Le paragraphe 9.5.2.3
page 189 prsentera ensuite quelques options de la commande grep.
Le lecteur curieux pourra se reporter louvrage suivant de la bibliographie pour
approfondir ses connaissances :
grep Pocket Reference [12]
http://fr.wikipedia.org/wiki/Grep
9.5.2.1 Les expressions rationnelles
Une expression rationnelle (regular expression en anglais) est une chane de carac-
tres permettant de dcrire un ensemble de chanes de caractres.
Pour cela, on utilise un langage donnant une signication particulire certains
caractres. Ceux-ci sont indiqus dans le tableau 9.1.
Expressions lmentaires
. nimporte quel caractre
[ . . . ] liste ou intervalle de caractres
[^ . . . ] ngation dune liste ou dun intervalle de caractres
^ dbut de ligne
$ n de ligne
Oprateurs de rptition (sappliquent lexpression prcdente)
? zro ou une fois
*
zro fois ou plus
+ une fois ou plus
{n} exactement n fois
{n,} n fois ou plus
{n,m} entre n et m fois
Choix et groupement
| choix entre plusieurs lments
( . . . ) groupement
Table 9.1 Caractres utilisables dans une expression rationnelle.
Les expressions rationnelles les plus simples sont celles nutilisant aucun des
caractres du tableau 9.1. Elles reprsentent la chane de caractre exacte quelle
contiennent. Ainsi, lexpression rationnelle toto correspond la chane de caractres
toto et elle seule.
Le point . permet de dsigner nimporte quel caractre. Ainsi, lexpression
rationnelle e.cu.er correspond toute chane de caractres commenant par un e
186
9.5. uelques ltres usuels
suivi dun caractre quelconque suivi de cu suivi dun caractre quelconque suivi
de er , comme par exemple excuser .
Si lon souhaite quelque chose de plus prcis, il est possible de se restreindre
une liste ou un intervalle (dans lordre alphabtique) de caractres en lindiquant
entre crochets [ . . . ]. Lexpression entre crochets correspond un et exactement un
caractre gurant dans la liste ou lintervalle. Ainsi, lexpression rationnelle pi[pr]e
correspond aux chanes de caractres pipe et pire et lexpression rationnelle
ra[r-t]e correspond aux chanes de caractres rare , rase et rate .
La signication dune expression entre crochets est inverse lorsque le premier
caractre de cette expression est un accent circonexe ^. Dans ce cas, lexpression
correspond un et exactement un caractre ne gurant pas dans la liste ou lintervalle.
Ainsi, lexpression rationnelle [^ms]otte correspond la chane de caractres botte ,
entre autres, mais pas aux chanes de caractres motte et sotte .
Pour faire gurer un crochet fermant ] dans une expression entre crochets, il faut
le placer en premier. De mme, pour faire gurer un accent circonexe ^, il faut le
placer nimporte o sauf en premier. Enn, pour faire gurer un tiret -, il faut le
placer en dernier.
Il est possible dindiquer que lexpression rationnelle doit gurer en dbut de
ligne, grce laccent circonexe ^, qui doit tre le premier caractre de lexpression
rationnelle, ou quelle doit gurer en n de ligne, grce au symbole dollar $, qui doit
tre le dernier caractre de lexpression rationnelle. Ainsi, lexpression rationnelle
^toto corespond la chane de caractres toto uniquement si elle se trouve en
dbut de ligne et lexpression rationnelle toto$ correspond la chane de caractres
toto uniquement si elle se trouve en n de ligne.
Des oprateurs de rptition peuvent sappliquer llment qui les prcde.
Ainsi, le point dinterrogation? indique que llment prcdent peut gurer zro
ou une fois, lastrisque
*
indique que llment prcdent peut gurer zro fois
ou plus et le signe plus + indique que llment prcdent peut gurer une fois ou
plus. Il est possible de contrler plus nement le nombre de rptitions grce une
expression entre accolades. Par exemple, lexpression rationnelle coch?on correspond
aux chanes de caractres cocon et cochon , lexpression rationnelle [acgt]
*
correspond nimporte quelle squence dADN, ventuellement vide, lexpression
rationnelle [acgt]+ correspond nimporte quelle squence dADN contenant au
moins un caractre et lexpression rationnelle [acgu]{3} correspond un codon
dARN messager.
La barre verticale | propose le choix entre plusieurs lments. Ainsi, lexpression
rationnelle fromage|dessert|rien correspond aux chanes de caractres fromage ,
dessert et rien .
Il est parfois ncessaire dutiliser des parenthses ( . . . ) an de grouper certains
lments dune expression rationnelle, souvent dans le but de leur appliquer un
oprateur de rptition. Ainsi, lexpression rationnelle (GA|BU|ZO|MEU)+ permet de
parler Shadok.
187
Chapitre 9. Commandes, processus et redirections
Enn, il est possible dinhiber la signication particulire des caractres du
tableau 9.1 page 186 en les faisant prcder dune barre oblique inverse \. Ainsi,
lexpression rationnelle \[1\] correspond la chane de caractres [1] .
Le lecteur curieux pourra se reporter aux ouvrages suivants de la bibliographie
pour approfondir ses connaissances :
Mastering Regular Expressions [17]
Regular Expressions Cookbook [18]
Regular Expression Pocket Reference [28]
http://fr.wikipedia.org/wiki/Expression
_
rationnelle
9.5.2.2 Utilisation dune expression rationnelle avec la commande grep
Certains des caractres utilisables dans une expression rationnelle ayant galement
une signication particulire pour linterprteur de commandes, il convient de
les inhiber pour ce dernier en faisant prcder chacun deux dune barre oblique
inverse ou en entourant lexpression rationnelle dune paire dapostrophes (les
guillemets ne conviennent pas dans ce cas) comme vu au paragraphe 8.6 page 135.
Lutilisation dune paire dapostrophes tant plus claire, cette mthode est vivement
recommande :
$ grep ^[acgt]
*
$ fichier
Par ailleurs, la syntaxe des expressions rationnelles dcrite au paragraphe 9.5.2.1
page 186 correspond aux expressions rationnelles dites tendues. Historiquement,
les premires expressions rationnelles, dites simples, avaient une syntaxe plus lourde,
dans laquelle on utilisait \?, \+, \{, \|, \(, \) au lieu respectivement de ?, +, {, |, ( et
).
Par dfaut, la commande grep sattend ce que son premier argument soit une
expression rationnelle simple. Sil sagit dune expression rationnelle tendue, il faut
utiliser loption -E de la commande grep :
$ grep -E ^[acgt]+$ fichier
ou, ce qui revient au mme, la commande egrep (pour extended grep) :
$ egrep ^[acgt]+$ fichier
188
9.5. uelques ltres usuels
9.5.2.3 uelques options de la commande grep
Hormis loption -E, la commande grep dispose de nombreuses options. Nous
allons tudier les plus utiles.
Loption -i de la commande grep permet dignorer la dirence entre majuscules
et minuscules lors de la comparaison entre lexpression rationnelle et le contenu du
chier :
$ grep -i toto fichier
le mot toto en minuscules
le mot TOTO en majuscules
Loption -l de la commande grep permet dacher non pas les lignes correspon-
dant lexpression rationnelle mais les noms des chiers les contenant :
$ grep -l toto fichier1 fichier2 fichier3
fichier2
Loption -n de la commande grep prxe chaque ligne correspondant lexpres-
sion rationnelle de son numro suivi dun deux-points :
$ grep -n toto fichier
2:le mot toto dans le fichier
4:encore le mot toto dans le fichier
Loption -v de la commande grep inverse la signication de la comparaison avec
lexpression rationnelle. On ache donc les lignes ne lui correspondant pas :
$ grep -v toto fichier
tout le fichier
sauf les lignes contenant TOTO (en minuscules)
9.5.3 La commande awk
Le langage de programmation AWK a t conu pour le traitement de donnes tex-
tuelles. Il tire son nom des patronymes de ses auteurs, Alfred Aho, Peter Weinberger
et Brian Kernighan.
La commande awk permet dutiliser le langage de programmation AWK (la
commande scrit en minuscules, le langage de programmation en majuscules).
Son premier argument est une chane de caractres contenant le programme
excuter sur les chiers dont les noms lui sont passs dans les arguments suivants ou,
en leur absence, sur lentre standard (puisquil sagit dun ltre).
189
Chapitre 9. Commandes, processus et redirections
Un programme en langage AWK est une suite dinstructions de la forme :
condition {action}
La condition peut utiliser des tests de comparaison ou une expression rationnelle,
quon crit alors entre deux barres obliques : /expression rationnelle/.
Par ailleurs, il existe deux conditions particulires :
BEGIN, dont laction correspondante est excute au dbut du programme ;
END, dont laction correspondante est excute la n du programme.
La forme gnrale dun programme en langage AWK est donc :
BEGIN {action} condition {action} ... END {action}
La commande awk commence par excuter laction associe la condition BEGIN,
si elle existe. Puis elle lit les chiers dont les noms lui sont passs en arguments ou
lentre standard, ligne par ligne. Si la premire condition du programme est vrie
pour la ligne qui vient dtre lue, laction correspondante est excute. Puis on passe
la condition suivante et ainsi de suite. Enn, laction associe la condition END, si
elle existe, est excute.
Il est possible davoir dans le programme des actions sans conditions. Dans ce cas,
ces actions sont systmatiquement excutes pour chaque ligne.
Les accolades ayant une signication particulire pour linterprteur de com-
mandes, de mme que certains des caractres utiliss dans les expressions rationnelles
et dans les actions, il convient dentourer systmatiquement les programmes en
langage AWK dune paire dapostrophes.
Pour illustrer lutilisation de la commande awk, nous allons reprendre lexemple
du paragraphe 9.4.5 page 179 visant dterminer lidentiant du processus xeyes
mais en utilisant exclusivement awk.
En premire approche, on peut utiliser /xeyes/ comme condition an de trouver
les lignes contenant cette expression rationnelle dans la sortie standard de ps ux et
les acher en utilisant laction print, qui ache la ligne en cours de traitement (si la
condition est remplie) :
$ ps ux | awk /xeyes/ {print}
babafou 1664 0.0 0.1 7456 2636 pts/1 Ss 14:18 0:00 xeyes
babafou 3351 0.0 0.1 2868 1136 pts/1 S+ 22:30 0:00 awk xeyes {print}
Comme prcdemment, il faut liminer la ligne correspondant la commande
awk. On peut utiliser pour cela une condition qui sera vrie pour cette ligne,
savoir lexpression rationnelle /awk/ et lui associer laction next, qui permet dignorer
les autres conditions et de passer au traitement de la ligne suivante :
190
9.5. uelques ltres usuels
$ ps ux | awk /awk/ {next} /xeyes/ {print}
babafou 1664 0.0 0.1 7456 2636 pts/1 Ss 14:18 0:00 xeyes
Lordre des instructions est important. Linstruction /awk/ {next} doit se trou-
ver avant linstruction /xeyes/ {print} pour ignorer la ligne correspondant la
commande awk.
Plutt que dacher toute la ligne, on peut se contenter du seul identiant de
processus. En eet, la commande awk est capable de dcouper une ligne de texte en
champs (les champs tant spars par des espaces) et de permettre laccs chaque
champ depuis le programme. Ainsi, $1 reprsente le premier champ, $2 le deuxime
champ, etc.
Lidentiant de processus correspondant au deuxime champ, on peut donc faire :
$ ps ux | awk /awk/ {next} /xeyes/ {print $2}
1664
Il est galement possible de limiter lapplication de lexpression rationnelle un
champ particulier. Le nom de la commande tant le onzime champ de la sortie
standard de la commande ps, on peut galement faire :
$ ps ux | awk $11 ~ /xeyes/ {print $2}
1664
Loprateur ~ permet de restreindre la comparaison de lexpression rationnelle
qui le suit au champ qui le prcde. Ceci permet de se passer de llimination de la
ligne correspondant la commande awk.
Enn, dans la mesure o lexpression rationnelle napporte rien de particulier,
puisquil ne sagit que dune chane de caractres xe, on peut mme faire simplement
un test dgalit entre le onzime champ et la chane de caractres xeyes :
$ ps ux | awk $11 == "xeyes" {print $2}
1664
Lorsque les programmes en langage AWK deviennent volumineux, il est plus
simple de les saisir dans un chier et de demander la commande awk dexcuter le
programme contenu dans ce chier.
Considrons le chier de donnes cave.txt suivant :
191
Chapitre 9. Commandes, processus et redirections
Alsace Riesling 2 2005 blanc Joseph Gsell
Alsace Riesling 4 2002 blanc Victor Hertz
Bordeaux Cadillac 6 2004 blanc Chteau la Clyde
Bordeaux Mdoc 3 2000 rouge Chteau dEscot
Bordeaux Pomerol 2 2003 rouge Chteau Pierhem
Bourgogne Aloxe-Corton 4 1998 rouge Dubois Bernard & fils
Bourgogne Montagny 6 2007 blanc Jean-Pierre Berthenet
Bourgogne Volnay 6 2005 rouge Pascal Laboureau
Languedoc Cabards 4 2002 rouge Chteau Ventenac
Loire Sancerre 1 2007 blanc Domaine Grard Fiou
Sud-Ouest Gaillac 1 2005 rouge Chteau Adlade
Sud-Ouest Madiran 3 2004 rouge Cru du Paradis
Sud-Ouest Monbazillac 7 2003 blanc Chteau le Fag
Il reprsente linventaire dune cave vin. Chaque ligne correspond un ensemble
de bouteilles identiques dont les champs sont :
1. le vignoble ;
2. lappellation ;
3. le nombre de bouteilles ;
4. le millsime ;
5. la couleur ;
6. (et champs suivants) le producteur.
Le programme en langage AWK reprsent dans le listage 9.1 page suivante permet
danalyser ce chier an den extraire certaines informations, savoir le nombre de
bouteilles par vignoble et par couleur. On pourrait bien entendu envisager dautres
traitements sur ce chier.
Les instructions des lignes 6 10 permettent dtablir le nombre de bouteilles
par vignoble. On utilise cet eet une variable correspondant au vignoble ponyme
et, en cas de correspondance, on lui ajoute le troisime champ, cest--dire le nombre
de bouteilles (les variables sont cres automatiquement et initialises zro).
Les instructions des lignes 12 et 13 font de mme pour le nombre de bouteilles
par couleur.
Enn, les instructions des lignes 16 25, correspondant la condition END,
permettent dacher les informations recueillies. Remarquez que, lorsque laction
contient plusieurs instructions, celles-ci doivent tre termines par un point-virgule.
Loption -f de la commande awk, suivie dun nom de chier, permet dexcuter
le programme en langage AWK contenu dans ce chier.
Si le programme du listage 9.1 page ci-contre est contenu dans le chier cave.awk,
on peut donc lappliquer linventaire de la cave contenu dans le chier cave.txt
ainsi :
192
9.5. uelques ltres usuels
1 BEGIN {
2 print "Ma cave" ;
3 print "" ;
4 }
5
6 /^Alsace/ {alsace += $3}
7 /^Bordeaux/ {bordeaux += $3}
8 /^Bourgogne/ {bourgogne += $3}
9 /^Languedoc/ {languedoc += $3}
10 /^Loire/ {loire += $3}
11 /^Sud-Ouest/ {sud
_
ouest += $3}
12
13 /blanc/ {blanc += $3}
14 /rouge/ {rouge += $3}
15
16 END {
17 print "Nombre de bouteilles par vignoble" ;
18 print "Alsace " alsace ;
19 print "Bordeaux " bordeaux ;
20 print "Bourgogne " bourgogne ;
21 print "Languedoc " languedoc ;
22 print "Loire " loire ;
23 print "Sud-Ouest " sud
_
ouest ;
24 print "" ;
25 print "Nombre de bouteilles par couleur" ;
26 print "blanc " blanc ;
27 print "rouge " rouge ;
28 }
Listage 9.1 Exemple de programme en langage AWK.
193
Chapitre 9. Commandes, processus et redirections
$ awk -f cave.awk cave.txt
Ma cave
Nombre de bouteilles par vignoble
Alsace 6
Bordeaux 11
Bourgogne 16
Languedoc 4
Loire 1
Sud-Ouest 11
Nombre de bouteilles par couleur
blanc 26
rouge 23
Nous nirons pas plus loin dans la description du langage de programmation
AWK, dont ltude dtaille dpasse le cadre de ce cours. Le lecteur curieux pourra
se reporter aux ouvrages suivants de la bibliographie pour approfondir ses connais-
sances :
The AWK Programming Language [9]
Eective awk Programming [22]
sed & awk [15]
sed & awk Pocket Reference [23]
http://fr.wikipedia.org/wiki/Awk
http://en.wikibooks.org/wiki/An
_
Awk
_
Primer
9.5.4 La commande sed
Un diteur de texte, tel que ceux tudis dans les chapitres 5 page 53 et 6 page 67,
est un logiciel interactif, qui cre ou modie un chier texte en fonction des actions
successives de lutilisateur.
Lorsque les modications apporter un chier texte sont connues lavance et
doivent tre appliques de manire rptitive ou lorsque des modications identiques
doivent tre appliques plusieurs chiers texte, lutilisation dun diteur de texte
interactif peut savrer fastidieuse. Il est alors prfrable dutiliser un diteur de texte
non interactif.
La commande sed (pour stream editor) est un diteur de texte non interactif,
utilisable en tant que ltre. Elle lit ligne par ligne les chiers dont les noms lui sont
passs en arguments ou, en leur absence, son entre standard et, pour chaque ligne,
lui applique une ou plusieurs actions. Le rsultat est ach au fur et mesure sur
la sortie standard, quon peut rediriger vers un chier pour le conserver, ou fournir
194
9.5. uelques ltres usuels
une autre commande au moyen dun tuyau pour lui appliquer des traitements
supplmentaires.
Lutilisation la plus courante de la commande sed est le remplacement de mots
dans un texte. Ainsi, la commande suivante remplace tous les toto du chier entree
par des tata et le rsultat est redirig vers le chier sortie :
$ sed s/toto/tata/g entree > sortie
Le premier argument de la commande sed indique, lorsquil ny en a quune,
laction raliser. Les arguments suivants sont les noms des chiers traiter. En leur
absence, la commande sed lit son entre standard.
Dans lexemple prcdent, laction raliser est s/toto/tata/g. Ceci signie quil
faut remplacer (s pour substitute) chaque mot toto par tata de manire globale (en
raison du g la n de laction). Sans ce g, seul le premier toto de chaque ligne serait
remplac par tata. Les composants de laction (s, toto, tata et g) sont spars les
uns des autres par des barres obliques / (sans espaces).
Le mot remplacer nest dailleurs pas un mot tout simple mais une expression ra-
tionnelle (voir le paragraphe 9.5.2.1 page 186). Comme indiqu au paragraphe 9.5.2.2
page 188, il est ncessaire de prendre des prcautions lorsquon utilise une expres-
sion rationnelle contenant des caractres ayant une signication particulire pour
linterprteur de commandes. Dans ce cas, on entoure habituellement laction dune
paire dapostrophes. Par ailleurs, la commande sed utilise par dfaut une expression
rationnelle simple. Sil sagit dune expression rationnelle tendue, il faut utiliser
loption -E. Par exemple, pour remplacer les toto ou titi par tata, on peut faire :
$ sed -E s/toto|titi/tata/g entree > sortie
Lorsque plusieurs actions sont appliquer au texte, chacune doit suivre lop-
tion -e de la commande sed. Ainsi, la commande prcdente peut galement tre
dcompose en deux actions :
$ sed -e s/toto/tata/g -e s/titi/tata/g entree > sortie
Si de nombreuses actions sont appliquer au texte ou si lon souhaite les conserver
an de les rutiliser, il est possible de les spcier dans un chier, ce qui est plus
pratique que de les indiquer sur la ligne de commande.
Considrons le chier actions.sed suivant, qui contient les actions eectuer,
une action par ligne :
s/toto/tata/g
s/titi/tata/g
195
Chapitre 9. Commandes, processus et redirections
La commande sed peut tre pilote par celui-ci en utilisant loption -f suivie du
nom du chier :
$ sed -f actions.sed entree > sortie
Nous nirons pas plus loin dans la description de la commande sed, dont ltude
dtaille dpasse le cadre de ce cours. Le lecteur curieux pourra se reporter aux
ouvrages suivants de la bibliographie pour approfondir ses connaissances :
sed & awk [15]
sed & awk Pocket Reference [23]
http://fr.wikipedia.org/wiki/Stream
_
Editor
9.5.5 La commande sort
La commande sort permet de trier selon divers critres les lignes dun texte
organis en colonnes. Elle est utilisable en tant que ltre. Elle lit les lignes de texte
provenant des chiers dont les noms lui sont passs en arguments ou, en leur absence,
de son entre standard et ache sur sa sortie standard le rsultat du tri de ces lignes.
Utilise sans option, le critre de tri de la commande sort est lordre lexicogra-
phique de la premire colonne de chaque ligne, les colonnes tant dlimites par des
espaces :
$ cat toto
cc bb
bb aa
aa zz
$ sort toto
aa zz
bb aa
cc bb
Si lon souhaite que le tri seectue par rapport une autre colonne, il faut utiliser
loption -k (pour key, ceci correspond la colonne selon laquelle seectue le tri)
suivie du numro de cette colonne. Ainsi, pour trier le chier de lexemple prcdent
en fonction de sa deuxime colonne, on peut faire :
$ sort -k 2 toto
bb aa
cc bb
aa zz
196
9.5. uelques ltres usuels
Lordre lexicographique place les lettres majuscules avant les lettres minuscules :
$ cat toto
zz
MM
BB
aa
$ sort toto
BB
MM
aa
zz
Loption -f permet dignorer cette distinction :
$ sort -f toto
aa
BB
MM
zz
Loption -n (pour numeric) permet dindiquer que le tri doit tre fait selon lordre
numrique :
$ cat toto
51
1664
33
$ sort -n toto
33
51
1664
Le tri du mme chier selon lordre lexicographique donne :
$ sort toto
1664
33
51
197
Chapitre 9. Commandes, processus et redirections
Par dfaut, les colonnes composant le texte sont censes tre spares par des
espaces. Loption -t, suivie dun caractre, permet dutiliser ce caractre comme
sparateur. Loption -t est gnralement utilise en conjonction avec loption -k :
$ cat toto
cc:bb
bb:aa
aa:zz
$ sort -k 2 -t : toto
bb:aa
cc:bb
aa:zz
Enn, loption -r (pour reverse) permet dinverser lordre du tri. Ainsi, en
reprenant le chier de lexemple prcdent, on peut faire :
$ sort -r -k 2 -t : toto
aa:zz
cc:bb
bb:aa
Une utilisation classique de la commande sort est de trier lachage dune autre
commande, qui nore aucune possibilit de tri, au moyen dun tuyau. Par exemple,
lachage de la commande du, page 143, peut tre tri ainsi selon le volume total
occup par lensemble du contenu de chaque rpertoire (tri numrique au moyen de
loption -n par rapport la premire colonne puisque loption -k nest pas utilise),
les rpertoires les plus volumineux tant donc clairement visibles en n dachage :
$ du -k | sort -n
34 ./rep3/rep5
338 ./rep3/rep4
390 ./rep3
546 ./rep1
2866 ./rep2
7294 .
http://en.wikipedia.org/wiki/Sort
_
(Unix)
198
9.5. uelques ltres usuels
9.5.6 La commande wc
La commande wc (pour word count) permet dacher le nombre de lignes, de
mots (les mots tant spars les uns des autres par des espaces) et doctets des chiers
dont les noms lui sont passs en arguments ou, en leur absence, de son entre standard
(puisquil sagit dun ltre) :
$ wc toto
16687 79550 610080 toto
La commande wc ache dans lordre :
1. le nombre de lignes du chier (ici, 16687) ;
2. le nombre de mots du chier (ici, 79550) ;
3. le nombre doctets du chier (ici, 610080), dont la valeur est identique la
taille du chier telle quache par ls -l.
Lorsque plusieurs noms de chiers lui sont passs en arguments, la commande wc
ache ces informations pour chacun des chiers, suivies de leur cumul :
$ wc tata titi tutu
15 29 261 tata
16 13 67 titi
5 25 187 tutu
36 67 515 total
Utilise en dernire commande dun tuyau, la commande wc nache que les
informations, sans nom de chier (qui, dans ce contexte, nexiste pas) :
$ ps aux | wc
50 589 3944
Bien souvent, seul le nombre de lignes a un intrt et loption -l de la commande
wc permet de nacher que lui :
$ ps aux | wc -l
50
Dans la mesure o de nombreuses commandes ont un achage indiquant un
rsultat par ligne (un chier, un processus, etc.), on utilise souvent wc -l pour
compter ces lignes. Ainsi, la commande de lexemple prcdent permet de compter
199
Chapitre 9. Commandes, processus et redirections
le nombre de processus (auquel il ne faut pas oublier de retrancher 1 en raison de la
premire ligne de lachage de ps indiquant la signication de chaque colonne).
De mme, loption -w de la commande wc permet dacher le nombre de mots.
Enn, loption -c de la commande wc permet dacher le nombre doctets. Avec
de nombreux codages du texte, il sagit galement du nombre de caractres mais pas
avec le codage UTF-8 (voir le paragraphe 4.3.3 page 48). Loption -m de la commande
wc permet alors dacher le nombre de caractres. Par exemple, avec un chier toto
cod en UTF-8 :
$ cat toto
pt
$ wc -c toto
7 toto
$ wc -m toto
5 toto
Le caractre supplmentaire ( pt compte quatre caractres et six octets lors-
quil est cod en UTF-8) est le caractre de retour la ligne, qui nest pas visible mais
nanmoins prsent dans le chier et comptabilis par la commande wc.
Toute ces options peuvent tre combines, lexception des options -c et -m,
qui ne peuvent pas tre utilises ensemble. La combinaison -lwc correspond au
comportement sans option de la commande wc.
http://fr.wikipedia.org/wiki/Wc
_
(Unix)
9.6 Gestion des longs processus
Les commandes tudies jusqu prsent sexcutent en un temps trs court mais il
existe galement des commandes qui ralisent gnralement de lourds traitements
de donnes tels que des calculs scientiques qui sexcutent en plusieurs heures,
plusieurs jours, voire plusieurs semaines.
Leur gestion demande des traitements particuliers an de permettre leur droule-
ment dans les meilleures conditions.
9.6.1 La commande nohup
Lorsquon quitte linterprteur de commandes au moyen de la commande exit
ou quon termine la session graphique, tous les processus lancs par lutilisateur sont
arrts par le systme dexploitation.
Si lon doit lancer une commande ayant un long temps dexcution, cela pose
problme car il faut donc rester connect sur lordinateur sur lequel on la lance.
200
9.6. Gestion des longs processus
La commande nohup (pour no hang-up) permet de lancer un processus en lman-
cipant, cest--dire en le rendant totalement indpendant de linterprteur de com-
mandes ou de la session qui ont contribu son lancement :
$ nohup commande &
La commande nohup est suivie de la commande lancer. Dans lexemple prc-
dent, celle-ci est reprsente par commande, avec ventuellement ses options et ses
arguments (qui ne sont pas indiqus dans lexemple an de ne pas lalourdir). Le
tout est lanc en arrire-plan pour pouvoir rcuprer la main dans linterprteur de
commandes.
Si elles ne sont pas rediriges explicitement, la sortie standard et la sortie derreur
standard sont rediriges par nohup vers le chier nohup.out.
Si lon souhaite les rediriger vers deux chiers dirents ou rediriger lentre stan-
dard depuis un chier, on peut utiliser tous les mcanismes tudis au paragraphe 9.4
page 174 :
$ nohup commande < entree > sortie 2> erreur &
Pour manciper un processus, il faut absolument le lancer avec la commande
nohup. Il nexiste pas de moyen dmanciper un processus sil a t lanc autrement.
http://fr.wikipedia.org/wiki/Nohup
9.6.2 Les commandes nice et renice
Sous UNIX, il est possible de modier la priorit dun processus. Celle-ci est
dnie au moyen dun nombre compris entre 20 et +19. Cest celui quache la
commande top (voir le paragraphe 9.3.4 page 169) dans la colonne NI. La priorit
par dfaut dun processus est de 0. Plus la priorit est ngative, plus le processus
sexcutera rapidement. Plus la priorit est positive, plus le processus sexcutera
lentement.
La priorit dun processus inue sur la faon dont il est trait par lordonnanceur
(voir le paragraphe 9.3.1 page 164). Selon lalgorithme utilis par lordonnanceur, un
processus plus prioritaire, cest--dire ayant une priorit ngative, disposera de quanta
plus longs ou sera ordonnanc plus souvent et ce dautant plus que sa priorit sera
ngative. linverse, un processus moins prioritaire, cest--dire ayant une priorit
positive, disposera de quanta moins longs ou sera ordonnanc moins souvent et ce
dautant moins que sa priorit sera positive.
videmment, la priorit na dinuence sur la dure dexcution dun processus
que sil nest pas le seul utiliser le microprocesseur, auquel cas il sera ordonnanc
201
Chapitre 9. Commandes, processus et redirections
systmatiquement. Pour que la priorit joue son rle, il faut quau minimum deux
processus utilisent rgulirement le microprocesseur.
An dviter quun utilisateur nabuse de cette possibilit en lanant tous ses
processus la priorit 20, seul ladministrateur du systme peut utiliser les priorits
ngatives. Les utilisateurs ont donc seulement accs aux priorits positives, cest--dire
quils ne peuvent que ralentir leurs processus.
uel est lintrt de ralentir ses processus ? Comme le nom de la commande nice
lindique, il sagit dtre gentil avec les autres utilisateurs dun systme informatique.
En temps normal, on cherche obtenir les rsultats de ses processus le plus rapi-
dement possible mais il existe des cas o lon peut se permettre de les ralentir. Par
exemple, lorsquon sabsente pour une dure plus ou moins longue (dplacement,
congs, etc.), on peut ralentir les processus dont on sait quils vont se terminer avant
son retour ou lancer avec une priorit plus faible de nouveaux processus. Un systme
informatique partag par plusieurs catgories dutilisateurs peut galement imposer
des priorits direntes pour leurs calculs (les tudiants ayant une priorit plus faible
que celle des chercheurs, par exemple).
La commande nice permet de lancer un processus en modiant sa priorit :
$ nice -n 5 commande &
La commande nice sutilise avec loption -n suivie de la priorit donner au pro-
cessus et de la commande lancer, avec ventuellement ses options et ses arguments
(qui ne sont pas indiqus dans lexemple an de ne pas lalourdir). Le tout est lanc
en arrire-plan pour pouvoir rcuprer la main dans linterprteur de commandes.
La commande nice ayant pour but de lancer des processus ayant un long temps
dexcution (puisque rduire la priorit dun processus se terminant rapidement
na pas de sens), on lutilise typiquement couple avec la commande nohup (voir le
paragraphe 9.6.1 page 200) et en utilisant les mcanismes de redirection tudis au
paragraphe 9.4 page 174 :
$ nohup nice -n 5 commande < entree > sortie 2> erreur &
La commande renice permet de modier la priorit dun ou de plusieurs proces-
sus en cours dexcution. Elle prend en arguments la priorit aecter et le ou les
identiants des processus concerns :
$ renice 5 1664
1664: old priority 0, new priority 5
Une fois la priorit diminue, il nest plus possible de laugmenter (seul ladmi-
nistrateur de systme le peut) :
202
9.6. Gestion des longs processus
$ renice 0 1664
renice: 1664: setpriority: Permission denied
En revanche, il est possible de la diminuer davantage, si besoin est.
http://fr.wikipedia.org/wiki/Nice
_
(Unix)
9.6.3 La commande screen
La commande nohup a un dfaut, elle ne permet pas dmanciper un processus en
pouvant continuer dinteragir directement avec lui par la suite. La redirection des
entre et sortie standards est la seule forme dinteraction possible avec le processus.
La commande screen permet de lancer un interprteur de commandes, dinteragir
avec lui, puis de lmanciper lorsque ncessaire, avec toute commande lance depuis
celui-ci, et den reprendre le contrle plus tard.
Un exemple dutilisation de la commande screen permettra de mieux en com-
prendre le fonctionnement :
$ screen
Une fois lance, la commande screen excute un nouvel interprteur de com-
mandes, quon peut utiliser normalement mais aussi pour lancer une commande
ayant un long temps dexcution.
tout moment, la combinaison de touches C-a C-d (la documentation de la
commande screen utilise le mme principe de notation quEmacs) permet de dtacher
lensemble form par la commande screen, linterprteur de commandes quelle
a lanc et tout processus excut depuis celui-ci du terminal, ce qui quivaut
lmanciper. On revient alors linterprteur de commandes qui a servi excuter la
commande screen.
Cette dernire continue fonctionner de manire mancipe mais son achage
est pour le moment inaccessible. On peut alors fermer sa session ou simplement faire
autre chose.
Pour reprendre le contrle de la commande screen, il faut, si on la quitt, se
reconnecter sur lordinateur o on la lance (physiquement ou distance, voir le
paragraphe 11.2 page 224) et utiliser la commande screen avec loption -r (pour
resume) :
$ screen -r
203
Chapitre 9. Commandes, processus et redirections
On se retrouve alors dans linterprteur de commandes lanc prcdemment par
la commande screen et lon peut interagir avec lui normalement. On pourra par
la suite dtacher nouveau la commande screen au moyen de la combinaison de
touches C-a C-d puis en reprendre le contrle avec screen -r et ainsi de suite.
Il est possible de lancer plusieurs commandes screen. Si plus de deux dentre elles
sont dtaches, screen -r en ache la liste :
$ screen -r
There are several suitable screens on:
1664.pts-1.cafe01 (Detached)
3351.pts-1.cafe01 (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Il faut ensuite indiquer lidentiant de processus de la commande screen dont on
souhaite reprendre le contrle :
$ screen -r 1664
Savoir quel identiant de processus correspond quelle commande screen nest
pas vident. Aussi est-il possible dattribuer un nom chaque session lance par la
commande screen au moyen de loption -S (pour session) suivie du nom choisi. Au
lieu de lancer la commande screen tout simplement, on fait donc :
$ screen -S session1
On peut alors travailler normalement puis dtacher lensemble. On peut ensuite
lancer dautres commandes screen sur le mme principe puis les dtacher. Les noms
attribus chaque session gurent maintenant dans lachage de screen -r :
$ screen -r
There are several suitable screens on:
5088.session1 (Detached)
5613.session2 (Detached)
5351.session3 (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
et lon peut reprendre le contrle dune session particulire en indiquant son nom
plutt que son identiant de processus :
$ screen -r session2
204
9.6. Gestion des longs processus
uitter linterprteur de commandes lanc par la commande screen au moyen
de la commande exit permet de quitter la commande screen elle-mme.
La facult de pouvoir lancer plusieurs interprteurs de commandes depuis le
mme terminal fait que la commande screen constitue un multiplexeur de terminaux.
http://www.gnu.org/software/screen/
http://fr.wikipedia.org/wiki/GNU
_
Screen
http://fr.wikipedia.org/wiki/Multiplexage
9.6.4 La commande tmux
La commande tmux est galement un multiplexeur de terminaux et sutilise dans
le mme esprit que la commande screen. Moins rpandue que cette dernire, elle
est en particulier fournie avec linstallation de base de NetBSD et dOpenBSD et est
disponible sur dautres UNIX.
$ tmux
Comme la commande screen, la commande tmux excute un nouvel interprteur
de commandes.
Il est possible de dtacher lensemble grce la combinaison de touches C-b d ou
en excutant la commande tmux avec largument detach :
$ tmux detach
Pour reprendre le contre de la commande tmux, on lutilise avec largument
attach :
$ tmux attach
Il est possible dacher la liste des commandes tmux en cours dexcution en
faisant tmux ls :
$ tmux ls
0: 1 windows (created Thu Mar 17 10:49:42 2011) [80x23]
1: 1 windows (created Thu Mar 17 14:59:31 2011) [80x23]
Chaque ligne correspond une commande tmux en cours dexcution. Chacune
est repre par un identiant de session qui gure en dbut de ligne (il sagit du
nombre avant le deux-points).
Pour reprendre le contrle dune commande tmux particulire, il faut indiquer
son identiant de session au moyen de loption -t (pour target) :
205
Chapitre 9. Commandes, processus et redirections
$ tmux attach -t 0
Savoir quel identiant de processus correspond quelle commande tmux nest
pas vident. Aussi est-il possible dattribuer un nom chaque session lance par la
commande tmux au moyen de largument new suivi de loption -s (pour session) et du
nom choisi. Au lieu de lancer la commande tmux tout simplement, on fait donc :
$ tmux new -s session1
On peut alors travailler normalement puis dtacher lensemble. On peut ensuite
lancer dautres commandes tmux sur le mme principe puis les dtacher. Les noms
attribus chaque session gurent maintenant dans lachage de tmux ls :
$ tmux ls
session1: 1 windows (created Tue May 24 15:42:53 2011) [80x23]
session2: 1 windows (created Tue May 24 15:43:13 2011) [80x23]
session3: 1 windows (created Tue May 24 15:43:15 2011) [80x23]
et lon peut reprendre le contrle dune session particulire en indiquant son nom
plutt que son identiant de processus :
$ tmux attach -t session2
uitter linterprteur de commandes lanc par la commande tmux au moyen de
la commande exit permet de quitter la commande tmux elle-mme.
http://tmux.sourceforge.net/
http://fr.wikipedia.org/wiki/Multiplexage
206
10
Impression
I
mprimer, cest mal. Cest mal parce que a se fait sur des restes darbres
morts. Cest un peu moins mal lorsque le papier sur lequel on imprime
est recycl. Mais cest tout de mme mal parce que, bien souvent, ce
quon imprime nit trs rapidement dans une poubelle (rarement jaune).
Malgr la tendance au tout numrique, on na jamais consomm autant de papier
quaujourdhui. Et sil faut rprimer ses envies dimprimer, il est des situations
o limpression est un mal ncessaire. Nous allons tudier comment imprimer de
manire responsable, en vriant ltat de limprimante avant toute impression, en
supprimant dventuels travaux dimpression inutiles et en optimisant lutilisation
du papier.
10.1 Nommage des imprimantes
Sous UNIX, chaque imprimante est identie par un ou plusieurs noms, qui lui
sont attribus par ladministrateur du systme informatique. Lorsquune imprimante
dispose de plusieurs noms, chacun deux permet dexploiter une caractristique
particulire de limprimante, comme limpression en recto seul, recto-verso ou
encore le choix du format du papier.
lENSTA ParisTech, cinq imprimantes sont utilisables en libre service. Elles
sont indiques avec leurs noms et emplacement dans le tableau 10.1 page suivante.
noter que ces imprimantes sont noir et blanc, hormis pcolor (et donc pcolor1),
qui est une imprimante couleur.
10.2 Avant dimprimer
Lpoque o chacun disposait dune imprimante porte de main est rvolue.
Aujourdhui, la tendance est la mutualisation. Limprimante commune qui est
de plus en plus souvent un photocopieur faisant galement oce dimprimante est
207
Chapitre 10. Impression
Nom pour impression Nom pour impression
Emplacement
en recto-verso en recto seul
speedy speedy1 prs de la salle 1.2.19
speeda speeda1 prs de la salle 1.2.19
speedo speedo1 prs de la salle 1.2.19
pcolor pcolor1 prs de la salle 1.2.19
imp-rdc imp-rdc1 salle R511
Table 10.1 Imprimantes utilisables lENSTA ParisTech.
gnralement place dans un local technique ou un couloir, an dtre facilement
accessible par tous.
Il est possible que cette imprimante soit hors service, bien souvent par manque
de papier. Il est donc important de vrier son tat avant de lancer une impression.
Si jamais on a lanc une impression sur une imprimante qui ne fonctionne pas, il est
ncessaire de lannuler.
10.2.1 La commande lpq
La commande lpq (pour line printer queue) permet dacher la le dattente dune
imprimante. Elle sutilise avec loption -P (majuscule) suivie du nom de limprimante
concerne :
$ lpq -P speedy
Printer: speedy@se1 (destination speedy@speedy)
Queue: pas de travail imprimable dans la file dattente
Server: pas de serveur actif
Status: travail eleve@cafe01+666 sauv at 09:42:59.122
Rank Owner/ID Pr/Class Job Files Size Time
done eleve@cafe01+666 A 666 toto.ps 386371 09:42:58
No entries
Le plus important est indiqu en dernire ligne : No entries signie que la
le dattente de limprimante est vide. On peut donc supposer quelle fonctionne
correctement et il est alors possible de lancer une impression.
Lorsque limprimante est hors service, gnralement par manque de papier,
lachage peut tre plus long :
208
10.2. Avant dimprimer
1 $ lpq -P speedy
2 Printer: speedy@se1 (destination speedo@speedo)
3 Queue: 3 travail imprimables
4 Server: pid 23030 actif
5 Unspooler: pid 23031 actif
6 Status: waiting for subserver to exit at 17:38:43.797
7 Rank Owner/ID Pr/Class Job Files Size Time
8 stalled(344sec) eleve@cafe01+666 A 666 toto.ps 18477382 17:34:42
9 2 eleve@cafe01+667 A 667 tata.ps 24567517 17:38:34
10 3 eleve@cafe01+700 A 700 titi.ps 13198435 17:38:43
11 4 eleve@cafe01+534 A 534 tutu.ps 17369403 17:38:53
12 Active: cafe01 printing via LPD
Les lignes 8 11 indiquent les travaux dimpression en attente, sous la forme dun
achage en colonnes. Pour chaque travail dimpression en attente sont indiqus :
sa position dans la le dattente (colonne Rank) ;
lidentiant de son propritaire (colonne Owner/ID) ;
un nombre unique permettant de lidentier (colonne Job) ;
sa taille en octets (colonne Size) ;
lheure de sa soumission (colonne Time).
Si lon veut conomiser un caractre, on peut se dispenser de lespace entre
loption -P et le nom de limprimante :
$ lpq -Pspeedy
[...]
http://en.wikipedia.org/wiki/Berkeley
_
printing
_
system
10.2.2 La commande lprm
Lorsquune imprimante est hors service et quon a un ou plusieurs travaux dim-
pression dans sa le dattente, il est prfrable de les en supprimer avant dutiliser une
autre imprimante. En eet, on ne sait pas toujours quand limprimante dfectueuse
sera remise en service et il est gnant de laisser des travaux dimpression en attente. En
eet, il est toujours dsagrable pour la personne qui redmarre une imprimante den
voir sortir immdiatement des dizaines, voire des centaines de pages, qui nissent
bien souvent la poubelle.
La commande lprm (pour line printer remove) permet de supprimer un ou
plusieurs travaux dimpression en attente. Elle sutilise avec loption -P (majuscule)
suivie du nom de limprimante concerne et avec le ou les numros (qui sont indiqus
par la commande lpq dans la colonne Job) des travaux dimpression supprimer
comme arguments :
209
Chapitre 10. Impression
$ lprm -P speedy 666 667
Imprimante speedy@se1:
vrification des autorisations eleve@cafe01+666
enlev de la file dattente eleve@cafe01+666
vrification des autorisations eleve@cafe01+667
enlev de la file dattente eleve@cafe01+667
On peut galement utiliser un - (tiret) comme argument pour demander la
suppression du premier de ses travaux dimpression sans avoir indiquer son numro
exact :
$ lprm -P speedy -
[...]
Si lon veut conomiser un caractre, on peut se dispenser de lespace entre
loption -P et le nom de limprimante :
$ lprm -Pspeedy 666
[...]
http://en.wikipedia.org/wiki/Berkeley
_
printing
_
system
10.3 Le format PostScript
Un document quelconque ne peut pas tre imprim tel quel. En eet, les impri-
mantes ne savent pas traiter la multitude de formats de documents qui existent. Pour
imprimer un document, il est ncessaire de le convertir au format PostScript, qui est
le format standard reconnu par toutes les imprimantes.
Le format PostScript a t conu par la socit Adobe au dbut des annes 1980.
Il permet de dcrire les lments graphiques (ligne, arc de cercle, courbe, etc.) ainsi
que le texte dun document de manire vectorielle alors quils taient auparavant
dcrits avec une matrice de points. La description vectorielle permet de nombreuses
manipulations sans perte de qualit lors de limpression et rend les documents
indpendants des capacits des imprimantes. Le format PostScript permet galement
de piloter les imprimantes an den slectionner certaines caractrisques (impression
en recto-verso ou en recto seul, choix du bac papier, etc.).
En pratique, un chier PostScript est un chier texte. Le listage 10.1 page sui-
vante (les mots cls correspondant aux actions eectuer y sont indiqus en gras)
contient un exemple de chier PostScript, dont le rendu graphique est indiqu dans
la gure 10.1 page ci-contre.
210
10.3. Le format PostScript
%!PS-Adobe-3.0
1 setlinewidth
newpath
50 600 moveto
10 60 rlineto
40 0 rlineto
-10 -60 rlineto
-40 0 rlineto
stroke
newpath
95 630 10 0 360 arc
stroke
newpath
95 630 translate
20 rotate
2 1 scale
0 0 17 0 360 arc
stroke
showpage
Listage 10.1 Exemple de chier PostScript.
Figure 10.1 Rendu graphique du chier PostScript du listage 10.1.
211
Chapitre 10. Impression
Nous ntudierons pas davantage le format PostScript. Nanmoins, il est utile
de savoir reconnatre un chier PostScript. Sa premire ligne est caractristique
(le numro de version peut varier en fonction du logiciel qui a produit le chier
PostScript) :
%!PS-Adobe-3.0
Les chiers PostScript ont gnralement une extension .ps.
Avant dimprimer (ou au lieu dimprimer), on peut visualiser un chier PostScript
sur cran au moyen de la commande gv :
$ gv fichier.ps &
La commande gv ouvre une fentre montrant la premire page du chier Post-
Script et permettant de naviguer lintrieur du document, den changer lorientation,
le grossissement, etc.
Les seuls chiers pouvant tre imprims directement sont les chiers PostScript.
Nous allons voir comment procder au paragraphe 10.4. Ensuite, nous tudierons
les cas particuliers des chiers texte au paragraphe 10.5 page 214 et des chiers PDF
au paragraphe 10.6 page 219. Pour imprimer dautres types de documents, il faut :
soit utiliser le logiciel qui les a conus sil dispose dune fonction directe
dimpression ou de la possibilit de gnrer un chier PostScript ;
soit utiliser un convertisseur permettant de gnrer un chier PostScript
partir du document en question.
http://fr.wikipedia.org/wiki/PostScript
http://www.gnu.org/software/gv/
10.4 Impression de chiers PostScript
La nature vectorielle du format PostScript le rend apte de nombreuses mani-
pulations en particulier des similitudes tout en conservant la mme qualit
dimpression. Nous allons tudier comment imprimer puis comment manipuler un
chier PostScript avant impression.
10.4.1 La commande lpr
La commande lpr (pour line print) permet dimprimer un chier PostScript. Elle
sutilise avec loption -P (majuscule) suivie du nom de limprimante et avec le nom
du chier imprimer comme argument :
212
10.4. Impression de chiers PostScript
$ lpr -P speedy toto.ps
Si lon veut conomiser un caractre, on peut se dispenser de lespace entre
loption -P et le nom de limprimante :
$ lpr -Pspeedy toto.ps
La commande lpr est un ltre. Elle peut donc tre utilise (sans argument) en
raccordant son entre standard au moyen dun tuyau la sortie standard dune
commande achant du PostScript :
$ commande
_
affichant
_
du
_
PostScript | lpr -P speedy
http://en.wikipedia.org/wiki/Lpr
http://en.wikipedia.org/wiki/Berkeley
_
printing
_
system
10.4.2 Les utilitaires PSUtils
Les utilitaires PSUtils sont des commandes permettant de manipuler des chiers
PostScript. Nous allons tudier les deux plus utiles de ces commandes. Celles-ci sont
des ltres et achent leur rsultat sur leur sortie standard. Elles peuvent donc tre
raccordes pour limpression la commande lpr au moyen dun tuyau.
http://www.tardis.ed.ac.uk/~ajcd/psutils/
10.4.2.1 La commande psselect
La commande psselect permet de slectionner certaines pages dun document
en vue de nimprimer que celles-ci. Il est en eet regrettable dimprimer un document
dans son intgralit lorsquon na besoin que de quelques pages.
Les pages slectionner sont indiques grce loption -p immdiatement suivie
(sans espace) dune expression pouvant contenir des numros de pages ou des inter-
valles de numros de pages, le tout spar par des virgules. Le rsultat est ach sur
la sortie standard et peut donc tre soit redirig dans un chier soit pass une autre
commande (par exemple lpr) au moyen dun tuyau.
Ainsi, lexemple suivant imprimera les pages 3, 6 9 et 15 du chier PostScript
toto.ps :
$ psselect -p3,6-9,15 toto.ps | lpr -P speedy
[3] [6] [7] [8] [9] [15] Wrote 6 pages, 44409 bytes
213
Chapitre 10. Impression
http://www.tardis.ed.ac.uk/~ajcd/psutils/psselect.html
10.4.2.2 La commande psnup
La commande psnup permet de rarranger un document PostScript pour impri-
mer plusieurs pages par feuille de papier.
Loption -2 permet dimprimer deux pages par feuille de papier, au format
paysage :
$ psnup -2 toto.ps | lpr -P speedy
[1] [2] [3] [4] [5] Wrote 5 pages, 42626 bytes
Loption -4 permet dimprimer quatre pages par feuille de papier, au format
portrait :
$ psnup -4 toto.ps | lpr -P speedy
[1] [2] [3] Wrote 3 pages, 43308 bytes
On peut galement combiner psselect et psnup pour slectionner quelques pages
dun document et en imprimer plusieurs sur chaque feuille de papier :
$ psselect -p1-4 toto.ps | psnup -4 | lpr -P speedy
[1] [2] [3] [4] Wrote 4 pages, 45291 bytes
[1] Wrote 1 pages, 48249 bytes
http://www.tardis.ed.ac.uk/~ajcd/psutils/psnup.html
10.5 Impression de chiers texte
tant donn la prpondrance des chiers texte sous UNIX, il existe des com-
mandes ddies permettant dimprimer ces chiers. Ces commandes peuvent gale-
ment gnrer les chiers PostScript correspondants au lieu de les imprimer.
10.5.1 La commande a2ps
La commande a2ps permet dimprimer un chier texte ou de le convertir en
PostScript.
Pour imprimer un chier texte, la commande a2ps sutilise avec loption -P
(majuscule) suivie du nom de limprimante et avec le ou les chiers imprimer
comme arguments :
214
10.5. Impression de chiers texte
$ a2ps -P speedy toto1.txt toto2.txt
[toto1.txt (standard) : 10 pages sur 5 feuilles]
[toto2.txt (standard) : 1 page sur 1 feuille]
lidentifiant de requte est speedy-90 ( 1 fichier(s) )
[Total : 11 pages sur 6 feuilles] envoy limprimante speedy
[7 lignes enroules]
Si lon veut conomiser un caractre, on peut se dispenser de lespace entre
loption -P et le nom de limprimante :
$ a2ps -Pspeedy toto.ps
[...]
Par souci dconomie, la commande a2ps imprime par dfaut deux pages par
feuille de papier, au format paysage, comme on peut le voir dans la gure 10.2.
#include <nonsense.h>
#include <lies.h>
#include <spyware.h> /* Microsoft Network Connectivity library */
#include <process.h> /* For the court of law */
#define say(x) lie(x)
#define computeruser ALL_WANT_TO_BUY_OUR_BUGWARE
#define next_year soon
#define the_product_is_ready_to_ship another_beta_version

void main()

{
if (latest_window_version>one_month_old)
{
if (there_are_still_bugs)
market(bugfix);
if (sales_drop_below_certain_point)
raise(RUMOURS_ABOUT_A_NEW_BUGLESS_VERSION);
}
while(everyone_chats_about_new_version)
{
make_false_promise(it_will_be_multitasking); /* Standard Call, in
lie.h */
if (rumours_grow_wilder)
make_false_promise(it_will_be_plug_n_play);

if (rumours_grow_even_wilder)
{
market_time=ripe;
say("It will be ready in one month");
order(programmers, stop_fixing_bugs_in_old_version);
order(programmers, start_brainstorm_about_new_version);
order(marketingstaff, permission_to_spread_nonsense);
vapourware=TRUE;
break;
}
}
switch (nasty_questions_of_the_worldpress)
{
case WHEN_WILL_IT_BE_READY:
say("It will be ready in", today+30_days," were just testing");
break;
case WILL_THIS_PLUG_AND_PLAY_THING_WORK:
say("Yes it will work");
ask(programmers, why_does_it_not_work);
pretend(there_is_no_problem);
break;
case WHAT_ARE_MINIMAL_HARDWARE_REQUIREMENTS:
say("It will run on a 8086 with lightning speed due to"
" the 32 bits architecture");
inform(INTEL, "Pentium sales will rise skyhigh");
inform(SAMSUNG, "Start a new memorychip plant"
"cos all those customers will need at least 32 megs");
inform(QUANTUM, "Thanks to our fatware your sales will triple");
get_big_bonus(INTEL, SAMSUNG, QUANTUM);
break;
case DOES_MICROSOFT_GET_TOO_MUCH_INFLUENCE:
say("Oh no, we are just here to make a better world for
everyone");
register(journalist, Big_Bill_Book);
when(time_is_ripe)
{
Dec 11, 09 22:16 Page 1/2 mickeysoft.c
arrest(journalist);
brainwash(journalist);
when(journalist_says_windows95_is_bugfree)
{
order(journalist, "write a nice objective article");
release (journalist);
}
}
break;
}
while (vapourware)
{
introduction_date++; /* Delay */
if (no_one_believes_anymore_there_will_be_a_release)
break;
say("It will be ready in",today+ONE_MONTH);
}
release(beta_version)
while (everyone_is_dumb_enough_to_buy_our_bugware)
{
bills_bank_account += 150*megabucks;
release(new_and_even_better_beta_version);
introduce(more_memory_requirements);
if (customers_report_installation_problems)
{
say("that is a hardware problem, not a software problem");
if (smart_customer_says_but_you_promised_plug_and_play)
{
ignore(customer);
order(microsoft_intelligence_agency, "Keep an eye on this
bastard");
}
}
if (there_is_another_company)
{
steal(their_ideas);
accuse(compagny, stealing_our_ideas);
hire(a_lot_of_lawyers); /* in process.h */
wait(until_other_company_cannot_afford_another_lawsuit);
buy_out(other_company);
}
}
/* Now everyone realizes that we sell bugware and they are all angry at
us */
order(plastic_surgeon, make_bill_look_like_poor_bastard);
buy(nice_little_island); hire(harem);
laugh_at(everyone,
for_having_the_patience_year_after_year_for_another_unfinished_version);
}

void bugfix(void)
{
charge (a_lot_of_money);
if (customer_says_he_does_not_want_to_pay_for_bugfix)
say("It is not a bugfix but a new version");
if (still_complaints)
{
ignore(customer);
register(customer, Big_Bill_Book);
/* Well get him when everyone uses Billware!!*/
}
}
Dec 11, 09 22:16 Page 2/2 mickeysoft.c
Printed by Marc Baudoin
Friday December 11, 2009 1/1 /home/babafou/divers/humour/mickeysoft.c
Figure 10.2 Fichier imprim avec la commande a2ps.
Si lon souhaite faire encore mieux et imprimer quatre pages par feuille de papier,
au format portrait, on peut utiliser loption -4 :
215
Chapitre 10. Impression
$ a2ps -4 -P speedy toto.txt
[...]
Si, en revanche, on ne souhaite imprimer quune seule page par feuille de papier,
on peut utiliser loption -1 :
$ a2ps -1 -P speedy toto.txt
[...]
Le comportement par dfaut de la commande a2ps correspond loption -2 :
$ a2ps -2 -P speedy toto.txt
[...]
En regardant de plus prs la gure 10.2 page prcdente, qui est le rsultat
de limpression avec la commande a2ps dun programme en langage C, on peut
remarquer que certaines parties du texte sont en gras et dautres en italique. En eet,
a2ps sait reconnatre certains types de chiers texte, dont de nombreux langages de
programmation, et les prsenter en direnciant leurs lments syntaxiques de cette
faon, ce qui facilite la lecture.
Si lon utilise une imprimante capable dimprimer en recto-verso mais qui nest
pas congure pour le faire par dfaut, loption -s, suivie de la valeur 2, permet
dactiver limpression en recto-verso :
$ a2ps -s 2 -P speedy toto.txt
[...]
Pour gnrer un chier PostScript partir dun chier texte sans limprimer, la
commande a2ps sutilise avec loption -o (pour output) suivie du nom du chier
PostScript gnrer et avec le ou les chiers texte comme arguments :
$ a2ps -o toto.ps toto1.txt toto2.txt
[toto1.txt (standard) : 10 pages sur 5 feuilles]
[toto2.txt (standard) : 1 page sur 1 feuille]
[Total : 11 pages sur 6 feuilles] enregistr dans le fichier toto.ps
[7 lignes enroules]
La commande a2ps est un ltre. Elle peut donc tre utilise (sans argument)
en raccordant son entre standard au moyen dun tuyau la sortie standard dune
commande achant du texte :
216
10.5. Impression de chiers texte
$ commande
_
affichant
_
du
_
texte | a2ps -P speedy
http://www.gnu.org/software/a2ps/
10.5.2 La commande enscript
La commande enscript permet dimprimer un chier texte ou de le convertir en
PostScript.
Pour imprimer un chier texte, la commande enscript sutilise avec loption
-P (majuscule) suivie du nom de limprimante et avec le ou les chiers imprimer
comme arguments :
$ enscript -P speedy toto1.txt toto2.txt
[ 11 pages x 1 copies ]expdi speedy
4 lignes taient enroules
Si lon veut conomiser un caractre, on peut se dispenser de lespace entre
loption -P et le nom de limprimante :
$ enscript -Pspeedy toto.ps
[...]
La gure 10.3 page suivante montre un exemple de chier imprim avec la
commande enscript.
Contrairement a2ps, la commande enscript imprime par dfaut une seule page
par feuille de papier. Loption -U (majuscule) suivie de 2 ou 4 permet dimprimer
deux ou quatre pages par feuille de papier :
$ enscript -U 2 -P speedy toto.txt
$ enscript -U 4 -P speedy toto.txt
La commande enscript sait galement direncier les lments syntaxiques de
certains types de chiers texte en les composant en gras ou en italique. Pour cela, il
faut utiliser loption -E :
$ enscript -E -P speedy toto.txt
[...]
217
Chapitre 10. Impression
/home/babafou/ensta/in201/poly/babafou/exemples/fflush.c Sat Aug 21 13:14:51 1999
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define LECTURE 0
#define ECRITURE 1
int main ( int argc , char **argv )
{
int tuyau[2] , a , b , c ;
FILE *mon_tuyau ;
if ( pipe ( tuyau ) == -1 )
{
perror ( "Erreur dans pipe()" ) ;
exit ( EXIT_FAILURE ) ;
}
switch ( fork ( ) )
{
case -1 : /* erreur */
perror ( "Erreur dans fork()" ) ;
exit ( EXIT_FAILURE ) ;
case 0 : /* processus fils, lecteur */
close ( tuyau[ECRITURE] ) ;
mon_tuyau = fdopen ( tuyau[LECTURE] , "r" ) ;
if ( mon_tuyau == NULL )
{
perror ( "Erreur dans fdopen()" ) ;
exit ( EXIT_FAILURE ) ;
}
fscanf ( mon_tuyau , "%d%d%d" , &a , &b , &c ) ;
printf ( "[fils] Mon pre a crit %d %d %d\n" ,
a , b , c ) ;
fclose ( mon_tuyau ) ;
exit ( EXIT_SUCCESS ) ;
default : /* processus pre, crivain */
close ( tuyau[LECTURE] ) ;
mon_tuyau = fdopen ( tuyau[ECRITURE] , "w" ) ;
if ( mon_tuyau == NULL )
{
perror ( "Erreur dans fdopen()" ) ;
exit ( EXIT_FAILURE ) ;
}
fprintf ( mon_tuyau , "1 2 3\n" ) ;
printf ( "[pre] Je viens dcrire dans le tuyau,\n" ) ;
printf ( " mais les donnes sont encore\n" ) ;
printf ( " dans la zone de mmoire tampon.\n" ) ;
sleep ( 5 ) ;
fflush ( mon_tuyau ) ;
printf ( "[pre] Je viens de forcer lcriture\n" ) ;
printf ( " des donnes de la mmoire tampon\n" ) ;
printf ( " vers le tuyau.\n" ) ;
printf ( " Jattends 5 secondes.\n" ) ;
sleep ( 5 ) ;
fclose ( mon_tuyau ) ;
exit ( EXIT_SUCCESS ) ;
}
}
Figure 10.3 Fichier imprim avec la commande enscript.
Si lon utilise une imprimante capable dimprimer en recto-verso mais qui nest
pas congure pour le faire par dfaut, loption -D, suivie de la valeur Duplex:true,
permet dactiver limpression en recto-verso :
$ enscript -D Duplex:true -P speedy toto.txt
[...]
Pour gnrer un chier PostScript partir dun chier texte sans limprimer, la
commande enscript sutilise avec loption -o (pour output) suivie du nom du chier
PostScript gnrer et avec le ou les chiers texte comme arguments :
$ enscript -o toto.ps toto1.txt toto2.txt
[ 11 pages x 1 copies ] places dans toto.ps
4 lignes taient enroules
La commande enscript est un ltre. Elle peut donc tre utilise (sans argument)
en raccordant son entre standard au moyen dun tuyau la sortie standard dune
commande achant du texte :
218
10.6. Impression de chiers PDF
$ commande
_
affichant
_
du
_
texte | enscript -P speedy
http://www.gnu.org/software/enscript/
http://en.wikipedia.org/wiki/Enscript
10.5.3 Impression de chiers texte cods en UTF-8
De nombreuses imprimantes ne grent pas correctement les chiers texte cods
en UTF-8. Il est alors ncessaire de les convertir en ISO 8859-15 au moyen de la
commande iconv avant de les imprimer.
On peut procder ainsi avec la commande a2ps :
$ iconv -f utf-8 -t iso-8859-15 toto.txt | a2ps -P speedy
ou ainsi avec la commande enscript :
$ iconv -f utf-8 -t iso-8859-15 toto.txt | enscript -P speedy
http://en.wikipedia.org/wiki/Iconv
10.6 Impression de chiers PDF
La commande pdftops permet de convertir un chier PDF en chier PostScript :
$ pdftops toto.pdf
Utilise avec un seul nom de chier en argument (qui doit tre un chier au
format PDF), la commande pdftops gnre un chier du mme nom en remplaant
lextension .pdf par lextension .ps.
On peut choisir le nom du chier PostScript gnr en lindiquant en second
argument :
$ pdftops toto.pdf postscript.ps
Si le second argument est un tiret, le chier PostScript ne sera pas gnr mais
sera ach sur la sortie standard, ce qui permet dutiliser un tuyau, par exemple pour
limprimer sans crer de chier temporaire :
219
Chapitre 10. Impression
$ pdftops toto.pdf - | lpr -P speedy
Si lon utilise une imprimante capable dimprimer en recto-verso mais qui nest
pas congure pour le faire par dfaut, loption -duplex permet de gnrer un chier
PostScript contenant la directive dactivation de limpression en recto-verso :
$ pdftops -duplex toto.pdf
Enn, il faut signaler lexistence dune commande pdf2ps qui convertit galement
un chier PDF en chier PostScript mais qui gnre des chiers PostScript plus
volumineux et de moins bonne qualit que pdftops.
220
11
Connexion distance
U
n systme dexploitation multi-utilisateur ce qui est le cas dUNIX
depuis sa premire version permet plusieurs personnes dutiliser
le mme ordinateur simultanment, gnralement au moyen dun in-
terprteur de commandes. Cela est possible en raccordant plusieurs
terminaux lordinateur, en sy connectant via le rseau tlphonique sil dispose
dun modem ou encore travers un rseau informatique tel que lInternet. Cest
cette dernire mthode qui est de loin la plus utilise aujourdhui.
La connexion distance travers un rseau informatique pose le problme de
la condentialit des communications. Il est en eet possible de les espionner soit
en mesurant le champ lectromagntique gnr par le courant circulant dans les
cbles lectriques
1
soit en interceptant directement les communications au niveau
des quipements lectroniques dinterconnexion du rseau informatique.
Autrefois, on utilisait pour se connecter un ordinateur distant et y lancer un
interprteur de commandes la commande telnet (pour teletype network). Malheureu-
sement, les informations transmises et reues par telnet le sont en clair, cest--dire
sans aucun traitement permettant dassurer un minimum de condentialit. Son
utilisation est donc tombe en dsutude, sauf pour certains tests qui ne ncessitent
pas la transmission dinformations condentielles.
De mme, la commande ftp (pour le transfer protocol) tait utilise, comme son
nom lindique, pour transfrer des chiers dun ordinateur un autre. Elle lest tou-
jours aujourdhui mais uniquement pour accder des serveurs de chiers anonymes,
dont lutilisation ne ncessite pas la transmission dinformations condentielles.
De nos jours, tout type de communication avec un systme informatique distant
implique lutilisation du chirement ds lors quun minimum de condentialit est
ncessaire.
http://fr.wikipedia.org/wiki/Telnet
http://en.wikipedia.org/wiki/Ftp
http://en.wikipedia.org/wiki/Ftp#Anonymous
_
FTP
1. Ce qui nest pas possible avec des cbles en bre optique.
221
Chapitre 11. Connexion distance
11.1 Le chirement
Le chirement a pour but de protger des donnes lors de leur transmission par un
canal susceptible dtre espionn. Les donnes transmettre, quon appelle message
clair, sont tranformes en donnes incomprhensibles, quon appelle message chir,
au moyen dun algorithme.
On notera :
m le message clair ;
c le message chir ;
f lalgorithme de chirement ;
C
f
la fonction de chirement associe lalgorithme f ;
D
f
la fonction de dchirement associe lalgorithme f .
On a donc :
C
f
(m) = c
Le message chir peut alors tre transmis son destinataire. Pour retrouver le
message clair, celui-ci appliquera au message chir la fonction de dchirement :
D
f
(c) = m
propos du chirement, on entend souvent les termes cryptage , crypter ,
voire encryption ou dcryption . Ce sont tous des termes incorrects, qui
nexistent pas en franais. On parle de chirement pour laction de chirer un
message clair et de dchirement pour laction de dchirer un message chir. En
revanche, les termes dcryptage et dcrypter existent et correspondent au fait
de retrouver tout ou partie du message clair partir du message chir sans utiliser
la fonction de dchirement. Donc le destinataire lgitime dun message chir le
dchire alors quun espion le dcrypte.
Lalgorithme seul ne sut pas assurer la scurit du chirement. Si ctait le
cas, il faudrait quil soit secret, uniquement connu des personnes ayant lutiliser.
Or lexprience prouve que les algorithmes de chirement secrets ne le restent pas
longtemps. Les bons algorithmes de chirement sont donc publics, ce qui permet
aux spcialistes de les tudier et de conrmer ou dinrmer leur qualit.
Il est donc ncessaire dintroduire de la variabilit dans les algorithmes. Pour
cela, on utilise une cl, qui est un paramtre de lalgorithme. Il sagit dune longue
chane de caractres ou dun nombre trs grand. La fonction de chirement sera
donc applique au message clair et la cl. Le chirement dun mme message
clair avec deux cls direntes donnera deux messages chirs totalement dirents,
compliquant un ventuel dcryptage.
Il existe deux grandes familles dalgorithmes de chirement, selon la nature de la
cl utilise : le chirement symtrique et le chirement asymtrique.
Le lecteur curieux pourra se reporter aux ouvrages suivants de la bibliographie
pour approfondir ses connaissances :
222
11.1. Le chirement
Applied Cryptography [58]
Handbook of Applied Cryptography [57]
http://fr.wikipedia.org/wiki/Chiffrement
http://www.bortzmeyer.org/cryptage-n-existe-pas.html
11.1.1 Chirement symtrique
Lalgorithme de chirement symtrique s utilise la mme cl k pour la fonction
de chirement C
s
et la fonction de dchirement D
s
:
C
s
(m, k) = c D
s
(c, k) = m
Lexpditeur et le destinataire du message chir doivent donc tous deux disposer
de cette cl. Le problme initial de la transmission du message se retrouve alors
transpos celui de la transmission de la cl. Nanmoins, une mme cl peut tre
utilise pour chirer et dchirer de nombreux messages.
Les algorithmes symtriques utilisent des cls de petite taille (on considre gn-
ralement quune cl dau moins 128 bits est sre compte tenu des moyens de calcul
actuels) et sont plutt rapides.
http://fr.wikipedia.org/wiki/Cryptographie
_
symtrique
11.1.2 Chirement asymtrique
Lalgorithme de chirement asymtrique a utilise un couple de cls. Ces cls
sont gnres ensemble (elles doivent ltre car elles entretiennent des relations
mathmatiques entre elles) par le destinataire du message.
La cl publique k
c
peut, comme son nom lindique, tre diuse publiquement
sans risque de scurit. La cl publique du destinataire sert au chirement du message
par son expditeur :
C
a
(m, k
c
) = c
La cl prive k
d
doit, au contraire, rester seulement connue de son propritaire,
le destinataire du message, et sert son dchirement :
D
a
(c, k
d
) = m
Le chirement asymtrique rsoud le problme de transmission de la cl intrin-
sque au chirement symtrique. Nanmoins, les algorithmes asymtriques utilisent
des cls de grande taille (on considre gnralement quune cl dau moins 1024 bits
est sre compte tenu des moyens de calcul actuels) et sont sensiblement plus lents
que les algorithmes symtriques.
223
Chapitre 11. Connexion distance
Il faut par ailleurs que lexpditeur sassure au pralable que la cl publique k
c
est
bien celle du destinataire (et non celle dun imposteur qui pourrait alors dchirer
les messages). cet eet, on utilise gnralement lempreinte (ngerprint en anglais)
de la cl publique. Une empreinte est une chane de caractres assez courte obtenue
partir de donnes plus volumineuses et permettant didentier celles-ci. Il est alors
facile de vrier lempreinte de la cl publique k
c
auprs de son propritaire.
http://fr.wikipedia.org/wiki/Cryptographie
_
asymtrique
11.1.3 Chirement hybride
En pratique, les logiciels de chirement utilisent un mlange de chirement
symtrique et de chirement asymtrique.
Le destinataire du message dispose dun couple de cls asymtriques (k
c
, k
d
).
Lexpditeur gnre une cl symtrique alatoire k et chire le message m avec :
C
s
(m, k) = c
Il chire galement la cl symtrique avec la cl publique du destinataire :
C
a
(k, k
c
) = k

Lensemble (c, k

) est envoy au destinataire. Celui-ci commence par dchirer la


cl symtrique au moyen de sa cl prive :
D
a
(k

, k
d
) = k
Ce qui lui permet nalement de dchirer le message :
D
s
(c, k) = m
Cette faon de combiner chirements symtrique et asymtrique permet donc de
proter de leurs avantages respectifs, savoir la rapidit de traitement du chirement
symtrique et la possibilit de diusion de la cl publique du chirement asymtrique.
Ce dernier ntant utilis que pour chirer la cl symtrique, sa lenteur nest pas un
problme.
http://fr.wikipedia.org/wiki/Cryptographie
_
hybride
11.2 La commande ssh
La commande ssh (pour secure shell) permet de lancer un interprteur de com-
mandes sur un ordinateur distant depuis lordinateur sur lequel on est physiquement
connect. La communication entre les deux ordinateurs se fait au moyen dun systme
de chirement hybride.
224
11.2. La commande ssh
Le lecteur curieux pourra se reporter aux ouvrages suivants de la bibliographie
pour approfondir ses connaissances :
SSH, The Secure Shell : The Denitive Guide [13]
Pro OpenSSH [27]
SSH Mastery [19]
http://www.openssh.com/
http://fr.wikipedia.org/wiki/Secure
_
Shell
11.2.1 Connexion simple
An de clarier les exemples qui suivent, il y sera fait usage de linvite exacte de
lenvironnement informatique de lENSTA ParisTech au lieu de linvite simplie
$. Dans ces exemples, nous nous connecterons lordinateur olive01 depuis
lordinateur cafe01. Par ailleurs, les commandes et interactions devant tre saisies
par lutilisateur chaque tape seront indiques en gras.
Pour se connecter un ordinateur distant, il faut indiquer son nom en argument
de la commande ssh :
babafou@cafe01:~$ ssh olive01
The authenticity of host olive01 (147.250.9.11) cant be established.
RSA key fingerprint is 2e:b2:82:fd:db:11:f1:35:f4:c0:5e:ac:8d:7c:f4:e8.
Are you sure you want to continue connecting (yes/no)?
Lorsquon se connecte un ordinateur distant pour la premire fois, ssh ache
lempreinte de sa cl publique (voir le paragraphe 11.1.2 page 223). An de vrier
la validit de cette empreinte, on peut se connecter physiquement sur lordinateur
distant, si cela est possible, et utiliser la commande ssh-keygen, dont loption -l
permet dacher lempreinte de la cl publique dont le chemin daccs est indiqu
par loption -f (ce chemin daccs peut varier en fonction du systme UNIX utilis) :
babafou@olive01:~$ ssh-keygen -l -f /etc/ssh/ssh
_
host
_
rsa
_
key
2048 2e:b2:82:fd:db:11:f1:35:f4:c0:5e:ac:8d:7c:f4:e8 /etc/ssh/ssh
_
host
_
rsa
_
key.pub
On peut constater que lempreinte ache par ssh-keygen est bien la mme que
celle ache par ssh.
Nanmoins, bien souvent, il nest pas possible ou pas pratique de se connecter
physiquement sur un ordinateur dans le seul but dacher lempreinte de sa cl
publique. Si lon ne dispose pas dune autre mthode pour vrier cette empreinte
(par exemple, une liste dempreintes fournie par ladministrateur du systme), on fait
gnralement limpasse sur cette vrication.
225
Chapitre 11. Connexion distance
Revenons notre connexion distance. Pour poursuivre la procdure aprs
lachage par ssh de lempreinte de la cl publique de lordinateur distant, il faut
taper yes en toutes lettres (ou no si lon souhaite linterrompre) :
babafou@cafe01:~$ ssh olive01
The authenticity of host olive01 (147.250.9.11) cant be established.
RSA key fingerprint is 2e:b2:82:fd:db:11:f1:35:f4:c0:5e:ac:8d:7c:f4:e8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added olive01,147.250.9.11 (RSA) to the list of known hosts.
babafou@olive01s password:
Cette tape nest ncessaire que lors de la premire connexion un ordinateur
distant. En eet, ssh conserve les cls publiques des ordinateurs sur lesquels on sest
dj connect dans le chier ~/.ssh/known
_
hosts et ne demande pas conrmation
si la cl publique de lordinateur auquel on se connecte gure dj dans ce chier.
En revanche, si jamais elle changeait (en raison dune rinstallation du systme, par
exemple), il serait demand nouveau conrmation.
Aprs saisie du mot de passe (qui ne sache pas), on se retrouve avec un
interprteur de commande fonctionnant sur lordinateur distant, comme le prouve
son invite :
babafou@cafe01:~$ ssh olive01
The authenticity of host olive01 (147.250.9.11) cant be established.
RSA key fingerprint is 2e:b2:82:fd:db:11:f1:35:f4:c0:5e:ac:8d:7c:f4:e8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added olive01,147.250.9.11 (RSA) to the list of known hosts.
babafou@olive01s password: mot
_
de
_
passe
babafou@olive01:~$
Si linvite de linterprteur de commandes nache pas le nom de lordinateur sur
lequel il fonctionne, ou simplement si lon souhaite acher celui-ci, on peut utiliser
la commande hostname, qui ache le nom de lordinateur sur lequel on se trouve :
babafou@olive01:~$ hostname
olive01
On peut ensuite utiliser sur lordinateur distant toutes les commandes utilisables
dans un interprteur de commandes ( lexception des logiciels graphiques, qui seront
abords au pragraphe 11.2.2 page ci-contre).
Pour quitter linterprteur de commandes sur lordinateur distant, on utilise la
commande exit :
226
11.2. La commande ssh
babafou@olive01:~$ exit
logout
Connection to olive01 closed.
babafou@cafe01:~$
11.2.2 Connexion avec achage graphique dport
Il est possible grce la commande ssh dexcuter des logiciels graphiques sur un
ordinateur distant en les faisant sacher sur son cran. Pour cela, il faut utiliser ssh
avec loption -X lors de la connexion lordinateur distant :
$ ssh -X ordinateur
Ceci lancera un interprteur de commandes sur lordinateur distant aprs saisie
du mot de passe, comme vu prcdemment. Loption -X permet en plus dutili-
ser la connexion chire entre les deux ordinateurs pour dporter lachage des
applications graphiques.
Cela peut ne pas fonctionner correctement avec certains ordinateurs. Dans ce cas,
on peut utiliser plutt loption -Y
$ ssh -Y ordinateur
11.2.3 Connexion avec un identiant dirent
Il peut arriver davoir se connecter sur un ordinateur distant avec un identiant
dirent de celui utilis sur lordinateur de dpart, parce que les rgles dattribution
des identiants sont direntes ici et l-bas ou tout simplement parce quon emprunte
le compte de quelquun pour se connecter ailleurs.
Dans ce cas, il faut utiliser la commande ssh avec loption -l suivie de lidentiant
sur lordinateur distant :
$ ssh -l identifiant ordinateur
On peut aussi utiliser, sans loption -l, une syntaxe ressemblant une adresse
lectronique :
$ ssh identifiant@ordinateur
227
Chapitre 11. Connexion distance
11.2.4 Connexion depuis lextrieur de lENSTA ParisTech
La connexion depuis lextrieur de lENSTA ParisTech vers un ordinateur de
son rseau interne ncessite lutilisation dune procdure particulire, en raison
dun dispositif de scurit contrlant les connexions en entre de lcole.
Pour cela, on utilise la commande ssh :
1. avec loption -t (dont lexplication est trop technique pour un cours din-
troduction linformatique) ;
2. avec loption -l suivie de son identiant dans lenvironnement informatique
de lENSTA ParisTech ;
3. en indiquant relais.ensta.fr comme premier argument (cet ordinateur est
le dispositif de scurit indiqu auparavant) ;
4. en indiquant le nom de lordinateur sur lequel on souhaite se connecter
comme second argument.
Ce qui donne cette commande :
$ ssh -t -l identifiant relais.ensta.fr ordinateur
Le mot de passe de lutilisateur sera demand deux reprises, la premire
fois par relais.ensta.fr, la seconde par lordinateur sur lequel on souhaite se
connecter.
11.3 La commande scp
La commande scp (pour secure copy) permet de copier un chier dun ordinateur
un autre de manire chire, en utilisant le mme canal de communication que la
commande ssh.
Pour copier un chier fichier sur un ordinateur distant ordinateur, on utilise :
$ scp fichier ordinateur:
Le deux-points coll au nom de lordinateur distant est indispensable et permet
didentier lequel des deux arguments de la commande scp est lordinateur distant.
Si rien nest indiqu derrire ce deux-points, le chier fichier est copi sous le
mme nom dans le rpertoire personnel de lutilisateur sur lordinateur distant. On
peut indiquer aprs le deux-points le chemin daccs sous lequel copier le chier :
$ scp fichier ordinateur:rep1/rep2
228
11.4. Savoir qui est connect sur un ordinateur : les commandes who et w
En sens inverse, on peut copier un chier depuis lordinateur distant :
$ scp ordinateur:fichier .
Pour copier un chier vers ou depuis un ordinateur sur lequel on dispose dun
identiant dirent, il faut indiquer cet identiant devant le nom de lordinateur,
en intercalant une arrobe @ entre les deux (loption -l de ssh a une signication
dirente pour scp) :
$ scp fichier identifiant@ordinateur:
http://fr.wikipedia.org/wiki/Secure
_
copy
11.4 Savoir qui est connect sur un ordinateur : les commandes
who et w
La commande who permet dacher la liste des utilisateurs qui sont connects
lordinateur sur lequel on travaille :
$ who
eleve tty7 2010-09-21 13:41 (:0)
babafou pts/1 2010-09-21 15:57 (cafe01.ensta.fr)
Dans lexemple prcdent, lutilisateur eleve est physiquement connect lor-
dinateur (ce quindique le :0 entre parenthses dans la dernire colonne) alors que
lutilisateur babafou est connect depuis la machine cafe01.ensta.fr, probablement
au moyen de la commande ssh.
Hormis pour la brivet de son nom, on lui prfre gnralement la commande
w, dont lachage est plus complet. Ainsi, dans les mmes conditions que pour
lexemple prcdent, la commande w ache :
$ w
15:58:53 up 2:37, 2 users, load average: 0,60, 0,44, 0,21
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
eleve tty7 :0 13:41 1.00s 1:12 0.28s bash
babafou pts/1 cafe01.ensta.fr 15:57 0.00s 0.25s 0.00s w
On retrouve partir de la deuxime ligne un habituel achage en colonnes.
229
Chapitre 11. Connexion distance
http://fr.wikipedia.org/wiki/Who
_
(Unix)
http://fr.wikipedia.org/wiki/W
_
(Unix)
230
12
Programmation
L
interprteur de commandes ne permet pas seulement lexcution de
commandes isoles, aussi complexes soient-elles, il dispose galement
dun langage de programmation complet permettant denchaner des
commandes au moyen de tests et de boucles. Les programmes peuvent
tre saisis soit en ligne de commande lorsquils sont susamments courts soit dans un
chier lorsquils sont plus longs ou quon souhaite les conserver pour les rutiliser.
Il nexiste pas un seul langage de programmation mais deux. La syntaxe de celui
du Bourne shell (sh) a t reprise par les Korn shell (ksh) et Bourne-again shell (bash).
Celle introduite par le C shell (csh) est dirente et a t reprise par le TENEX C
shell (tcsh). uant au Z shell (zsh), il accepte indiremment les deux syntaxes. Le
paragraphe 7.1 page 80 vous rappellera lhistorique des interprteurs de commandes
et les relations gnalogiques quils entretiennent entre eux.
Nous tudierons par la suite le langage de programmation du Bourne shell, qui
est de loin le plus utilis.
Le lecteur curieux pourra se reporter aux ouvrages suivants de la bibliographie
pour approfondir ses connaissances :
Programmation shell sous Unix/Linux [14]
Classic Shell Scripting [25]
Sams Teach Yourself Shell Programming in 24 Hours [29]
12.1 Pourquoi programmer ?
Il existe des situations dans lesquelles les dirents outils syntaxiques tudis
jusquici ne sont pas susants pour exprimer laction quon souhaite accomplir.
Considrons lexemple suivant : renommer dix chiers nomms toto0 jusqu toto9
(qui existent) en tata0 jusqu tata9 (qui nexistent pas).
Compte tenu des similitudes entre les noms des chiers toto0 toto9 et tata0
tata9, on pense immdiatement utiliser un mtacaractre. La commande suivante
conviendrait-elle ?
$ mv toto? tata?
231
Chapitre 12. Programmation
Malheureusement non car les mtacaractres ne permettent de gnrer que des
noms de chiers qui existent et les chiers dont le nom commence par tata nexistent
pas encore. ui plus est, la syntaxe de la commande mv permet soit de renommer un
seul chier soit de dplacer plusieurs chiers mais elle ne permet pas de renommer
plusieurs chiers en mme temps.
Faut-il pour autant se rsoudre utiliser dix fois la commande mv pour renomer
les chiers un par un? Oui, cest la seule faon de faire. Mais il existe une mthode
plus ecace que de taper dix commandes, cest dutiliser un programme. Nous
verrons la solution ce problme au paragraphe 12.7.2.1 page 243.
12.2 Comment programmer ?
Comme M. Jourdain disait de la prose sans quil le st, nous programmons depuis
le dbut sans le savoir. En eet, que ce soit une simple commande sans mme une
option ou un argument ou bien encore un enchanement de commandes relies par
des tuyaux, tout cela est dj un programme.
Plus gnralement, un programme est constitu dune suite de commandes
et dinstructions permettant den contrler lexcution (que nous tudierons au
paragraphe 12.7 page 238).
12.2.1 Les scripts
Nanmoins, un programme est rarement saisi en ligne de commande, sauf sil est
trs court et na pas besoin dtre rutilis. Le plus souvent, un programme est saisi
dans un chier quon appelle un script. Par mtonymie, on appelle galement script
le programme contenu dans ce chier.
Les scripts en Bourne shell sont habituellement stocks dans des chiers ayant
une extension .sh.
12.2.2 Excution dun script
Considrons le script suivant, stock dans le chier toto.sh :
cal
date
On y retrouve deux commandes bien connues, chacune sur une ligne. La com-
mande cal sera excute en premier, puis viendra le tour de la commande date. Un
script est en eet excut ligne par ligne, de haut en bas. La n de ligne dans le chier
fait oce dappui sur la touche Enter .
Pour excuter ce script, on peut lindiquer en argument de la commande sh :
232
12.2. Comment programmer ?
$ sh toto.sh
Il existe galement deux autres syntaxes spciques certains interprteurs de
commandes.
Avec bash, csh, tcsh et zsh, on peut faire :
$ source toto.sh
Avec bash uniquement, on peut faire :
$ . toto.sh
Mais la faon la plus commune de faire est de rajouter une ligne en tte du script :
#! /bin/sh
et de le rendre excutable :
$ chmod 755 toto.sh
Notre script toto.sh devient donc :
#! /bin/sh
cal
date
La ligne blanche suivant la premire ligne nest pas ncessaire mais permet de
bien la sparer de la suite du script.
Le script peut alors tre excut, comme expliqu au paragraphe 9.2.4 page 163,
de cette faon :
$ ./toto.sh
233
Chapitre 12. Programmation
La prsence des deux caractres #! au dbut du script (et qui doivent absolument
tre les deux premiers caractres du script) indique UNIX que, lorsquon lexcute,
il doit en fait excuter la commande dont le chemin daccs absolu suit ces deux
caractres, soit ici /bin/sh, en lui passant le nom du script en argument, soit ici
toto.sh, ce qui revient la premire mthode indique prcdemment pour excuter
le script (puisque le chemin daccs absolu de sh est /bin/sh, ce qui est facile vrier
grce aux commandes type ou which).
Lespace entre #! et /bin/sh nest pas indispensable mais permet l encore de bien
sparer les choses.
Libre chacun dexcuter ses scripts comme bon lui semble. An de ne pas les
encombrer inutilement, les prochains exemples ne contiendront pas la ligne :
#! /bin/sh
Il faudra donc la rajouter (et ne pas oublier de rendre le script excutable) si lon
souhaite utiliser cette mthode.
http://fr.wikipedia.org/wiki/Shebang
12.3 Continuation de ligne
Un script est constitu dune suite de commandes et dinstructions de contrle
(que nous tudierons au paragraphe 12.7 page 238). Celles-ci gurent gnralement
sur une seule ligne mais peuvent stendre sur plusieurs lignes conscutives au besoin.
Pour cela, on utilise une barre oblique inverse \ en n de ligne an dindiquer que
celle-ci se poursuit sur la ligne suivante.
Ainsi, la commande :
ps ux | grep xeyes | grep -v grep | awk {print $2}
peut tre scinde en plusieurs lignes comme ceci :
ps ux | grep xeyes \
| grep -v grep \
| awk {print $2}
12.4 Les commentaires
Il peut tre utile dinclure dans un script des indications nen faisant pas partie
mais destines clairer les personnes qui seront amenes le lire (cest souvent le
234
12.5. Les variables
cas de son auteur lorsquil le relit aprs un certain temps et quil se demande ce quil
a bien pu essayer de faire). Cest ce quon appelle des commentaires.
Les commentaires commencent par un croisillon # et stendent jusqu la n de
la ligne. Ils peuvent gurer seuls sur une ligne ou en n de ligne.
Ainsi, lexemple prcdent peut tre comment de la sorte :
# obtention de la liste des identifiants des processus xeyes
ps ux | grep xeyes \
| grep -v grep \
| awk {print $2} # et voil !
12.5 Les variables
Une variable permet de stocker une valeur an de pouvoir lutiliser ultrieure-
ment.
L o certains langages de programmation distinguent plusieurs types de variables
en fonction des valeurs quelles peuvent stocker (nombres entiers, nombres virgule
ottante, chanes de caractres, etc.), linterprteur de commandes na quun seul
type de variable, qui permet de stocker des chanes de caractres.
Il existe trois catgories de variables :
les variables spciales, dont le nom est constitu dun symbole, dun chire
ou dune chane de caractres alphanumriques et dont la valeur est xe par
linterprteur de commandes (nous avons dj tudi les variables ? et status
au paragraphe 9.3.6.1 page 172, nous en tudierons dautres au paragraphe 12.8
page 245) ;
les variables denvironnement, dont le nom est traditionnellement constitu
de lettres majuscules et dont la valeur est soit xe dans la conguration de
linterprteur de commandes soit hrite de son pre (nous avons par exemple
tudi la variable denvironnement PATH au paragraphe 9.2.2 page 162) ;
les variables dnies par lutilisateur, qui sont celles que nous allons tudier
maintenant.
Les noms des variables dnies par lutilisateur peuvent contenir des lettres (on
fait la dirence entre majuscules et minuscules), des chires ou des tirets bas. Ils ne
peuvent pas commencer par un chire. Les lettres majuscules tant traditionnellement
rserves aux variables denvironnement, on ne les utilise gnralement pas.
Une variable est cre en lui aectant une valeur, selon la syntaxe suivante :
nom=valeur
Il ne faut mettre absolument aucune espace autour du signe gal.
235
Chapitre 12. Programmation
Si la valeur contient des espaces, chacune delle doit tre prcde dune barre
oblique inverse \ ou la valeur doit tre entoure par une paire de guillemets ou
dapostrophes :
nom=valeur\ avec\ espaces
nom="valeur avec espaces"
nom=valeur avec espaces
On peut donc faire, par exemple :
var1=toto
var2="titi tutu"
On accde la valeur dune variable en faisant prcder son nom dun symbole
dollar $. Ainsi, on peut acher le contenu dune variable en utilisant la commande
echo :
echo $variable
Un exemple plus complexe combine plusieurs commandes relies par des tuyaux
et une substitution :
pid=ps ux | grep xeyes | grep -v grep | awk {print $2}
kill $pid
La substitution est trs utile pour aecter une variable la sortie standard dune
commande ou dun enchanement de commandes.
Un autre exemple utilise deux variables pour constituer la valeur dune autre :
pid1=33
pid2=51
pid="$pid1 $pid2"
La valeur de la variable pid est alors :
33 51
Les choses auraient t direntes si lon avait utilis des apostrophes la place
des guillemets :
236
12.6. Le calcul entier
pid1=33
pid2=51
pid=$pid1 $pid2
La valeur de la variable pid serait alors :
$pid1 $pid2
En eet, dans une expression entre guillemets, les variables prcdes dun sym-
bole dollar sont remplaces par leur valeur. Cest dailleurs le cas gnral, sauf dans
une expression entre apostrophes, qui nest pas soumise ce traitement et reste en
ltat.
Cest en particulier pour cela quon fait suivre la commande awk dune expression
entre apostrophes. Celle-ci contenant un $2 qui est destin awk et pas linterprteur
de commandes, il est ncessaire dempcher celui-ci de remplacer $2 par autre chose,
voire de gnrer une erreur si cette variable nexiste pas pour lui.
12.6 Le calcul entier
Linterprteur de commandes permet de raliser des calculs sur des valeurs en-
tires. Lexpression calculer doit tre encadre par $(( et )) :
a=10
b=$(( 166
*
a + 4 ))
echo $b
Une expression encadre par $(( et )) peut utiliser les oprateurs indiqus dans
le tableau 12.1.
+ addition
- soustraction
*
multiplication
/ quotient de la division euclidienne
% reste de la division euclidienne
Table 12.1 Oprateurs utilisables dans une expression encadre par $(( et )).
Les oprateurs
*
, / et % sont plus prioritaires que les oprateurs + et -. Les
multiplications et les calculs des quotients et restes de divisions euclidiennes sont
237
Chapitre 12. Programmation
donc eectus avant les additions et soustractions. priorit gale, les calculs sont
eectus de gauche droite.
Il nest pas ncessaire de faire prcder dun symbole dollar les noms des variables
apparaissant dans une expression encadre par $(( et )) mais on peut le faire si on le
souhaite.
Une expression encadre par $(( et )) peut contenir des espaces. Leur utilisa-
tion est recommande car elle permet de bien sparer les dirents lments dune
expression et facilite donc sa lecture.
12.7 Les instructions de contrle
Les instructions de contrle permettent dexcuter des commandes en fonction
dune condition ou de les rpter plusieurs fois.
12.7.1 Les tests
Les tests permettent dexcuter direntes commandes en fonction dune condi-
tion.
12.7.1.1 La commande test
La commande test permet deectuer de nombreux types de tests sur des chiers,
des chanes de caractres ou des entiers. Son statut de sortie est 0 si le test est russi et
1 dans le cas contraire.
La commande test sutilise suivie dune expression indiquant le test eectuer
et ce quoi lappliquer, par exemple :
$ test 5 -eq 3
$ echo $?
1
$ test 5 -gt 3
$ echo $?
0
Le tableau 12.2 page ci-contre indique les expressions les plus utiles pouvant
suivre la commande test.
On peut nier le sens dune expression en la faisant prcder dun point dexclama-
tion! :
238
12.7. Les instructions de contrle
Expression Condition de russite
-d fichier si fichier existe et est un rpertoire
-e fichier si fichier existe (quel que soit son type)
-f fichier si fichier existe et est un chier ordinaire
-h fichier si fichier existe et est un lien symbolique
c1 = c2 si les chanes de caractres c1 et c2 sont identiques
c1!= c2 si les chanes de caractres c1 et c2 sont direntes
n1 -eq n2 si les entiers n1 et n2 sont gaux
n1 -ne n2 si les entiers n1 et n2 sont dirents
n1 -gt n2 si lentier n1 est strictement suprieur lentier n2
n1 -ge n2 si lentier n1 est suprieur ou gal lentier n2
n1 -lt n2 si lentier n1 est strictement infrieur lentier n2
n1 -le n2 si lentier n1 est infrieur ou gal lentier n2
Table 12.2 Expressions les plus utiles pouvant suivre la commande test.
$ test 5 -eq 3
$ echo $?
1
$ test ! 5 -eq 3
$ echo $?
0
On peut galement combiner deux expressions avec -a (pour and, la combinaison
est vraie si les deux expressions sont vraies et fausse dans les autres cas) ou -o (pour
or, la combinaison est vraie si lune des deux expression est vraie et fausse si les deux
sont fausses) :
$ test 5 -gt 3 -a 2 -lt 7
$ echo $?
0
$ test 5 -gt 3 -a 2 -gt 7
$ echo $?
1
239
Chapitre 12. Programmation
$ test 5 -gt 3 -o 2 -gt 7
$ echo $?
0
$ test 3 -gt 5 -o 2 -gt 7
$ echo $?
1
Enn, la commande test peut galement tre utilise sous une forme particulire,
en nindiquant que lexpression entre crochets. Ainsi, le premier exemple peut
galement scrire ainsi :
$ [ 5 -eq 3 ]
$ echo $?
1
$ [ 5 -gt 3 ]
$ echo $?
0
Lespace aprs le crochet ouvrant et lespace avant le crochet fermant sont obliga-
toires.
Cette faon dcrire les tests est la plus utilise dans les scripts.
http://fr.wikipedia.org/wiki/Test
_
(Unix)
12.7.1.2 Le test if
Le test if permet, si le statut de sortie dune commande qui sert de condition est
nul, dexcuter un bloc de commandes :
if [ -f toto ]
then
echo Le fichier toto existe, on le supprime.
rm toto
fi
Linstruction if est suivie de la commande tester. Si son statut de sortie est nul,
le bloc de commandes compris entre les mots cls then et fi est excut.
Remarquez que le bloc de commandes est indent. Lindentation consiste dcaler
chaque ligne vers la droite en ajoutant quelques espaces (combien? cest une aaire
de got personnel mais trois espaces reprsentent une indentation raisonnable) au
dbut an de faire apparatre la structure du script. Lindentation est syntaxiquement
240
12.7. Les instructions de contrle
inutile pour linterprteur de commandes mais indispensable au confort de lecture
et une comprhension rapide de la structure du script par des personnes. Une
indentation systmatique et cohrente est donc plus que recommande.
Lorsque la condition nest pas remplie, il est possible dexcuter un autre bloc
de commandes, quon ajoute la suite du premier, prcd de linstruction else.
Linstruction fi termine lensemble :
if [ -f toto ]
then
echo Le fichier toto existe, on le supprime.
rm toto
else
echo Le fichier toto n\existe pas.
fi
Enn, si lon souhaite tester plusieurs conditions la suite et excuter un bloc
de commandes pour la premire qui sera vrie, on peut utiliser linstruction elif
(qui est la contraction de else et de if) :
if [ -f toto ]
then
echo Le fichier toto existe, on le supprime.
rm toto
elif [ -f tata ]
then
echo Le fichier tata existe, on le supprime.
rm tata
elif [ -f titi ]
then
echo Le fichier titi existe, on le supprime.
rm titi
else
echo Aucun des fichiers toto, tata et titi n\existe.
fi
La prsence de linstruction else et du bloc correspondant est facultative.
12.7.1.3 Le test case
Lorsquune chane de caractres est tester pour savoir si elle appartient un
ensemble de valeurs, on peut bien entendu utiliser un test if suivi de plusieurs elif
mais il existe un test case dont lutilisation est plus lgante dans ce cas particulier :
241
Chapitre 12. Programmation
case $variable in
toto )
echo la variable contient toto
;;
tata )
echo la variable contient tata
;;
titi )
echo la variable contient titi
;;
esac
Linstruction case est suivie de la chane de caractres tester (qui est souvent la
valeur dune variable mais qui peut galement tre le rsultat dune substitution de
commande, voir le paragraphe 9.4.6 page 183) puis du mot cl in.
On indique ensuite la premire valeur tester par rapport cette chane de carac-
tres, suivie dune parenthse fermante ) (lespace prcdent la parenthse nest pas
obligatoire). Si la valeur correspond, les commandes qui suivent sont excutes, jus-
quau double point-virgule ;; qui les termine. Ceci est rpt pour chaque chane de
caractres tester. Lindentation nest pas obligatoire mais nanmoins recommande.
Enn, le tout se termine par le mot cl esac.
Si les mmes commandes sont excuter pour plusieurs valeurs, on peut regrou-
per celles-ci au moyen du caractre | :
case $variable in
toto | tata )
echo la variable contient toto ou tata
;;
titi )
echo la variable contient titi
;;
esac
Enn, il est possible dutiliser les mmes mtacaractres que ceux tudis au
paragraphe 8.4 page 122 pour indiquer les valeurs tester, la dirence prs que
ceux-ci sappliquent alors des chanes de caractres et pas des noms de chiers :
242
12.7. Les instructions de contrle
case $variable in
[0-9]
*
)
echo la variable commence par un chiffre
;;
[A-Z]
*
)
echo la variable commence par une lettre majuscule
;;
[a-z]
*
)
echo la variable commence par une lettre minuscule
;;
esac
12.7.2 Les boucles
Les boucles permettent de rpter des commandes plusieurs fois.
12.7.2.1 La boucle for
La boucle for permet dattribuer successivement chaque valeur dune liste une
variable et, pour chaque valeur, dexcuter un bloc de commandes.
Cest ainsi que nous allons rsoudre le problme que nous nous tions pos au
paragraphe 12.1 page 231 :
for i in 0 1 2 3 4 5 6 7 8 9
do
mv toto$i tata$i
done
Linstruction for est suivie du nom de la variable utiliser, qui est cre cette
occasion, puis du mot cl in et de la liste de valeurs attribuer successivement la
variable.
Le bloc de commandes excuter pour chaque valeur de la liste est compris
entre les mots cls do et done. Lindentation nest pas obligatoire mais nanmoins
recommande.
Dans notre exemple, la variable i va prendre successivement les valeurs de 0 9.
Compte tenu de lutilisation de la valeur de cette variable dans le bloc de la boucle
for, la commande suivante sera excute lors de la premire itration (i ayant la
valeur 0) :
mv toto0 tata0
243
Chapitre 12. Programmation
Et ainsi de suite. Si le problme pos au paragraphe 12.1 page 231 avait concern
le renommage des chiers toto00 jusqu toto99 en tata00 jusqu tata99, on aurait
utilis deux boucles imbriques :
for i in 0 1 2 3 4 5 6 7 8 9
do
for j in 0 1 2 3 4 5 6 7 8 9
do
mv toto$i$j tata$i$j
done
done
La liste de valeurs peut galement tre gnre grce des mtacaractres :
for f in
*
.ps
do
psnup -4 $f | lpr -P imprimante
done
ou une substitution de commande :
for p in ps ux | grep xeyes | grep -v grep | awk {print $2}
do
echo on tue le processus $p
kill $p
done
12.7.2.2 Les boucles while et until
La boucle while permet dexcuter un bloc de commandes tant que le statut de
sortie dune commande est nul :
a=0
while [ $a -lt 5 ]
do
echo $a
a=$(( a + 1 ))
done
244
12.8. Les arguments
Linstruction while est suivie de la commande tester. Si son statut de sortie
est nul, le bloc de commandes compris entre les mots cls do et done est excut.
Lindentation nest pas obligatoire mais nanmoins recommande.
Le script prcdent achera donc :
0
1
2
3
4
Il est important de vrier formellement que la commande tester, quon appelle
condition darrt, nira par avoir un statut de sortie non nul, permettant dinter-
rompre la boucle while. Dans le cas contraire, on bouclera linni.
La boucle until permet dexcuter un bloc de commandes jusqu ce que le statut
de sortie dune commande soit nul. La condition darrt est donc inverse par rapport
la boucle while. Lexemple prcdent peut scrire ainsi avec une boucle until :
a=0
until [ $a -ge 5 ]
do
echo $a
a=$(( a + 1 ))
done
12.8 Les arguments
Il est possible dexcuter un script en lui indiquant des arguments :
$ ./toto.sh arg1 arg2 arg3
Dans le script, le nombre darguments est contenu dans la variable spciale # et la
liste des arguments est contenue dans la variable spciale @ :
echo le script a $# arguments :
for a in "$@"
do
echo $a
done
245
Chapitre 12. Programmation
Il est important de toujours utiliser la valeur de la variable spciale @ entre
guillemets. Sans cela, un argument contenant des espaces sera dcompos en la suite
de mots quil contient.
Un exemple sera plus parlant. Le script prcdent, excut avec trois arguments
dont lun contient une espace, ache ceci :
$ ./toto.sh arg1 arg2 arg2bis arg3
le script a 3 arguments :
arg1
arg2 arg2bis
arg3
Le deuxime argument du script, qui contient deux mots spars par une espace,
a bien t trait dans sa totalit.
Si lon supprime les guillemets autour de $@ dans le script, on aura ceci en
excutant le script avec les mmes arguments :
$ ./toto.sh arg1 arg2 arg2bis arg3
le script a 3 arguments :
arg1
arg2
arg2bis
arg3
Le nombre darguments est correct car la valeur de la variable spciale # nest
bien entendu pas impacte par la prsence ou labsence de guillemets autour de $@.
En revanche, les deux mots du deuxime argument du script ont t spars et traits
indpendamment dans la boucle for.
12.9 Les fonctions
Une fonction permet dcrire un morceau de script dans le but de lutiliser
plusieurs reprises.
La dnition dune fonction est de la forme :
fonction ()
{
corps de la fonction
}
246
12.9. Les fonctions
La premire ligne indique le nom de la fonction, qui doit tre suivi dun couple
de parenthses.
Suit le corps de la fonction, qui est entour dun couple daccolades. Le corps
de la fonction est constitu des commandes et des instructions permettant de ra-
liser lobjectif de la fonction. Lindentation nest pas obligatoire mais nanmoins
recommande.
Une fonction doit tre dnie avant de pouvoir tre utilise. Cest pourquoi on
regroupe gnralement les dnitions de fonctions en dbut de script.
Pour excuter une fonction, cest--dire excuter les commandes et instructions
constituant son corps, il sut dutiliser le nom de la fonction comme on le ferait
avec une commande.
Voici un exemple trs simple de script dnissant puis utilisant une fonction :
toto ()
{
echo nous sommes dans la fonction toto
}
toto
Il est possible dexcuter une fonction en lui indiquant des arguments, de la mme
faon quavec une commande. lintrieur de la fonction, le nombre et la liste des
arguments sont contenus dans les mmes variables spciales que celles abordes au
paragraphe 12.8 page 245 :
toto ()
{
echo la fonction a $# arguments :
for a in "$@"
do
echo $a
done
}
toto arg1 arg2 arg3
Ces variables spciales ne contiennent les nombre et liste des arguments de la
fonction qu lintrieur de celle-ci. En dehors de la fonction, elles contiennent les
nombre et liste des arguments du script.
Une fonction a galement un statut de sortie, quon peut envoyer au moyen de
linstruction return :
247
Chapitre 12. Programmation
toto ()
{
echo nous sommes dans la fonction toto
return 0
}
toto
echo $?
Linstruction return provoque la sortie immdiate de la fonction en envoyant le
statut de sortie qui la suit.
Linstruction return utilise seule envoie un statut de sortie nul.
Si le statut de sortie de la fonction nest pas explicitement envoy grce lins-
truction return, il sera gal celui de la dernire commande excute par la fonction.
12.10 Statut de sortie
Le statut de sortie dun script est envoy au moyen de la commande exit :
echo ceci est un script qui se termine bien
exit 0
La commande exit provoque la sortie immdiate du script en envoyant le statut
de sortie indiqu en argument.
Si le statut de sortie du script nest pas explicitement envoy grce la commande
exit ou si celle-ci est utilise sans argument, le statut de sortie du script sera gal
celui de la dernire commande excute par le script.
12.11 uelques conseils gnraux sur la programmation
Pour terminer cette rapide introduction la programmation avec linterprteur
de commandes, il convient dindiquer quelques conseils, qui sont dailleurs valables
quel que soit le langage de programmation utilis.
La lisibilit dun programme est essentielle car elle facilite sa lecture et sa compr-
hension. cet eet, il est indispensable dutiliser une indentation systmatique pour
faire apparatre la structure du programme. Des lignes blanches peuvent galement
tre utilises pour sparer visuellement les direntes parties dun programme.
Les commentaires sont importants pour claircir certaines parties du programme
dont la comprhension nest pas vidente. Il ne faut pas hsiter en utiliser.
248
12.11. uelques conseils gnraux sur la programmation
Le problme se pose souvent de savoir quand tester un programme. Faut-il crire
le programme en entier et le tester une fois termin (avec en hors duvre une
farandole derreurs de syntaxe) ou crire le programme petit petit et le tester au fur
et mesure ?
La bonne mthode pour concevoir un programme est bien entendu la seconde.
De manire plus dtaille, la dmarche suivre est la suivante :
1. crire un petit morceau de programme qui se sut lui-mme ;
2. tester le programme (et donc corriger les erreurs de syntaxe) et vrier sil
fonctionne correctement ; si ce nest pas le cas, le corriger jusqu obtention du
rsultat souhait puis reprendre ltape 1.
De cette faon, vous serez certain davoir, tout moment, un programme qui
fonctionne.
Enn, pour nir sur une note philosophique, lorsquon programme, il faut
toujours avoir lesprit ce principe fondamental :
Lordinateur fait ce que vous lui dites de faire,
pas ce que vous voulez quil fasse.
Vous pouvez prendre un moment pour mditer...
249
uatrime partie
Cration dun site Web
13
Formats de documents et historique de la toile
L
e Web (de son nom complet World Wide Web, en franais toile daraigne
mondiale, toile mondiale ou tout simplement toile) est lapplication
emblmatique de lInternet, tel point que beaucoup confondent ce seul
service avec le rseau informatique mondial (qui en ore bien plus).
Source fantastique dinformation mais aussi de dsinformation, le meilleur y
ctoie souvent le pire. Certaines entreprises en restreignent dailleurs laccs leurs
employs an dviter que ceux-ci ne passent trop de temps sur des sites sans rapport
avec leur activit professionnelle. Toujours est-il que la toile est aujourdhui un outil
indispensable et quon peut se demander comment on ferait pour vivre sans.
Dans ce cours, la toile sera le prtexte la ralisation dun petit site de quelques
pages, permettant la sensibilisation des lves aux formats de documents, la spara-
tion de la structure et de laspect ainsi quau respect des normes.
Les sites Web utilisent en eet deux formats de chiers spciques :
HTML (Hypertext Markup Language), qui dcrit la structure logique et le
contenu textuel des pages ;
CSS (Cascading Style Sheets), qui dcrit laspect visuel des pages.
Chaque page dun site Web correspond un chier au format HTML (on parle
de page HTML). Laspect visuel de lensemble des pages dun site est contrl par un
chier au format CSS (on parle de feuille de style) auquel toutes les pages HTML font
rfrence.
En pratique, pages HTML et feuille de style sont simplement des chiers texte
dont la syntaxe sera explicite dans les chapitres suivants.
Mais auparavant, il convient de sattarder sur un problme fondamental, celui
des formats de documents.
13.1 Des formats de documents
Nous lavons rapidement vu au paragraphe 4.2 page 44, le format dun chier est
la faon dont sont organises les donnes quil contient.
253
Chapitre 13. Formats de documents et historique de la toile
http://fr.wikipedia.org/wiki/Format
_
de
_
donnes
13.1.1 Formats ouverts, formats ferms
Certains formats sont dits ouverts. Un format ouvert est un format dont les sp-
cications techniques sont publiques et sans restriction daccs ni de mise en uvre
1
.
Il est donc possible quiconque le souhaite de comprendre le fonctionnement dun
tel format et dcrire un logiciel lutilisant.
Par opposition, les formats ferms (appels galement formats propritaires)
sont des formats pour lesquels il nexiste aucune spcication technique accessible
publiquement. Chaque format ferm est gnralement li un logiciel particulier,
qui est souvent le seul pouvoir lexploiter. On peut donc lgitimement sinterroger
sur la prennit des donnes cones des logiciels utilisant des formats ferms.
En eet, la tendance actuelle est la dmatrialisation, que ce soit pour les
entreprises ou pour les particuliers, ce qui implique une utilisation de plus en plus
importante de chiers numriques. Ceci pose deux problmes :
celui du support de stockage des donnes (pourrai-je relire mon CD-ROM, ma
cl USB ou ma carte SD dans dix ans ?) ;
celui du format des donnes (pourrai-je relire mon chier dans dix ans ?).
Le problme du support de stockage nen est pas vraiment un compte tenu de
laugmentation constante des capacits de stockage. Il sut de recopier rgulirement
ses chiers sur un nouveau support. On peut par exemple faire tenir le contenu de 25
CD-ROM sur une cl USB de 16Go, qui cote aujourdhui quelques dizaines deuros.
En conservant ses chiers en double ou triple exemplaire des endroits dirents,
on est galement quasiment assur de ne pas les perdre en cas de dfaillance dun des
supports ou de sinistre.
Le vrai problme est celui du format des donnes, lorsquon utilise un format
ferm. Mon logiciel de dans dix ans, sil existe encore, saura-t-il relire mon chier
daujourdhui sans perte ou distorsion de contenu ? Faut-il envisager, comme pour le
support, des conversions rgulires avec une version plus rcente du logiciel (avec
le mme risque de perte ou de distorsion de contenu) ? Les logiciels en question
permettant rarement de convertir automatiquement un ensemble de chiers (avec les
doutes quon peut lgitimement avoir sur la qualit de la conversion), il peut sagir
dun travail considrable sil faut le faire la main.
Ce problme se pose beaucoup moins avec les formats ouverts, qui ne sont pas
dpendants dun logiciel particulier. Par ailleurs, dans la mesure o leurs spcications
techniques sont publiques, il sera toujours possible den interprter le contenu
lavenir, sans perte de donnes.
1. Il sagit de la formulation exacte gurant dans le texte de la loi n 2004-575 du 21 juin 2004 pour la
conance dans lconomie numrique.
254
13.1. Des formats de documents
http://fr.wikipedia.org/wiki/Format
_
ouvert
http://fr.wikipedia.org/wiki/Format
_
propritaire
13.1.2 Un exemple de format ouvert : SGML
SGML (Standard Generalized Markup Language) est un cadre gnral permettant
de concevoir des documents structurs.
Un exemple de chier SGML permettra de mieux comprendre. Celui indiqu
dans le listage 13.1 page suivante dcrit la recette du planteur.
Un document SGML est un mlange de texte et de balises, qui servent indiquer
la structure du document. Une balise (tag en anglais) est compose dune chane de
caractres, appele lment, encadre par deux chevrons < et > qui permettent de
distinguer la balise du texte du document. Les balises vont gnralement par paire,
<BALISE> pour indiquer le dbut de quelque chose et </BALISE> pour indiquer sa n.
On emploie galement le terme lment pour dsigner lensemble comprenant la
balise de dbut, la balise de n correspondante et leur contenu.
Ainsi lensemble du document gure entre <COCKTAIL> et </COCKTAIL>. lint-
rieur, <NOM> indique le nom du cocktail. Suivent les ingrdients ainsi que les tapes
de la prparation.
Les balises de n peuvent tre omises lorsque le contexte le permet. Ainsi, dans
notre exemple, lutilisation de la balise <QUANTITE> dans la liste des ingrdients
implique la n de la balise <INGREDIENT> qui la prcde.
Un document SGML est gnralement destin tre converti en document
visualisable lcran ou imprimable. Notez quil nest indiqu nulle part quelle doit
tre la prsentation du document, si les ingrdients doivent gurer sous forme de
liste ou de tableau, etc. Il faut bien insister sur ce point : un document SGML est
dni en termes de structure, pas de prsentation. Cest ensuite au moment de la
conversion quest spcie la mise en page et lon peut tout fait adopter plusieurs
prsentations pour un mme document SGML. La forme peut changer, pas le fond.
SGML ne dnit pas dlments particuliers comme ceux de lexemple mais
permet de crer des ensembles dlments et dindiquer la faon de les agencer.
Ainsi, dans notre exemple, lensemble du document doit tre inclus entre des
balises <COCKTAIL> et </COCKTAIL>. Doit suivre le nom du cocktail, puis la liste des
ingrdients, puis la prparation. On ne peut pas, par exemple, faire gurer un lment
INGREDIENT en dehors de la liste des ingrdients gurant dans llment INGREDIENTS.
La liste des lments utilisables dans un document ainsi que la faon de les agencer
sont dnies dans la DTD (Document Type Denition). La DTD est stocke dans
un chier texte, ici cocktail.dtd, dont le nom est indiqu par llment DOCTYPE.
La forme de sa balise est dirente des balises habituelles et elle indique galement
quel est llment principal du document (ici, COCKTAIL, qui contient lensemble du
document).
255
Chapitre 13. Formats de documents et historique de la toile
<!DOCTYPE COCKTAIL SYSTEM "cocktail.dtd">
<COCKTAIL>
<NOM>Planteur
<INGREDIENTS>
<INGREDIENT>jus dorange
<QUANTITE>5 dl
<INGREDIENT>jus de goyave
<QUANTITE>5 dl
<INGREDIENT>jus dananas
<QUANTITE>5 dl
<INGREDIENT>rhum blanc
<QUANTITE>3 dl
<INGREDIENT>sirop de sucre de canne
<QUANTITE>3 dl
<INGREDIENT>cannelle
<QUANTITE>1 bton
<INGREDIENT>vanille
<QUANTITE>1 gousse
</INGREDIENTS>
<PREPARATION>
<ETAPE>mlanger les liquides
<ETAPE>fendre la gousse de vanille en deux, gratter
lintrieur et ajouter le tout la prparation
avec la cannelle
<ETAPE>laisser macrer une nuit
<ETAPE>servir frais
</PREPARATION>
</COCKTAIL>
Listage 13.1 Exemple de chier SGML.
256
13.1. Des formats de documents
Confront un besoin documentaire, on peut donc utiliser une DTD permettant
de concevoir des documents adquats. Si une DTD convenable nexiste pas, il est
toujours possible den crer une.
http://fr.wikipedia.org/wiki/Standard
_
Generalized
_
Markup
_
Language
http://fr.wikipedia.org/wiki/Document
_
Type
_
Definition
13.1.3 Lvolution de SGML : XML
SGML na t adopt que par de grandes entreprises ayant dimportants besoins
de documentation. Sa mise en uvre est en eet assez lourde.
XML (Extensible Markup Language) reprend les caractristiques de SGML et
vise les rendre plus simples. Les dirences visibles entre SGML et XML sont
principalement que :
les lments doivent tre crits en minuscules ;
toute balise ouvrante doit tre explicitement ferme ;
les balises doivent tre correctement imbriques.
La fermeture explicite des balises vise simplier le travail des outils de traitement
des chiers XML. En SGML, la fermeture des balises nest pas obligatoire si elle peut
tre infre par le contexte. Ceci complique le travail des outils de traitement et peut
parfois tre ambigu.
Limbrication des balises a galement pour objectifs la simplicit et la disparition
des ambiguts. Ainsi, cette imbrication, autorise en SGML :
<balise1> <balise2>
...
</balise1> </balise2>
est interdite en XML. Les balises doivent tre fermes dans lordre inverse de leur
ouverture :
<balise1> <balise2>
...
</balise2> </balise1>
Ainsi, lexemple de cocktail, crit en XML, donne ce qui est indiqu dans le
listage 13.2 page suivante.
http://www.w3.org/XML/
http://fr.wikipedia.org/wiki/Extensible
_
Markup
_
Language
257
Chapitre 13. Formats de documents et historique de la toile
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cocktail SYSTEM "cocktail.dtd">
<cocktail>
<nom>Planteur</nom>
<ingredients>
<ingredient>jus dorange</ingredient>
<quantite>5 dl</quantite>
<ingredient>jus de goyave</ingredient>
<quantite>5 dl</quantite>
<ingredient>jus dananas</ingredient>
<quantite>5 dl</quantite>
<ingredient>rhum blanc</ingredient>
<quantite>3 dl</quantite>
<ingredient>sirop de sucre de canne</ingredient>
<quantite>3 dl</quantite>
<ingredient>cannelle</ingredient>
<quantite>1 bton</quantite>
<ingredient>vanille</ingredient>
<quantite>1 gousse</quantite>
</ingredients>
<preparation>
<etape>mlanger les liquides</etape>
<etape>fendre la gousse de vanille en deux, gratter
lintrieur et ajouter le tout la prparation
avec la cannelle</etape>
<etape>laisser macrer une nuit</etape>
<etape>servir frais</etape>
</preparation>
</cocktail>
Listage 13.2 Exemple de chier XML.
258
13.2. Historique de la toile
13.2 Historique de la toile
Le World Wide Web a t cr en 1989 par Tim Berners-Lee, informaticien
lOrganisation europenne pour la recherche nuclaire (CERN), rapidement rejoint
par lun de ses collgues, Robert Cailliau.
Son but tait de partager des documents au sein du CERN sur le principe de
lhypertexte, popularis par le logiciel HyperCard sur Macintosh. Dans un document
hypertexte, certains mots ou groupes de mots sont rendus actifs et le fait de les
slectionner mne vers un autre document. Un tel mot ou groupe de mots est ce
quon appelle un hyperlien.
Pour dcrire ces documents, un format ouvert spcique, HTML (Hypertext
Markup Language), driv de SGML, est invent. Conu pour tre indpendant de
lenvironnement dachage des documents (systme dexploitation, logiciel, cran
ou autre priphrique de sortie), HTML est encore trs dpouill et ne contient que
quelques lments de structure ainsi que celui permettant de relier les documents
entre eux.
Nous utiliserons le terme butineur (browser en anglais) pour dsigner le logiciel
dachage des pages HTML. On utilise galement navigateur mais il faut reconnatre
que butineur est bien plus bucolique et traduit mieux la promenade quon peut faire,
au gr de sa curiosit, dun site un autre.
En 1991, le premier serveur Web hors du CERN est cr. En 1993, le butineur
NCSA Mosaic, disponible dabord pour UNIX, puis pour Windows et Macintosh,
commence populariser la toile. NCSA Mosaic tend le langage HTML pour
permettre dinclure des images dans les documents. Il rajoutera plus tard la gestion
des formulaires.
En 1994, est fond le World Wide Web Consortium (W3C), destin piloter
lvolution des technologies utilises sur la toile, notamment HTML.
Toujours en 1994, une partie de lquipe ayant travaill sur NCSA Mosaic cre
lentreprise Mosaic Communications Corporation, renomme par la suite Netscape
Communications Corporation, an de diuser le butineur Mosaic Netscape, re-
nomm lui aussi Netscape Navigator, et disponible pour divers UNIX, Windows et
Macintosh.
Anne bien charge, 1994 marque galement le dbut de laccs lInternet pour
le grand public.
En 1995, Microsoft, qui sest laiss distancer sur ce qui apparat dj comme un
secteur stratgique, lance Internet Explorer. Il sagit tout dabord dune extension
payante de Windows 95. Il sera ensuite tlchargeable gratuitement, intgr aux mises
jour de Windows 95 puis nalement intgr dorigine Windows 98, valant
Microsoft de nombreuses condamnations pour abus de position dominante.
Dbuta alors ce quon a appel la guerre des butineurs (the browser wars) entre In-
ternet Explorer et Netscape Navigator. Chaque logiciel ajoutant ses propres lments
HTML et copiant ceux de lautre. Le tout sans aucun respect pour le principe de
sparation de la structure et de laspect, ainsi que pour le processus de standardisation
259
Chapitre 13. Formats de documents et historique de la toile
du W3C. Il ntait pas rare de voir en page daccueil des sites Web une mention
indiquant : ce site est optimis pour telle version de tel butineur , baouant ainsi
le principe dindpendance de HTML par rapport au butineur. Cette escalade de la
violence aboutira, entre autres, linvention de linfme lment BLINK pour faire
clignoter du texte...
Au printemps 1998, le code source de Netscape Navigator, renomm pour loc-
casion Mozilla, qui tait son nom de code interne, est publi sous une licence libre.
Lassociation Mozilla est cre an de reprendre son dveloppement.
Fin 1998, Microsoft vient bout de Netscape Communications Corporation, qui
sera rachet lanne suivante par America Online (AOL). De nouvelles versions de
Netscape Navigator bases sur le travail eectu sur Mozilla, seront distribues par
AOL jusquau dbut 2008.
La guerre des butineurs a pitin les principes fondateurs de la toile et laisse
derrire elle de nombreux dialectes de HTML.
Le W3C a bien tent de fdrer ce quil pouvait avec HTML 2.0, en 1995, puis
HTML 3.2 (la version 3.0 nayant pas abouti), en 1997, mais qui sen soucie ? HTML
3.2 est de toute faon une hrsie, qui se fourvoie dans un mlange dlments
dcrivant laspect des documents plutt que leur structure. Pourtant la spcication
des feuilles de style, qui permet dappliquer de nombreuses modications daspect
un document HTML bien structur, a t publie n 1996.
Puis, toujours en 1997, le W3C publie la spcication de HTML 4.0, qui existe
en trois versions. Deux dentre elles reprennent le ct obscur de HTML 3.2 mais
la troisime renoue de manire spectaculaire avec la philosophie dorigine du Web.
Avec une lgre retouche en 1999, HTML 4.01 est toujours la version actuelle utilise
sur la toile aujourdhui.
HTML cristallise videmment dnormes enjeux, en particuliers commerciaux,
et la standardisation de HTML 5 est toujours en cours.
En 1998, le W3C publie la premire spcication de XML, puis en 2000, celle de
XHTML 1.0, qui est tout simplement la rcriture de HTML 4.01 la mode XML.
Suivra XHTML 1.1 en 2001. Cest la version de XHTML qui est toujours en usage
aujourdhui.
Pendant ce temps, Mozilla volue. La version 1.0 sort en 2002. Un nouveau
projet est lanc, sur la base du moteur dachage de Mozilla, qui aboutira en 2004 au
logiciel Firefox. Mozilla sera abandonn par la suite.
Internet Explorer, dont le dveloppement sest beaucoup ralenti aprs sa victoire
sur Netscape Navigator, commence se faire rattraper par Mozilla puis Firefox. Cest
le dbut de la seconde guerre des butineurs, qui continue aujourdhui.
Outre Internet Explorer et Firefox, citons galement les butineurs Chrome (dit
par Google), Opera (dit par Opera Software) et Safari (dit par Apple), dont les
parts de march sont actuellement plus faibles mais non ngligeables.
Internet Explorer perd rgulirement des utilisateurs au prot de Firefox, consi-
dr comme plus dynamique et plus novateur. Pour preuve, la version 3.5 de Firefox,
sortie le 30 juin 2009, intgrait dj une bauche substantielle de gestion de HTML 5.
260
13.2. Historique de la toile
Mme si certains aspects de HTML 5 ont t intgrs dans Internet Explorer 8, il
aura fallu attendre Internet Explorer 9 (sorti le 14 mars 2011) pour que Microsoft
comble son retard.
http://info.cern.ch/
http://fr.wikipedia.org/wiki/World
_
Wide
_
Web
http://fr.wikipedia.org/wiki/Hypertexte
http://fr.wikipedia.org/wiki/HyperCard
http://fr.wikipedia.org/wiki/NCSA
_
Mosaic
http://www.w3.org/
http://fr.wikipedia.org/wiki/World
_
Wide
_
Web
_
Consortium
http://fr.wikipedia.org/wiki/Netscape
_
Navigator
http://fr.wikipedia.org/wiki/Internet
_
Explorer
http://fr.wikipedia.org/wiki/volution
_
de
_
lusage
_
des
_
navigateurs
_
Internet
http://www.mozilla.org/
http://fr.wikipedia.org/wiki/Mozilla
_
Foundation
http://fr.wikipedia.org/wiki/Mozilla
http://www.mozilla.com/
http://fr.wikipedia.org/wiki/Mozilla
_
Firefox
http://www.google.com/chrome/
http://www.opera.com/
http://www.apple.com/fr/safari/
http://fr.wikipedia.org/wiki/Part
_
de
_
march
_
des
_
navigateurs
_
Web
http://fr.wikipedia.org/wiki/HTML5
http://diveintohtml5.org/
http://html5gallery.com/
http://html5doctor.com/
http://www.webhostingsecretrevealed.com/featured-articles/
learn-html5-10-must-read-lessons/
261
14
HTML, XHTML
L
a ralisation dun site Web peut se faire de deux faons. La plus rpan-
due consiste utiliser un logiciel semblable un traitement de texte.
Gnralement, lutilisateur na que peu de contrle sur le code HTML g-
nr par ce logiciel, code qui est souvent de mauvaise qualit et rarement
valide, mme si le laxisme des butineurs permet de lacher correctement. Lautre
faon de faire consiste raliser les pages la main , en concevant directement le
code HTML au moyen dun diteur de texte.
Cest videmment cette seconde approche que nous allons utiliser, puisquelle
permet de matriser totalement le code HTML et sa conformit. Cest galement un
prtexte lutilisation dun diteur de texte ainsi qu la mise en pratique des notions
tudies jusquici.
Les pages seront ralises conformment au standard XHTML 5 (qui correspond
HTML 5 crit la mode XML) et leur qualit sera systmatiquement valide grce
au vricateur du W3C :
http://validator.w3.org/
Ltude de lensemble des lments existant en HTML dpasse le cadre de ce
cours aussi nous nous limiterons aux plus utiles. Dans la description des lments, il
sera autant que possible fait rfrence la partie correspondante dans la spcication
de HTML 5.
Le lecteur curieux pourra se reporter aux ouvrages suivants de la bibliographie
pour approfondir ses connaissances :
HTML for Babies [52]
Designing with Web Standards [53]
Mmento XHTML [35]
HTML & XHTML : The Denitive Guide [43]
HTML & XHTML Pocket Reference [46]
HTML5 : Up and Running [45]
HTML5 Cookbook [48]
Russir son site web avec XHTML et CSS [44]
Premiers pas en CSS et XHTML [32]
263
Chapitre 14. HTML, XHTML
XHTML et CSS [49]
HTML5 et CSS3 [39]
HTML5 et CSS3 [50]
Sams Teach Yourself HTML and CSS in 24 Hours [40]
HTML & CSS : The Good Parts [37]
HTML5 & CSS3 [38]
http://www.w3.org/TR/html5/
http://www.w3.org/html/
http://fr.wikipedia.org/wiki/Hypertext
_
Markup
_
Language
http://fr.wikipedia.org/wiki/Extensible
_
HyperText
_
Markup
_
Language
http://fr.wikibooks.org/wiki/Le
_
langage
_
HTML
http://htmlhelp.com/
http://w3schools.com/
14.1 Structure gnrale dune page XHTML
Une page XHTML minimale doit respecter la structure suivante :
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!DOCTYPE html>
4
5 <html lang="fr" xmlns="http://www.w3.org/1999/xhtml">
6
7 <head>
8
9 <!-- ici se trouve len-tte du document -->
10
11 </head>
12
13 <body>
14
15 <!-- ici se trouve le corps du document -->
16
17 </body>
18
19 </html>
De manire dtaille :
la ligne 1 est la dclaration XML du document, qui indique la version de XML
utilise ainsi que le codage du document ;
264
14.1. Structure gnrale dune page XHTML
la ligne 3 indique quil sagit dun document HTML;
la ligne 5 dbute le document proprement dit par la balise <html> ;
len-tte du document (voir le paragraphe 14.1.1) se trouve entre les balises
<head> et </head> (lignes 7 11) ;
le corps du document (voir le paragraphe 14.1.2 page suivante) se trouve entre
les balises <body> et </body> (lignes 13 17) ;
enn, le document se termine la ligne 19 par la balise </html>, qui ferme
celle ouverte la ligne 5.
loccasion, vous aurez remarqu que les commentaires en HTML sont dlimits
par <!-- et -->. Ils peuvent stendre sur plusieurs lignes.
Vous aurez galement remarqu que la balise ouvrante de llment html est
accompagne de deux attributs. Un attribut modie ou complte la signication dun
lment. Les attributs sont placs dans la balise ouvrante entre le nom de llment
et le chevron > qui marque la n de la balise et sont de la forme nom="valeur". Les
guillemets sont obligatoires. Le premier attribut est spar de llment par une
espace et les attributs sont galement spars entre eux par des espaces.
Ici, llment html a deux attributs :
lattribut lang indique le code ISO 639 de la langue utilise dans le document
(fr pour le franais, en pour langlais, etc.) ;
lattribut xmlns indique lespace de nommage (notion qui ne sera pas aborde)
utilis.
http://www.w3.org/TR/html5/semantics.html#the-html-element
http://www.w3.org/TR/html5/syntax.html#comments
14.1.1 Len-tte
Len-tte est dlimit par les balises <head> et </head>.
Il doit obligatoirement contenir le titre du document, entre les balises <title> et
</title>, qui apparatra dans la barre de titre de la fentre du butineur :
<title>Ceci est le titre de la page</title>
Il peut galement contenir un ou plusieurs lments meta. Celui-ci est utilis pour
donner des informations supplmentaires sur le document (auteur, liste de mots cls,
etc.), par exemple :
<meta name="author" content="Marc Baudoin"/>
Notez que llment meta na ni balise douverture ni balise de fermeture. Il ne
sagit en eet pas dun lment entourant du texte destin apparatre quelque part.
Un tel lment est dit vide. Les balises des lments vides scrivent avec une barre
265
Chapitre 14. HTML, XHTML
oblique / juste avant le chevron > de fermeture de la balise. Les lments vides sont
utiliss soit pour indiquer des structures trs simples (nous en verrons par la suite)
soit, lorsquils en ont, uniquement pour leurs attributs.
Lordre dapparition des lments dans len-tte est sans importance.
Un en-tte minimal contient donc :
<head>
<title>Ceci est le titre de la page</title>
</head>
http://www.w3.org/TR/html5/document-metadata.html
14.1.2 Le corps
Le corps est dlimit par les balises <body> et </body>.
Il peut contenir lensemble des lments que nous allons tudier par la suite.
http://www.w3.org/TR/html5/sections.html#the-body-element
14.2 Nommage et emplacement des chiers
Chaque page XHTML doit tre stocke dans un chier ayant lextension .xhtml.
Par convention, an de pouvoir tre accessibles grce des URL de la forme :
http://perso.ensta-paristech.fr/~identifiant/fichier.xhtml
ces chiers doivent tre placs dans un rpertoire public
_
html situ dans le r-
pertoire personnel de lutilisateur. Ainsi, lURL ci-dessus permettra daccder au
chier ~/public
_
html/fichier.xhtml de lutilisateur identifiant.
De mme, celui de ces chiers qui fait oce de page daccueil doit sappeler
index.xhtml an dtre accessible simplement au moyen de lURL :
http://perso.ensta-paristech.fr/~identifiant/
cest--dire sans indiquer de nom de chier.
Par ailleurs, il convient de prendre quelques prcautions quant aux droits
daccs. En eet, lorsquun butineur accde lURL :
http://perso.ensta-paristech.fr/~identifiant/fichier.xhtml
266
14.3. Au sujet des exemples qui suivent
le contenu du chier fichier.xhtml lui est fourni par un processus fonctionnant
sous lidentit dun utilisateur particulier, qui nest ni son propritaire ni un
membre de son groupe. Il est donc indispensable que fichier.xhtml dispose du
droit de lecture pour les autres. De mme, il est indispensable que le rpertoire
public
_
html mais galement le rpertoire personnel de lutilisateur identifiant
disposent du droit dexcution pour les autres an de pouvoir tre traverss par ce
processus.
14.3 Au sujet des exemples qui suivent
Chacun des exemples qui vont suivre sera suppos gurer dans le corps (ne
contenant que lexemple en question) dune page XHTML conforme la structure
indique prcdemment.
Chaque exemple sera immdiatement suivi du rendu graphique que la page
complte donne dans Firefox 30.0.
14.4 Les lments usuels
14.4.1 Les lments de titres h1, h2, h3, h4, h5 et h6
Les lments h1, h2, h3, h4, h5 et h6 (pour heading) permettent de dnir des
titres. On utilise h1 pour les titres de premier niveau, h2 pour les titres de deuxime
niveau et ainsi de suite :
<h1>Titre de premier niveau</h1>
<!-- ici on peut mettre un texte dintroduction -->
<h2>Titre de deuxime niveau</h2>
<!-- texte -->
<h2>Titre de deuxime niveau</h2>
<!-- texte -->
267
Chapitre 14. HTML, XHTML
Un titre de niveau infrieur ne peut suivre quun titre de niveau immdiatement
suprieur. En dautres termes, on ne peut pas avoir un titre en h3 aprs un titre en h1.
De mme, le premier titre dun document doit tre un h1.
Les titres sont habituellement achs en gras et avec des caractres de taille
dcroissante de h1 h6.
http://www.w3.org/TR/html5/sections.html#the-h1,-h2,-h3,-h4,-h5,
-and-h6-elements
http://www.w3.org/TR/html5/sections.html#headings-and-sections
14.4.2 Llment de paragraphe p
Llment p permet de dlimiter un paragraphe :
<p>
Ceci est un paragraphe. Les paragraphes sont la base
de quasiment tous les documents HTML.
</p>
<p>
Ceci est un autre paragraphe. Un document HTML peut
en contenir autant que ncessaire.
</p>
268
14.4. Les lments usuels
Un paragraphe ne peut pas contenir un autre paragraphe. Il ne peut pas contenir
un titre et un titre ne peut pas le contenir. En revanche, on peut avoir :
<h1>Titre</h1>
<p>
Ceci est un paragraphe.
</p>
<h2>Sous-titre</h2>
<p>
Ceci est un paragraphe.
</p>
Un document HTML ne peut pas contenir de texte isol. Tout texte doit tre
contenu dans quelque chose, titre, paragraphe ou dautres lments non encore
tudis.
269
Chapitre 14. HTML, XHTML
Les espaces et retours la ligne sont ignors. ce sujet, remarquez comment
sont disposes les balises dans lexemple prcdent. Celles des titres les encadrent
sur la mme ligne, parce quun titre est gnralement court. Celles des paragraphes
sont chacune sur une ligne avant et aprs le paragraphe, parce quun paragraphe est
gnralement plus long. Rien noblige bien entendu adopter ce genre de prsentation
mais elle facilite la lecture du document, de mme que les lignes blanches sparant les
dirents blocs.
http://www.w3.org/TR/html5/grouping-content.html#the-p-element
14.4.3 Llment de let hr
Llment hr (pour horizontal rule) insre une ligne quon appelle en typogra-
phie un let horizontale. Il sagit dun lment vide dans la mesure o il nencadre
rien du tout mais gure un endroit prcis :
<p>
Ceci est un paragraphe.
</p>
<hr/>
<p>
Ceci est un paragraphe.
</p>
http://www.w3.org/TR/html5/grouping-content.html#the-hr-element
14.4.4 Llment de retour la ligne br
Llment vide br (pour break) gnre un retour la ligne :
270
14.4. Les lments usuels
<p>
rage ! dsespoir ! vieillesse ennemie ! <br/>
Nai-je donc tant vcu que pour cette infamie ?
</p>
http://www.w3.org/TR/html5/text-level-semantics.html#the-br-element
14.4.5 Les lments textuels abbr, cite, code, dfn, em, kbd, samp, strong
et var
Ces lments sont utiliss pour direncier des parties du texte :
abbr (pour abbreviation) sert indiquer une abrviation ;
cite sert indiquer une citation ;
code sert indiquer un fragment de code informatique ;
dfn sert indiquer une dnition ;
em (pour emphasis) sert mettre en valeur ;
kbd (pour keyboard) sert indiquer ce qui doit tre saisi au clavier ;
samp (pour sample) sert indiquer un exemple de rsultat ;
strong sert mettre en valeur de manire plus forte que em ;
var sert indiquer le nom dune variable ou dun argument dans un exemple
informatique.
Certains de ces lments modient laspect du texte (ce qui peut varier en fonction
du butineur utilis), dautres nont quune valeur structurale :
<p>
<abbr>abbr</abbr> normal
<cite>cite</cite> normal <code>code</code>
normal <dfn>dfn</dfn> normal <em>em</em> normal
<kbd>kbd</kbd> normal <samp>samp</samp> normal
<strong>strong</strong> normal <var>var</var> normal
</p>
271
Chapitre 14. HTML, XHTML
http://www.w3.org/TR/html5/text-level-semantics.html
14.4.6 Les lments infrieur sub et suprieur sup
Les lments sub et sup servent respectivement mettre leur contenu en caractres
infrieurs et suprieurs (qui sont les quivalents typographiques des indices et des
exposants) :
<p>
H<sub>2</sub>O
</p>
<p>
En franais, on crit 1<sup>er</sup>, 1<sup>re</sup>,
2<sup>e</sup>, etc.
</p>
http://www.w3.org/TR/html5/text-level-semantics.html#
the-sub-and-sup-elements
14.4.7 Les entits
Les balises tant dlimites par des chevrons < et >, on ne peut pas utiliser ces
caractres directement dans un document HTML. Il faut reprsenter chacun deux par
une entit. Une entit est compose dune esperluette & suivie dun code reprsentant
le caractre acher suivi dun point-virgule;. Lutilisation du caractre & pour
272
14.5. Llment dhyperlien a
introduire les entits rend galement ncessaire lutilisation dune entit pour le
reprsenter. En revanche, le point-virgule peut tre utilis librement.
En pratique, on utilise :
&lt; (lower than) pour reprsenter < ;
&gt; (greater than) pour reprsenter > ;
&amp; (ampersand) pour reprsenter &.
<p>
En HTML, les balises sont dlimites par <code>&lt;</code>
et <code>&gt;</code>.
</p>
<p>
Pour reprsenter ces caractres, on utilise les entits
<code>&amp;lt;</code> et <code>&amp;gt;</code>.
</p>
http://www.w3.org/TR/html5/syntax.html#escapingString
14.5 Llment dhyperlien a
La possibilit de relier des documents au moyen dhyperliens est la raison dtre
de la toile.
Pour crer un hyperlien vers un autre document, on utilise llment a (pour
anchor, ancre), entourant le texte de lhyperlien. Il faut obligatoirement indiquer la
destination de celui-ci dans lattribut href. Celle-ci peut tre un chier du mme site,
auquel cas on indique simplement son chemin daccs, ou une page dun site distant,
auquel cas on indique son URL :
273
Chapitre 14. HTML, XHTML
<p>
Pour plus dinformations, vous pouvez consulter la
<a href="liste-des-cours.html">liste des cours</a> ou visiter le
<a href="http://www.ensta-paristech.fr/">site de lENSTA ParisTech</a>.
</p>
http://www.w3.org/TR/html5/text-level-semantics.html#the-a-element
14.6 Llment dinsertion dimage img
An dgayer les documents, on peut y insrer des images au moyen de llment
img. Il sagit dun lment vide dans la mesure o il nencadre rien du tout mais
gure un endroit prcis. Il doit obligatoirement tre utilis avec les attributs src
pour indiquer le chemin daccs ou lURL du chier contenant limage insrer et
alt pour indiquer un texte de remplacement. Celui-ci est destin tre utilis la
place de limage si celle-ci nest pas approprie. Par exemple, les aveugles disposent de
logiciels capable de lire le texte des pages et le contenu de lattribut alt des lments
img au moyen dun synthtiseur vocal. Par convention, an de le direncier du texte
normal des pages, on a lhabitude de placer le texte de lattribut alt entre crochets.
Llment img peut gurer tout endroit o lon peut mettre du texte. Il ne doit
pas tre utilis seul. Si lon souhaite une image isole, on peut par exemple linclure
dans un paragraphe :
<p>
La cathdrale de Beauvais possde le chur gothique
le plus haut du monde.
</p>
<p>
<img src="cathedrale-de-beauvais.jpg"
alt="[Photo de la cathdrale de Beauvais]"/>
</p>
274
14.7. Les listes
Attention ne pas utiliser des images tort et travers. Certains sites utilisent
en eet de nombreuses images ne contenant en fait que du texte uniquement an de
pouvoir contrler la mise en page. Le problme de cette approche est que le contenu
des pages est alors de largeur xe au lieu de sadapter la largeur de la fentre, ce qui
peut se rvler gnant sur de petits crans comme ceux des tlphones mobiles. Ceci
empche galement une indexation correcte par les moteurs de recherche.
http://www.w3.org/TR/html5/embedded-content-0.html#the-img-element
14.7 Les listes
On peut utiliser trois types de listes dans les documents. Celles-ci doivent gurer
lextrieur des paragraphes.
Les deux premiers types de listes sont trs semblables. Les listes encadres par
llment ul (pour unordered list) prsentent chaque composant la suite dun gros
point. Les listes encadres par llment ol (pour ordered list) prsentent chaque
composant la suite dun numro (la numrotation est automatique). Dans ces deux
types de listes, les composants sont encadrs par llment li (pour list item). Les
composants contiennent du texte, voire plusieurs paragraphes (il faut alors utiliser
des lments p) pour les composants trs longs.
275
Chapitre 14. HTML, XHTML
<ul>
<li> premier lment </li>
<li> deuxime lment </li>
<li> troisime lment </li>
</ul>
<ol>
<li> premier lment </li>
<li> deuxime lment </li>
<li> troisime lment </li>
</ol>
Enn, les listes encadres par llment dl (pour denition list) permettent din-
troduire chaque composant par du texte. Le texte dintroduction est encadr par
llment dt (pour denition term) et le texte du composant par llment dd (pour
denition description), ces deux lments allant videmment par paire, dans cet ordre :
276
14.7. Les listes
<p>
La relation dgalit est :
</p>
<dl>
<dt>rflexive</dt>
<dd>quel que soit a, a = a</dd>
<dt>symtrique</dt>
<dd>quels que soient a et b,
si a = b alors b = a</dd>
<dt>transitive</dt>
<dd>quels que soient a, b et c,
si a = b et b = c alors a = c</dd>
</dl>
http://www.w3.org/TR/html5/grouping-content.html#the-ul-element
http://www.w3.org/TR/html5/grouping-content.html#the-ol-element
http://www.w3.org/TR/html5/grouping-content.html#the-li-element
http://www.w3.org/TR/html5/grouping-content.html#the-dl-element
http://www.w3.org/TR/html5/grouping-content.html#the-dt-element
http://www.w3.org/TR/html5/grouping-content.html#the-dd-element
277
Chapitre 14. HTML, XHTML
14.8 Les tableaux
La ralisation de tableaux dans un document HTML est trs simple. On dcrit le
tableau ligne par ligne puis colonne par colonne. Le butineur soccupe de calculer
largeur et hauteur en fonction du contenu du tableau.
Notez que les tableaux ne doivent pas gurer lintrieur de paragraphes ou de
listes.
Voyons un exemple simple :
<table>
<tr> <th>Nom</th> <th>Numro</th> </tr>
<tr> <td>Export</td> <td>33</td> </tr>
<tr> <td>Pastis</td> <td>51</td> </tr>
<tr> <td>Kronenbourg</td> <td>1664</td> </tr>
</table>
Le tableau est encadr par llment table. lintrieur, chaque ligne est encadre
par llment tr (pour table row).
Dans chaque ligne, les colonnes sont encadres par llment th (pour table
header) sil sagit dun titre ou par llment td (pour table data) sil sagit dune
donne (cest le cas gnral). La majorit des butineurs ache le texte contenu dans
llment th en gras et centr, an de le direncier des colonnes de donnes, qui ne
subissent aucun traitement particulier.
Les lignes dun tableau contiennent gnralement le mme nombre de colonnes.
Une cellule du tableau peut stendre sur plusieurs colonnes en utilisant lattribut
colspan ou sur plusieurs lignes en utilisant lattribut rowspan :
278
14.8. Les tableaux
<table>
<tr> <th>Un</th> <th>Deux</th> <th>Trois</th> </tr>
<tr> <td colspan="2">sur deux colonnes</td>
<td>bla</td> </tr>
<tr> <td>bla</td> <td>bla</td>
<td rowspan="2">sur deux lignes</td> </tr>
<tr> <td>bla</td> <td>bla</td> </tr>
</table>
Enn, il est possible daecter une lgende un tableau au moyen de llment
caption, qui doit obligatoirement suivre la balise <table> :
<table>
<caption>Tarifs du bar</caption>
<tr> <td>caf</td> <td>0,40 </td> </tr>
<tr> <td>Guinness</td> <td>2,00 </td> </tr>
</table>
Nous verrons au paragraphe 15.9 page 315 comment la feuille de style permet de
modier laspect visuel des tableaux.
http://www.w3.org/TR/html5/tabular-data.html
279
Chapitre 14. HTML, XHTML
14.9 Lattribut de langue lang
Lattribut lang peut tre appliqu nimporte quel lment et permet dindiquer
la langue de son contenu au moyen de son code ISO 639 utilis comme valeur de
lattribut :
<p lang="en">
We are not amused.
</p>
Nous verrons au paragraphe 15.3.3.8.3 page 296 comment cet attribut peut tre
utilis en conjonction avec la feuille de style.
http://www.w3.org/TR/html5/dom.html#the-lang-and-xml:lang-attributes
http://fr.wikipedia.org/wiki/ISO
_
639
http://fr.wikipedia.org/wiki/Liste
_
des
_
codes
_
ISO
_
639-1
14.10 MathML
MathML permet de dcrire des formules mathmatiques :
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<munderover>
<mo>&#x2211;</mo>
<mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> </mrow>
<mrow> <mo>+</mo> <mn>&#x221e;</mn> </mrow>
</munderover>
<mfrac> <mn>1</mn> <msup> <mi>n</mi> <mn>2</mn> </msup> </mfrac>
<mo>=</mo>
<mfrac> <msup> <mn>&#x3c0;</mn> <mn>2</mn> </msup> <mn>6</mn> </mfrac>
</mrow>
</math>
280
14.10. MathML
MathML est correctement gr par Firefox partir de la version 3.0, Opera
partir de la version 9.5 et Internet Explorer partir de la version 6.0, condition
dinstaller lextension MathPlayer (qui est tlchargeable gratuitement).
Ltude dtaille de MathML dpasse le cadre de ce cours. Le lecteur curieux
pourra se reporter aux liens indiqus ci-aprs.
http://www.w3.org/Math/
http://fr.wikipedia.org/wiki/MathML
https://developer.mozilla.org/en/Mozilla
_
MathML
_
Project
http://www.dessci.com/en/products/mathplayer/
281
15
Feuilles de style CSS
C
hacun a lhabitude de consulter des sites Web chamarrs. Or rien dans
les lments qui ont t tudis ne permet dattribuer une couleur par-
ticulire son contenu. De manire plus gnrale, rien ne permet de
contrler laspect visuel des pages une fois aches dans un butineur.
En eet, HTML a pour but de dcrire la structure des pages, pas leur apparence.
HTML 3.2 a bien introduit des lments et des attributs, dont certains ont t repris
dans HTML 4, permettant de modier laspect visuel du document mais ils ont t
totalement limins de HTML 5.
Supposons nanmoins que les indications concernant leur aspect visuel soient
intgres aux pages HTML. An davoir une prsentation cohrente de toutes les
pages dun mme site, ces indications doivent donc gurer lidentique dans chaque
page. Lajout dune nouvelle page ncessite alors la recopie de ces indications sans en
omettre. Et si lon souhaite modier globalement laspect visuel des pages existantes,
il faut toutes les modier, ce qui est dicilement grable sil y en a beaucoup.
Manifestement, lapproche consistant indiquer laspect visuel des pages dans
celles-ci nest pas viable. Les directives de prsentation sont donc regroupes dans
un chier spar appel feuille de style (style sheet en anglais). Les pages HTML dun
mme site font alors rfrence cette feuille de style pour les indications concernant
leur aspect visuel. La centralisation de ces indications dans la feuille de style assure
une prsentation cohrente de lensemble des pages et en facilite les changements.
Une feuille de style est un chier texte au format CSS (Cascading Style Sheets,
feuilles de style en cascade, nous verrons ce quest la cascade au paragraphe 15.4.2
page 297). La premire version du format CSS, CSS 1, est apparue en 1996, CSS 2 en
1998. La version actuelle de ce format est la version 2.1, datant de 2004. La version 3,
qui est en pratique une volution de la version 2.1, largement compatible avec celle-ci,
est actuellement en cours de dveloppement mais est dj parfaitement utilisable.
Cest cette version que nous allons tudier par la suite.
Les possibilits oertes par les feuilles de style tant vastes et complexes, nous
nallons par la suite que survoler le sujet. Le lecteur curieux pourra se reporter aux
ouvrages suivants de la bibliographie pour approfondir ses connaissances :
CSS for Babies [51]
283
Chapitre 15. Feuilles de style CSS
CSS [31]
CSS 2 [33]
CSS 2.1 [30]
CSS avances [36]
Mmento CSS [34]
CSS : The Denitive Guide [41]
CSS Cookbook [47]
CSS Pocket Reference [42]
Russir son site web avec XHTML et CSS [44]
Premiers pas en CSS et XHTML [32]
XHTML et CSS [49]
HTML5 et CSS3 [39]
HTML5 et CSS3 [50]
Sams Teach Yourself HTML and CSS in 24 Hours [40]
HTML & CSS : The Good Parts [37]
HTML5 & CSS3 [38]
http://www.w3.org/TR/CSS/
http://www.w3.org/Style/CSS/
http://jigsaw.w3.org/css-validator/
http://fr.wikipedia.org/wiki/Feuilles
_
de
_
style
_
en
_
cascade
http://fr.wikibooks.org/wiki/Le
_
langage
_
CSS
http://w3schools.com/
http://www.csszengarden.com/
15.1 Faire rfrence une feuille de style dans une page HTML
Pour faire rfrence une feuille de style dans une page HTML, il faut ajouter un
lment vide link dans son en-tte :
<link rel="stylesheet" type="text/css" href="style.css"/>
Llment link sert indiquer que la page HTML doit tre relie un autre
document, en loccurrence une feuille de style. Il sutilise avec trois attributs :
1. lattribut rel indique quelle catgorie de document la page doit tre relie, sa
valeur doit tre stylesheet pour une feuille de style ;
2. lattribut type indique le type de ce document, sa valeur doit tre text/css
pour une feuille de style CSS (puisque le format CSS est un type particulier de
chier texte) ;
3. lattribut href indique le nom du chier qui contient la feuille de style, ici
style.css (les feuilles de style CSS ont traditionnellement une extension .css).
284
15.2. Au sujet des exemples qui suivent
Pour faire en sorte que toutes les pages dun site Web soient aches conform-
ment une mme feuille de style, chacune de ces pages doit avoir dans son en-tte un
lment link y faisant rfrence.
http://www.w3.org/TR/html5/document-metadata.html#the-link-element
15.2 Au sujet des exemples qui suivent
Les exemples de feuilles de style qui suivent seront accompagns si ncessaire
dun extrait de page HTML les utilisant (en supposant quil est bien fait rfrence
la feuille de style dans len-tte au moyen de llment link). Ils seront tous deux
illustrs si besoin est par leur rendu graphique dans Firefox 30.0.
15.3 Syntaxe
Commenons par planter le dcor avec une feuille de style trs simple :
body
{
background-color : lime ;
}
Il sut de faire rfrence cette feuille de style au moyen de llment link dans
len-tte dune page HTML pour que celle-ci se retrouve ache sur un fond vert
criard.
Le principe des feuilles de style est en eet dappliquer des proprits aux lments
contenus dans une page HTML, an de modier leur apparence. Ici, llment
concern est body, dont on modie la proprit background-color (qui reprsente
sa couleur de fond) pour lui donner la valeur lime (qui est une variante de vert, les
couleurs seront abordes au paragraphe 15.5 page 300).
15.3.1 Les commentaires
Les commentaires sont dlimits par /
*
et
*
/ et peuvent stendre sur plusieurs
lignes :
285
Chapitre 15. Feuilles de style CSS
/
*
la rgle suivante modifie la couleur de fond
de la page
*
/
body
{
background-color : lime ; /
*
vert clair
*
/
}
http://www.w3.org/TR/CSS21/syndata.html#comments
15.3.2 Les rgles
De manire gnrale, une feuille de style est constitue dune suite de rgles.
Une rgle se compose :
1. dun slecteur, qui indique le ou les lments dont lapparence doit tre modi-
e ;
2. dun bloc contenant, entre accolades, une ou plusieurs dclarations appliquer
au slecteur.
Une dclaration se compose :
1. dune proprit, qui est le paramtre modier ;
2. dune valeur donner ce paramtre.
Dans une dclaration, proprit et valeur sont spares par un deux-points. La
dclaration est termine par un point-virgule.
Une rgle est donc de la forme suivante :
slecteur
{
proprit : valeur ;
proprit : valeur ;
...
}
Les retours la ligne, lalignement vertical des accolades, lindentation des dclara-
tions, les espaces autour des deux-points ainsi que ceux prcdant les points-virgules
ne sont pas ncessaires mais permettent darer la feuille de style, de mieux en
visualiser la structure et de reprer plus facilement les erreurs.
On aurait donc parfaitement pu crire :
286
15.3. Syntaxe
slecteur{proprit:valeur;proprit:valeur;}
mais il faut reconnatre que cela est bien moins lisible.
http://www.w3.org/TR/CSS21/syndata.html#rule-sets
15.3.3 Les slecteurs
Les exemples de cette section font appel des proprits et des valeurs qui
seront tudies plus loin. Elles ne sont l que pour illustrer les possibilits
dutilisation des slecteurs au moyen dexemples ralistes et ne seront donc
pas dtailles plus que ncessaire la comprhension des direntes syntaxes
de slecteurs.
Dans une rgle, le slecteur indique le ou les lments auxquels appliquer les
dclarations gurant dans le bloc qui suit.
http://www.w3.org/TR/css3-selectors/
15.3.3.1 Les slecteurs de type
Dans la plupart des cas, le slecteur est simplement un nom dlment, cest ce
quon appelle un slecteur de type :
body
{
background-color : lime ;
}
http://www.w3.org/TR/css3-selectors/#type-selectors
15.3.3.2 Le regroupement
Dans le cas o lon souhaite appliquer les mmes dclarations plusieurs lments,
il est inutile de rpter les blocs lidentique, on peut regrouper les lments dans le
slecteur en les sparant par des virgules et navoir quun seul bloc, partag par tous
ces lments :
h1 , h2 , h3
{
text-align : center ;
}
287
Chapitre 15. Feuilles de style CSS
Ici, on applique exactement le mme bloc aux lments h1, h2 et h3 en une seule
rgle, cest ce quon appelle un regroupement.
Lorsque les blocs appliqus dirents lments partagent des dclarations
identiques, il est possible de les factoriser. Considrons lexemple suivant :
h1
{
text-align : center ;
color : red ;
}
h2
{
text-align : center ;
color : blue ;
}
La premire dclaration de chaque bloc est identique donc il est possible de la
placer dans un bloc commun aux deux lments :
h1 , h2
{
text-align : center ;
}
h1
{
color : red ;
}
h2
{
color : blue ;
}
Lorsque plusieurs blocs sappliquent au mme lment, leurs dclarations se
cumulent. Les deux exemples prcdents sont donc quivalents.
En pratique, ce nest que dans le cas o plusieurs lments partagent de nom-
breuses dclarations identiques quil est intressant de les factoriser, an de simplier
la feuille de style. Les deux exemples prcdents nont pas vraiment la taille critique
pour que lintrt de la factorisation soit agrant.
288
15.3. Syntaxe
http://www.w3.org/TR/css3-selectors/#grouping
15.3.3.3 Les slecteurs descendants
Si lon souhaite appliquer des dclarations un lment uniquement si celui-ci
est imbriqu dans un autre, on peut utiliser cette syntaxe :
p code
{
text-decoration : underline ;
}
Ici, le contenu de llment code sera soulign sil est contenu dans un paragraphe,
y compris sil est nich au sein dautres lments :
<p>
Llment <code>code</code> est soulign, mme sil
est contenu dans un autre lment, par exemple
<samp><code>samp</code></samp>.
</p>
En revanche, il ne le sera pas sil est contenu dans une liste ou un tableau.
Cest ce quon appelle un slecteur descendant dans la mesure o llment code
est un descendant de llment p.
http://www.w3.org/TR/css3-selectors/#descendant-combinators
15.3.3.4 Les slecteurs denfant
On peut tre plus restrictif :
p > code
{
text-decoration : underline ;
}
289
Chapitre 15. Feuilles de style CSS
Le combinateur > signie que lelement code doit tre directement contenu dans
llment p, sans intermdiaire :
<p>
Llment <code>code</code> est soulign, mais pas sil
est contenu dans un autre lment, par exemple
<samp><code>samp</code></samp>.
</p>
Pour que la rgle soit applique, il faut que llment code soit un descendant
direct de llment p, cest--dire, pour continuer lanalogie gnalogique, un de ses
enfants. Cest pourquoi ce type de slecteur est appel un slecteur denfant.
http://www.w3.org/TR/css3-selectors/#child-combinators
15.3.3.5 Les slecteurs dattribut
Les slecteurs prcdents permettent dappliquer un bloc de dclarations un ou
plusieurs lments, soit inconditionnellement, soit uniquement sur des conditions
de descendance par rapport dautres lments.
Un slecteur dattribut permet dappliquer un bloc de dclarations un lment si
celui-ci est muni dun certain attribut, quelle que soit sa valeur, ou seulement sil a
une valeur particulire.
Il est constitu de llment, suivi de lattribut dont il doit tre muni, entre
crochets :
lment[attribut]
{
proprit : valeur ;
...
}
Ainsi, dans lexemple suivant, les lments td ayant un attribut colspan, quelle
que soit sa valeur, seront achs sur un fond de couleur jaune :
290
15.3. Syntaxe
td[colspan]
{
background-color : yellow ;
}
On peut galement limiter lapplication du slecteur aux seuls lments ayant un
attribut dune certaine valeur (contrairement son utilisation dans une page HTML,
la valeur ne doit pas gurer entre guillemets) :
lment[attribut=valeur]
{
proprit : valeur ;
...
}
Ainsi, dans lexemple suivant, les lments td ayant un attribut colspan de valeur
2 seront achs sur un fond de couleur jaune :
td[colspan=2]
{
background-color : yellow ;
}
Il existe encore deux autres syntaxes de slecteurs dattribut, que nous ntudie-
rons pas ici.
http://www.w3.org/TR/css3-selectors/#attribute-selectors
15.3.3.6 Les slecteurs de classe
Les slecteurs de classe sont des cas particuliers de slecteurs dattribut. tant trs
utiliss, ils bncient dune syntaxe propre.
Une classe est une chane de caractres pouvant contenir :
des lettres (minuscules ou majuscules, attention, on fait la dirence entre les
deux), ventuellement accentues ;
des chires (mais une classe ne peut pas commencer par un chire) ;
des tirets ;
des tirets bas.
Un slecteur de classe permet dappliquer un bloc de dclarations un lment. Il
est constitu de llment, suivi dun point, puis de la classe, sans espaces autour du
point :
291
Chapitre 15. Feuilles de style CSS
lment.classe
{
proprit : valeur ;
...
}
Dans la page HTML, il faut appliquer llment lattribut class avec la classe
comme valeur ainsi :
<lment class="classe">contenu</lment>
Par exemple, si certains paragraphes importants doivent tre achs en rouge,
on peut utiliser :
p.important
{
color : red ;
}
<p class="important">
Ceci est un paragraphe important.
</p>
Il est galement possible de ne pas appliquer la classe un lment spcique :
.classe
{
proprit : valeur ;
...
}
Ceci permet dutiliser cette classe avec nimporte quel lment sans avoir dnir
autant de slecteurs. Par exemple :
.important
{
color : red ;
}
292
15.3. Syntaxe
<p class="important">
Ceci est un paragraphe important.
</p>
<p>
Ceci est un paragraphe normal avec une
<dfn class="important">dfinition importante</dfn>.
</p>
cette occasion, il importe de bien nommer ses classes en fonction de leur
nature et non de leur aspect. Dans lexemple prcdent, on a choisi de direncier
les choses importantes en leur attribuant la couleur rouge. On aurait donc pu tre
tent de nommer notre classe rouge puisquelle a pour rsultat de mettre le contenu
des lments auxquels elle est applique en rouge. Cependant, si lon change davis et
quon dcide de mettre les choses importantes en bleu, il faut modier non seulement
la feuille de style mais aussi toutes les pages HTML o il est fait rfrence la classe
rouge. Encore une fois, il est prfrable de raisonner en terme de structure et de
nommer les classes en fonction de leur signication structurale plutt que de leur
apparence. En appelant notre classe important, on indique sa nature et non son
aspect. Une chose importante reste importante, quelle soit ache en rouge ou en
bleu. Ainsi une modcation de laspect des choses importantes ne ncessitera que de
modier la feuille de style, pas les pages HTML qui y font rfrence.
http://www.w3.org/TR/css3-selectors/#class-html
15.3.3.7 Les slecteurs didentiant
Les slecteurs didentiant fonctionnent sur le mme principe que les slecteurs
de classe :
lment#identifiant
{
proprit : valeur ;
...
}
Le caractre utilis dans la feuille de style pour sparer lment et identiant nest
pas le point comme pour la classe mais le croisillon #.
Dans la page HTML, on utilise lattribut id appliqu au mme lment ainsi :
<lment id="identifiant">contenu</lment>
293
Chapitre 15. Feuilles de style CSS
Il est galement possible de ne pas appliquer lidentiant un lment spcique :
#identifiant
{
proprit : valeur ;
...
}
la dirence dune classe, qui peut tre utilise plusieurs fois dans la mme page
HTML, un identiant ne peut ltre quune seule fois. Cest la dirence fondamen-
tale entre classe et identiant. Ceci permet de sassurer quun mme identiant nest
utilis quune et une seule fois dans une page HTML.
Les identiants sont en pratique principalement utiliss avec les lments dorga-
nisation structurale (qui seront tudis au chapitre 16 page 321). Ceux-ci permettent
dorganiser des blocs fonctionnels (en-tte, barre de navigation, partie principale, pied
de page, etc.) dans une page HTML. Certains blocs sont reprs par un identiant et
leur unicit permet de garantir quil ny ait quun bloc de chaque type par page.
http://www.w3.org/TR/css3-selectors/#id-selectors
15.3.3.8 Les pseudo-classes
Les slecteurs tudis prcdemment permettent lapplication des rgles de la
feuille de style en fonction du seul contenu de la page HTML (lments, relations
entre lments, prsence dattributs class ou id).
Dans les cas o ces critres ne sont pas susants, on utilise des pseudo-classes.
Le slecteur dune pseudo-classe se prsente comme ceci :
lment:pseudo-classe
{
proprit : valeur ;
...
}
http://www.w3.org/TR/css3-selectors/#pseudo-classes
15.3.3.8.1 Les pseudo-classes de lien
Par dfaut, les hyperliens sont souligns et achs en bleu sils nont pas encore
t visits et en violet sils lont dj t. Si lon a modi la couleur de fond, il
est possible que ces deux couleurs ne conviennent pas. Les pseudo-classes de lien
permettent de les modier. Elles ne peuvent sappliquer qu llment a.
294
15.3. Syntaxe
La pseudo-classe :link permet de modier la couleur des liens qui nont pas
encore t visits :
a:link
{
color : lime ;
}
La pseudo-classe :visited permet de modier la couleur des liens qui ont dj
t visits :
a:visited
{
color : green ;
}
http://www.w3.org/TR/css3-selectors/
#the-link-pseudo-classes-link-and-visited
15.3.3.8.2 Les pseudo-classes daction de lutilisateur
Les pseudo-classes daction de lutilisateur permettent dappliquer des dclarations
en fonction des actions de lutilisateur. Contrairement aux pseudo-classes de lien, qui
ne sappliquent qu llment a, les pseudo-classes dynamiques peuvent sappliquer
nimporte quel lment.
La pseudo-classe :hover sapplique lorsque le pointeur de la souris survole ll-
ment correspondant.
On peut lutiliser, par exemple, pour donner lutilisateur un retour visuel plus
important lorsque sa souris survole un hyperlien en modiant la couleur de fond de
celui-ci :
a:hover
{
background-color : yellow ;
}
Il existe galement des pseudo-classes :active et :focus, que nous ntudierons
pas.
http://www.w3.org/TR/css3-selectors/
#the-user-action-pseudo-classes-hover-act
295
Chapitre 15. Feuilles de style CSS
15.3.3.8.3 La pseudo-classe de langue
Lattribut lang, tudi au paragraphe 14.9 page 280, permet dindiquer la langue
du contenu de llment auquel il est appliqu.
La pseudo-classe :lang permet de se baser sur la valeur de lattribut lang pour
appliquer des dclarations en fonction de celle-ci (XX reprsente le code ISO 639 de la
langue) :
lment:lang(XX)
{
proprit : valeur ;
...
}
Ainsi, dans lexemple suivant, les paragraphes ayant un attribut lang de valeur en
seront composs en italique :
p:lang(en)
{
font-style : italic ;
}
Llment peut tre omis dans le slecteur an de pouvoir appliquer les dclara-
tions tous les lments ayant la valeur correspondante de lattribut lang :
:lang(en)
{
font-style : italic ;
}
http://www.w3.org/TR/css3-selectors/#lang-pseudo
15.3.4 Les dclarations et les proprits
Contrairement aux slecteurs, qui orent une grande varit de syntaxes, celle
des dclarations est des plus simples :
{
proprit : valeur ;
...
}
296
15.4. Lhritage et la cascade
Leur richesse se situe dans les modications quelles permettent dapporter aux
lments des pages HTML.
Aprs une courte explication de ce que sont lhritage et la cascade, nous allons
tudier les proprits les plus utiles selon un classement thmatique.
http://www.w3.org/TR/CSS21/syndata.html#declaration
15.4 Lhritage et la cascade
15.4.1 Lhritage
Lhritage consiste, pour un lment contenu dans un autre, se voir appliques
les rgles concernant ce dernier. Considrons le fragment de page HTML suivant :
<p>
L<em>hritage</em> consiste, pour un lment contenu dans un
autre, se voir appliques les rgles concernant ce dernier.
</p>
Dans ce cas, toutes les rgles qui sappliquent llment p sappliqueront gale-
ment llment em. Cela permet une mise en page cohrente sans avoir multiplier
des dclarations identiques.
Si certaines proprits sappliquant spciquement llment em sont en contra-
diction avec les mmes proprits hrites de llment p (cest--dire si elles ont
des valeurs direntes), ce sont bien videmment les plus spciques, savoir les
premires, qui sappliquent.
http://www.w3.org/TR/css3-cascade/#inheriting
15.4.2 La cascade
Vous avez remarqu que, mme sans faire rfrence une feuille de style au
moyen de llment link, les butineurs savent acher certains lments de manire
adquate, par exemple les titres, qui sont achs en gras et dans un corps
1
plus
important que celui du texte. En eet, les butineurs disposent dune feuille de style
interne, qui contient les rgles correspondantes et qui permettent dacher les pages
sans feuille de style avec une mise en page minimale mais correcte.
Il est galement possible lutilisateur dindiquer un certain nombre de prf-
rences pour lachage des pages, comme les polices de caractres utiliser, leur taille,
les couleurs du texte, du fond et des liens, etc.
1. En typographie, le corps dsigne la taille des caractres.
297
Chapitre 15. Feuilles de style CSS
Enn, lorsquon en utilise une, la feuille de style permet lauteur des pages
dindiquer ses propres rgles dachage.
Puisque le butineur (au moyen de sa feuille de style interne), lutilisateur (au
moyen de ses prfrences) et la feuille de style peuvent indiquer des rgles contradic-
toires, il est ncessaire de les dpartager.
La cascade dnit comment il faut combiner ces rgles et selon quel ordre de
priorit. En schmatisant, on aboutit ceci, du plus prioritaire au moins prioritaire :
1. la feuille de style ;
2. les prfrences de lutilisateur ;
3. la feuille de style interne du butineur.
Il est important de remarquer que la feuille de style est plus prioritaire que les
prfrences de lutilisateur. Ceci peut poser problme si, par exemple, la feuille de
style indique un corps de petite taille alors que lutilisateur a indiqu un corps plus
important dans ses prfrences en raison de problmes de vue. Cest pour cela quil
est maladroit dindiquer le corps dans la feuille de style de manire absolue. Il est
prfrable de le faire de manire relative (voir le paragraphe 15.7.4 page 305) an de
pouvoir prendre en compte les prfrences de lutilisateurs tout en ayant une mise en
page conforme aux souhaits de lauteur de la feuille de style.
En ce qui concerne les dclarations gurant dans la feuille de style, la cascade
permet que toutes celles qui peuvent sappliquer soient prises en compte, dans la
mesure o elles ne sont pas contradictoires. Considrons cette feuille de style :
p
{
text-align : justify ;
}
p.important
{
color : red ;
}
Dans une page HTML utilisant cette feuille de style, les paragraphes appartenant
la classe important seront composs en rouge mais galement justis. En eet,
les dclarations correspondant au slecteur de classe p.important sappliquent
ces paragraphes mais galement celles correspondant au slecteur de type p car un
paragraphe, mme sil appartient une classe particulire, reste un paragraphe.
En cas de dclarations contradictoires, la cascade impose que ce soient les plus
spciques qui sappliquent. Considrons cette feuille de style :
298
15.4. Lhritage et la cascade
p
{
color : green ;
text-align : justify ;
}
p.important
{
color : red ;
}
Dans une page HTML utilisant cette feuille de style, les paragraphes appartenant
la classe important seront composs en rouge et nanmoins justis. La dclaration
concernant la proprit color correspondant au slecteur de type p est contradic-
toire avec celle concernant la mme proprit correspondant au slecteur de classe
p.important. Cette dernire tant plus spcique, cest elle qui sapplique. En re-
vanche, la dclaration concernant la proprit text-align correspondant au slecteur
de type p na pas de dclaration quivalente pour le slecteur de classe p.important
et peut donc sappliquer.
Enn, en cas de dclarations contradictoires sans quil y ait un avantage de
spcicit, la cascade impose que ce soit la dernire dclaration qui sapplique. En
eet, la feuille de style est lue de haut en bas et les rgles sont prises en compte dans
lordre de leur lecture.
p
{
color : green ;
}
p
{
color : red ;
}
Les pages HTML utilisant la feuille de style prcdente auront donc leurs para-
graphes composs en rouge.
http://www.w3.org/TR/css3-cascade/#cascading
299
Chapitre 15. Feuilles de style CSS
15.5 Les couleurs
Lune des principales utilisations des feuilles de style est de mettre de la couleur
dans des pages auparavant ternes.
http://www.w3.org/TR/css3-color/
15.5.1 Nommage et reprsentation des couleurs
La faon la plus simple dindiquer une couleur est de la dsigner par son nom. Le
tableau 15.1 prsente les seize noms utilisables dans une feuille de style.
aqua black blue fuchsia
gray green lime maroon
navy olive purple red
silver teal white yellow
Table 15.1 Noms de couleurs utilisables dans une feuille de style.
La plupart des butineurs acceptent galement dautres noms qui ne font pas partie
de la spcication des feuilles de style. Pour cette raison, il est prfrable de ne pas les
utiliser et de sen tenir aux seize noms du tableau 15.1.
Nanmoins, ceux-ci correspondent des couleurs assez criardes. Il est donc
galement possible de spcier des couleurs de manire plus ne en indiquant leurs
niveaux de rouge, de vert et de bleu en synthse additive.
La faon la plus simple de spcier une couleur est dindiquer les pourcentages
respectifs de rouge, de vert et de bleu :
color : rgb( 80% , 100% , 80% ) ;
Il est important quil ny ait pas despace entre rgb et la parenthse ouvrante, de
mme quentre les nombres et leur signe pour cent.
Les niveaux peuvent galement tre indiqus sous forme de valeurs entires codes
sur un octet, cest--dire par des nombres entre 0 et 255, 0 correspondant 0 % et
255 100 % :
color : rgb( 204 , 255 , 204 ) ;
Le systme hexadcimal (voir le paragraphe 2.1.3.3 page 25) tant mieux adapt
la rprsentation doctets, il est galement possible dexprimer les valeurs de rouge,
de vert et de bleu par des nombres hexadcimaux allant de 00 FF. Ainsi, la couleur
prcdente peut aussi scrire :
300
15.5. Les couleurs
color : #CCFFCC ;
Le croisillon indique quon utilise une reprsentation en hexadcimal avec deux
chires pour chaque couleur primaire. Les chires de A F peuvent galement tre
indiqus en minuscules.
Les couleurs utilisant deux fois le mme chire hexadcimal pour chaque couleur
primaire peuvent tre simplies ainsi :
color : #CFC ;
http://www.w3.org/TR/css3-color/#colorunits
http://fr.wikipedia.org/wiki/Rouge
_
vert
_
bleu
http://fr.wikipedia.org/wiki/Couleurs
_
du
_
Web
http://www.colorpicker.com/
http://www.febooti.com/legacy/color-picker/
15.5.2 La proprit de couleur color
La proprit color permet de dnir la couleur des lments auxquels elle est
applique :
h1
{
color : red ;
}
Ici, tous les lments h1 seront achs en rouge.
Les couleurs peuvent tre spcies de toutes les manires indiques au para-
graphe 15.5.1 page prcdente.
http://www.w3.org/TR/css3-color/#foreground
15.5.3 La proprit de couleur de fond background-color
La proprit background-color permet de dnir la couleur de fond des lments
auxquels elle est applique :
body
{
background-color : lime ;
}
301
Chapitre 15. Feuilles de style CSS
Ici, la page HTML entire sera ache sur un fond vert.
Les couleurs peuvent tre spcies de toutes les manires indiques au para-
graphe 15.5.1 page 300.
http://www.w3.org/TR/css3-background/#the-background-color
15.6 Les units de mesure
Avant de poursuivre, il faut prsenter les units de mesure utilisables dans une
feuille de style car plusieurs proprits qui vont tre tudies par la suite les utilisent
comme valeurs. Ces units gurent dans le tableau 15.2.
em cadratin
ex hauteur dil dun x
cm centimtre
mm millimtre
px pixel
in pouce (inch en anglais) 1in = 2.54cm
pt point 1pt = 1in/72
pc pica 1pc = 12pt
Table 15.2 Units de mesure utilisables dans une feuille de style.
Les deux premires units appellent quelques explications.
En typographie, un cadratin est une espace dont la longueur est gale la force
du corps utilis (cest--dire la taille des caractres). Le cadratin est souvent dni
comme la largeur du caractre M (mais ce nest souvent quapproximatif).
Toujours en typographie, la hauteur dil reprsente la hauteur dun caractre.
Ici, 1ex reprsente donc la hauteur du caractre x (ou, si lon prfre, de nimporte
quelle minuscule sans hampe ni jambage).
Ces deux units sont intressantes car elles sont relatives la taille des caractres,
ce qui nest pas le cas des autres (ces dernires sont donc rarement utilises).
Lorsquune longueur doit tre exprime dans une feuille de style, elle lest sous
la forme dun nombre immdiatement suivi dune unit, par exemple : 2em, 5mm. Le
nombre peut tre dcimal lorsque cela a un sens, par exemple : 0.25em (quart de
cadratin). En revanche, 0.25px na pas de sens, le pixel tant le plus petit lment
achable par un cran.
Remarquez que la notation utilise dans le tableau 15.2 pour expliquer la valeur
du point, 1in/72 nest syntaxiquement pas correcte dans une feuille de style. Cette
notation na quune valeur explicative.
Enn, il est possible domettre lunit lorsque la longueur exprimer est nulle : 0
seul est susant.
302
15.7. Le texte
http://www.w3.org/TR/css3-values/#lengths
http://fr.wikipedia.org/wiki/Cadratin
http://www.orthotypographie.fr/volume-I/cabochon-citation.html#Cadratin
http://fr.wikipedia.org/wiki/il
_
(typographie)
http://www.orthotypographie.fr/volume-II/ocean-ouest.html#OEil
15.7 Le texte
Deux ensembles de proprits permettent dagir sur le texte. Celles commen-
ant par font concernent les caractres, celles commenant par text concernent la
prsentation globale du texte
http://www.w3.org/TR/css3-fonts/
http://www.w3.org/TR/css3-text/
15.7.1 La proprit de police font-family
La proprit font-family permet de dnir la police de caractres utilise :
td
{
font-family : sans-serif ;
}
Celle-ci peut tre indique de deux manires :
en indiquant un nom de police spcique (comme, par exemple, Helvetica ou
Courier) ;
en indiquant un nom de police gnrique.
Les noms de polices gnriques sont indiqus dans le tableau 15.3.
serif police empattements
sans-serif police bton
cursive police cursive
fantasy police dcorative
monospace police chasse xe
Table 15.3 Noms de polices gnriques utilisables avec la proprit font-family.
En cas dutilisation dun nom de police gnrique, la police eectivement utilise
dpend des prfrences de lutilisateur ou de la conguration par dfaut du butineur.
Comme nous lavons vu au paragraphe 15.4.2 page 297, compte tenu de la cascade,
il est prfrable de nutiliser que des noms de polices gnriques, an den laisser le
303
Chapitre 15. Feuilles de style CSS
choix lutilisateur, sauf cas trs particulier. Par ailleurs, une police spcique peut
ne pas tre disponible dans toutes les congurations.
http://www.w3.org/TR/css3-fonts/#font-family-prop
http://fr.wikipedia.org/wiki/Empattement
_
(typographie)
http://www.orthotypographie.fr/volume-I/echelle-extrait.html#
Empattement
http://fr.wikipedia.org/wiki/Chasse
_
(typographie)
http://www.orthotypographie.fr/volume-I/cabochon-citation.html#
Chasse-chasser
15.7.2 La proprit dinclinaison font-style
La proprit font-style permet de dnir linclinaison des caractres :
p.citation
{
font-style : italic ;
}
La proprit font-style peut prendre lune des valeurs indiques dans le ta-
bleau 15.4.
normal composition en romain
(cest--dire en caractres droits)
italic composition en italique
oblique composition en oblique
(cest--dire en romain inclin)
Table 15.4 Valeurs utilisables avec la proprit font-style.
http://www.w3.org/TR/css3-fonts/#font-style-prop
http://fr.wikipedia.org/wiki/Police
_
romaine
http://fr.wikipedia.org/wiki/Italique
_
(typographie)
http://www.orthotypographie.fr/volume-II/incipit-italique.html#Italique
15.7.3 La proprit de graisse font-weight
La proprit font-weight permet de dnir la graisse des caractres :
304
15.7. Le texte
td
{
font-weight : bold ;
}
La proprit font-weight peut prendre trois types de valeurs :
des valeurs absolues, normal pour des caractres normaux, bold pour des
caractres gras ;
des valeurs relatives par rapport ce que serait la graisse sans cette proprit,
bolder et lighter ;
des valeurs numriques, 100, 200, 300, 400, 500, 600, 700, 800 et 900 (normal
correspondant 400 et bold 700).
La plupart des polices ne proposant quun seul type de gras, il est prfrable de
sen tenir normal et bold.
http://www.w3.org/TR/css3-fonts/#font-weight-prop
http://fr.wikipedia.org/wiki/Graisse
_
(typographie)
http://www.orthotypographie.fr/volume-II/gallerie-guillemet.html#
Graisse
15.7.4 La proprit de corps font-size
La proprit font-size permet de dnir le corps des caractres :
li
{
font-size : 75% ;
}
Celui-ci peut tre indiqu de deux manires :
de manire absolue, en indiquant une taille avec une unit de mesure ;
de manire relative, en fonction du corps dni par les prfrences de lutilisa-
teur.
Nous avons vu au paragraphe 15.4.2 page 297 que, compte tenu de la cascade,
il tait maladroit de dnir le corps des caractres de manire absolue. Aussi cette
faon de faire ne sera pas dtaille ici.
Concernant la manire relative, il existe trois syntaxes direntes. La plus souple
et la plus facilement comprhensible (nous ntudierons pas les autres) consiste
indiquer un pourcentage de ce que serait le corps sans la proprit font-size, comme
il est fait dans lexemple prcdent.
305
Chapitre 15. Feuilles de style CSS
http://www.w3.org/TR/css3-fonts/#font-size-prop
http://fr.wikipedia.org/wiki/Corps
_
typographique
http://www.orthotypographie.fr/volume-I/classe-corps.html#Corps
15.7.5 La proprit dalina text-indent
La proprit text-indent permet de dnir la taille de lalina dbutant chaque
paragraphe (qui est par dfaut nulle avec la plupart des butineurs) :
p
{
text-indent : 1em ;
}
Traditionnellement, lalina ne doit pas tre infrieur un cadratin. Il peut aller
jusqu quatre cadratins (4em) daprs le Lexique des rgles typographiques en usage
lImprimerie nationale, page 153. Le cadratin (em) est donc lunit de mesure la mieux
adapte la proprit text-indent.
http://www.w3.org/TR/css3-text/#text-indent-property
http://fr.wikipedia.org/wiki/Alina
http://www.orthotypographie.fr/volume-I/accolade-allemand.html#Alinea
15.7.6 La proprit dalignement text-align
La proprit text-align permet de dnir la faon daligner des blocs de texte :
p
{
text-align : justify ;
}
La proprit text-align peut prendre lune des valeurs indiques dans le ta-
bleau 15.5 page suivante.
Par dfaut, le texte est align gauche.
La proprit text-align peut sappliquer principalement aux lments p, li
(pour les valeurs left et justify) ainsi quaux cellules des tableaux (lments td et
th).
En pratique, elle inuence tout ce qui se trouve lintrieur de llment auquel
on lapplique, que ce soit du texte ou autre chose. En particulier, on peut lutiliser
pour centrer une image :
306
15.7. Le texte
left le texte est align gauche
(prsentation dite en drapeau, au fer gauche)
right le texte est align droite
(prsentation dite en drapeau, au fer droite)
center le texte est centr
justify le texte est justi
Table 15.5 Valeurs utilisables avec la proprit text-align.
p.image
{
text-align : center ;
}
<p class="image">
<img src="limousin.jpg" alt="[danse traditionnelle]"/>
</p>
Le fait quune image soit centre est en eet une proprit de llment qui la
contient, pas de llment img en lui-mme.
En ce qui concerne les tableaux, qui ne peuvent pas tre contenus dans des
paragraphes, la faon de les centrer est dirente et sera tudie au paragraphe 15.9.1
page 315.
http://www.w3.org/TR/css3-text/#text-align-property
15.7.7 La proprit de dcoration text-decoration
La proprit text-decoration permet dajouter une dcoration au texte contenu
dans un lment :
abbr
{
text-decoration : underline ;
}
La proprit text-decoration peut prendre lune des valeurs indiques dans le
tableau 15.6 page suivante.
307
Chapitre 15. Feuilles de style CSS
none aucune dcoration nest ajoute
underline souligne le texte
overline surligne le texte
line-through raye le texte dune ligne en son milieu
blink fait clignoter le texte
Table 15.6 Valeurs utilisables avec la proprit text-decoration.
http://www.w3.org/TR/css-text-decor-3/#text-decoration-property
15.8 Marge, espacement et bordure
Dans une page HTML, tous les lments sont inscrits dans un rectangle. Il est
possible dagir sur trois types de paramtres, la marge, lespacement et la bordure,
an respectivement dloigner ce rectangle des objets lentourant, daugmenter ses
dimensions et den matrialiser les limites.
Il sera plus facile den discuter sur la base dun exemple. Ainsi, vous trouverez :
dans la gure 15.1 page ci-contre un exemple de feuille de style utilisant les
proprits permettant de modier les paramtres de marge, despacement et de
bordure ;
dans la gure 15.2 page 310 un exemple de page HTML mettant en uvre cette
feuille de style ;
dans la gure 15.3 page 311 le rendu de cette page HTML dans un butineur.
Dans la feuille de style (gure 15.1 page suivante), le rectangle contenant les
paragraphes a t matrialis en lachant sur un fond gris au moyen de la proprit
background-color. Le texte a t justi grce la proprit text-align an quil
occupe toute la largeur du paragraphe (ce qui permet de mieux en visualier les
limites). Ces proprits sappliquent tous les paragraphes. Il a ensuite t cr une
classe particulire de paragraphes, dans le but de mettre en uvre les proprits
permettant de modier les paramtres de marge, despacement et de bordure, que
nous allons tudier par la suite.
La page HTML (gure 15.2 page 310) contient simplement quatre paragraphes
au contenu identique, deux paragraphes nayant rien de particulier puis deux utili-
sant la classe test an de montrer leet des proprits permettant de modier les
paramtres de marge, despacement et de bordure.
Le rendu de cette page dans un butineur (gure 15.3 page 311) permet de constater
que les deux derniers paragraphes sont dirents des deux premiers en trois points :
ils sont davantage loigns des bords gauche et droite ainsi que des objets
qui les prcdent et qui les suivent, cest la marge ;
le fond gris est plus dtach du texte, cest lespacement ;
le fond gris est entour dun cadre noir, cest la bordure.
308
15.8. Marge, espacement et bordure
p
{
background-color : #CCC ;
text-align : justify ;
}
p.test
{
margin : 2em ;
padding : 1em ;
border-width : 1em ;
border-color : black ;
border-style : solid ;
}
Figure 15.1 Marge, espacement et bordure : exemple de feuille de style.
La gure 15.4 page 312 schmatise les positions respectives de la marge, de
lespacement et de la bordure par rapport au contenu.
On peut voir tous ces lments comme des poupes russes embotes les unes
dans les autres. Le contenu ultime de la balise est entour par lespacement, lui-mme
entour par la bordure, elle-mme entoure par la marge.
Par dfaut, marge, espacement et bordure sont inexistants et il faut utiliser les
proprits que nous allons maintenant tudier pour leur donner vie.
http://www.w3.org/TR/CSS21/box.html
15.8.1 La marge
Parler de marge (margin en anglais) au singulier est une simplication. Il existe
en eet quatre marges : en haut, droite, en bas et gauche. Ces marges peuvent
prendre des valeurs direntes qui sont dnies respectivement par les proprits
margin-top, margin-right, margin-bottom et margin-left :
309
Chapitre 15. Feuilles de style CSS
<p>
Lordinateur fait ce que vous lui dites de faire,
pas ce que vous voulez quil fasse.
</p>
<p>
Lordinateur fait ce que vous lui dites de faire,
pas ce que vous voulez quil fasse.
</p>
<p class="test">
Lordinateur fait ce que vous lui dites de faire,
pas ce que vous voulez quil fasse.
</p>
<p class="test">
Lordinateur fait ce que vous lui dites de faire,
pas ce que vous voulez quil fasse.
</p>
Figure 15.2 Marge, espacement et bordure : exemple de page HTML.
p
{
margin-top : 1em ;
margin-right : 2em ;
margin-bottom : 3em ;
margin-left : 4em ;
}
Si lon souhaite aecter la mme valeur aux quatre marges, on peut utiliser la
proprit margin :
p
{
margin : 2em ;
}
310
15.8. Marge, espacement et bordure
Figure 15.3 Marge, espacement et bordure : rendu dans un butineur.
311
Chapitre 15. Feuilles de style CSS
contenu
espacement
bordure
marge
Figure 15.4 Marge, espacement et bordure : schma de principe.
Celle-ci accepte galement deux valeurs (qui sont aectes respectivement aux
marges haute et basse pour la premire, droite et gauche pour la seconde), trois
valeurs (qui sont aectes respectivement aux marges haute pour la premire, droite
et gauche pour la deuxime et basse pour la troisime) ou quatre valeurs (qui sont
aectes respectivement aux marges haute, droite, basse et gauche). Nanmoins, cette
faon de procder est dicilement comprhensible et source derreur. Si lon souhaite
quune des marges ait une valeur dirente des autres, il est donc prfrable dutiliser
la proprit idoine.
Il est bien entendu possible de ne dnir que certaines marges, les autres restant
leur valeur par dfaut (gnralement nulle) :
p
{
margin-right : 2em ;
margin-left : 2em ;
}
Vous pouvez remarquer que les marges des deux derniers paragraphes de la
gure 15.3 page prcdente ne sont pas aches sur fond gris, contrairement aux
paragraphes et leurs espacements. En eet, les marges sont toujours transparentes.
Par ailleurs, dans la mme gure, remarquez que la marge sparant les deux
derniers paragraphes semble tre de la mme taille que les marges gauche et droite
alors quelle devrait tre deux fois plus importante, puisquelle cumule la marge
du bas du troisime paragraphe et la marge du haut du quatrime paragraphe. Ce
312
15.8. Marge, espacement et bordure
nest pas le cas parce que les marges verticales sparant deux lments fusionnent, la
marge rsultante tant la plus grande des deux. Ceci ne se produit pas avec les marges
horizontales.
Enn, il est galement possible dutiliser la valeur auto pour laisser le butineur
calculer automatiquement certaines marges. Cest en particulier le cas pour centrer
les tableaux (voir le paragraphe 15.9.1 page 315).
http://www.w3.org/TR/CSS21/box.html#margin-properties
15.8.2 Lespacement
L aussi, lespacement (padding en anglais) se subdivise en quatre : en haut,
droite, en bas et gauche. Ces espacements peuvent prendre des valeurs direntes
qui sont dnies respectivement par les proprits padding-top, padding-right,
padding-bottom et padding-left :
p
{
padding-top : 1em ;
padding-right : 2em ;
padding-bottom : 3em ;
padding-left : 4em ;
}
Si lon souhaite aecter la mme valeur aux quatre espacements, on peut utiliser
la proprit padding :
p
{
padding : 2em ;
}
Celle-ci accepte galement deux, trois ou quatre valeurs sur le mme modle que
la proprit margin.
Il est bien entendu possible de ne dnir que certains espacements, les autres
restant leur valeur par dfaut (gnralement nulle) :
p
{
padding-right : 2em ;
padding-left : 2em ;
}
313
Chapitre 15. Feuilles de style CSS
Remarquez que les espacements des deux derniers paragraphes de la gure 15.3
page 311 ont hrit de la couleur de fond attribue aux paragraphes au moyen de la
proprit background-color. Il nest pas possible dattribuer un espacement une
couleur de fond dirente de celle de son lment.
http://www.w3.org/TR/CSS21/box.html#padding-properties
15.8.3 La bordure
La bordure (border en anglais) matrialise la frontire entre espacement et marge :
p
{
border-width : 1em ;
border-color : black ;
border-style : solid ;
}
Trois proprits permettent den dnir laspect :
la proprit border-width indique son paisseur ;
la proprit border-color indique sa couleur ;
la proprit border-style indique son style.
La proprit border-style peut prendre lune des valeurs indiques dans le
tableau 15.7.
none nache pas la bordure
hidden identique none sauf dans des cas particuliers impliquant des cellules de
tableaux (que nous ne dtaillerons pas)
dotted ache la bordure en pointills
dashed ache la bordure sous la forme dun trait interrompu
solid ache la bordure sous la forme dun train plein
double ache la bordure sous la forme dun double trait
groove ache la bordure en pseudo-relief sous la forme dune ligne rentrante
ridge ache la bordure en pseudo-relief sous la forme dune ligne saillante
inset ache la bordure en pseudo-relief en donnant limpression que llment
et son espacement sont incrusts dans la page
outset ache la bordure en pseudo-relief en donnant limpression que llment
et son espacement sortent de la page
Table 15.7 Valeurs utilisables avec la proprit border-style.
314
15.9. Les tableaux
Les proprits border-width, border-color et border-style sutilisent en fait
comme les proprits margin et padding, avec une, deux, trois ou quatre valeurs,
contrlant les quatre cts de la bordure.
Signalons galement lexistence de proprits qui permettent dindiquer indivi-
duellement lpaisseur, la couleur et le style dun des quatre cts de la bordure. Ces
proprits sont prsentes dans le tableau 15.8.
paisseur Couleur Style
border-top-width border-top-color border-top-style
border-right-width border-right-color border-right-style
border-bottom-width border-bottom-color border-bottom-style
border-left-width border-left-color border-left-style
Table 15.8 Proprits de conguration de lpaisseur, de la couleur et du style des quatre
cts de la bordure.
Nanmoins, il est particulirement inesthtique que les quatre cts de la bor-
dure ne soient pas homognes. Aussi, lutilisation de ces proprits est vivement
dconseille.
http://www.w3.org/TR/css3-background/#borders
15.9 Les tableaux
Plusieurs proprits permettent de modier la prsentation des tableaux. Nous
allons laisser de ct celles qui sont complexes et qui ont peu dintrt pour nous
concentrer sur le centrage dun tableau, la gestion des bordures et le positionnement
de la lgende.
http://www.w3.org/TR/CSS21/tables.html
15.9.1 Centrage dun tableau
tant donn quun tableau ne peut pas tre contenu dans un paragraphe, le
centrage dun tableau ne peut pas tre eectu au moyen de la proprit text-align,
tudie au paragraphe 15.7.6 page 306.
Pour centrer un tableau, il faut laisser le butineur calculer les marges gauche et
droite en leur donnant la valeur auto :
315
Chapitre 15. Feuilles de style CSS
table
{
margin-left : auto ;
margin-right : auto ;
}
15.9.2 Gestion des bordures
Par dfaut, seul le contenu des cellules des tableaux est ach. Les sparations
horizontales entre lignes et verticales entre colonnes ne le sont pas.
Nanmoins, il peut tre souhaitable de matrialiser ces sparations pour des
raisons esthtiques.
Par ailleurs, pendant la mise au point dun tableau, surtout sil est complexe
(par exemple sil contient des cellules stendant sur plusieurs colonnes ou plusieurs
lignes), il peut-tre utile de matrialiser ces mmes sparations, an de bien visualiser
la structure du tableau, quitte les supprimer dans la version nale, si elles ne doivent
pas y gurer.
Considrons le code HTML dun tableau indiqu dans la gure 15.5.
<table>
<tr> <th>Nom</th> <th>Numro</th> </tr>
<tr> <td>Export</td> <td>33</td> </tr>
<tr> <td>Pastis</td> <td>51</td> </tr>
<tr> <td>Kronenbourg</td> <td>1664</td> </tr>
</table>
Figure 15.5 Gestion des bordures dun tableau : exemple de code HTML.
Il est possible de matrialiser la bordure de chaque cellule grce aux proprits
tudies au paragraphe 15.8.3 page 314, ce qui est fait avec la feuille de style prsente
dans la gure 15.6 page suivante.
Le rendu du tableau dans un butineur (gure 15.7 page ci-contre) permet dap-
prcier le rsultat.
Vous laurez remarqu, chaque cellule du tableau est matrialise individuelle-
ment, avec des marges horizontales et verticales entre les cellules. Ceci nest pas
vraiment avenant et alourdit la prsentation.
Il est possible de changer cela au moyen de la proprit border-collapse ap-
plique llment table, ce qui est fait avec la feuille de style prsente dans la
gure 15.8 page suivante.
316
15.9. Les tableaux
td , th
{
border-width : 2px ;
border-style : solid ;
}
Figure 15.6 Gestion des bordures dun tableau (approche simpliste) : exemple de feuille
de style.
Figure 15.7 Gestion des bordures dun tableau (approche simpliste) : rendu dans un
butineur.
table
{
border-collapse : collapse ;
}
td , th
{
border-width : 2px ;
border-style : solid ;
}
Figure 15.8 Gestion des bordures dun tableau (proprit border-collapse) : exemple
de feuille de style.
317
Chapitre 15. Feuilles de style CSS
Le rendu du tableau dans un butineur (gure 15.9) permet dapprcier le rsultat,
qui est plus conforme ce quoi lon sattend pour un tableau.
Figure 15.9 Gestion des bordures dun tableau (proprit border-collapse) : rendu
dans un butineur.
La proprit border-collapse peut prendre lune des valeurs indiques dans le
tableau 15.9.
collapse provoque la fusion des bordures des cellules
separate indique que les bordures des cellules doivent rester distinctes
(cest la valeur par dfaut)
Table 15.9 Valeurs utilisables avec la proprit border-collapse.
http://www.w3.org/TR/CSS21/tables.html#propdef-border-collapse
15.9.3 La proprit de positionnement de lgende caption-side
La proprit caption-side permet de dnir le positionnement de llment
caption :
caption
{
caption-side : bottom ;
}
La proprit caption-side peut prendre lune des valeurs indiques dans le
tableau 15.10 page ci-contre.
Par ailleurs, la lgende est par dfaut centre par rapport au tableau, son position-
nement horizontal peut tre modi au moyen de la proprit text-align (voir le
paragraphe 15.7.6 page 306).
318
15.9. Les tableaux
top la lgende est place au-dessus du tableau (cest le cas par dfaut)
bottom la lgende est place au-dessous du tableau
Table 15.10 Valeurs utilisables avec la proprit caption-side.
http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side
319
16
Organisation structurale dun site Web
I
l est aujourdhui communment admis que les direntes pages faisant
partie dun site Web doivent avoir un aspect similaire, chaque page tant
compose de blocs rectangulaires agencs de la mme faon dans toutes
les autres pages. Avant HTML 5, il fallait se contenter du seul lment
div pour grer cette organisation, ce qui tait fonctionnel mais ne donnait aucune
information structurale. Maintenant, il existe toute une panoplie dlments, que
nous allons tudier au paragraphe 16.2 page suivante. Mais nous allons dabord faire
une petite digression du ct de llment span.
16.1 Llment span
Les proprits tudies jusquici permettent de modier laspect de divers l-
ments. Mais que faire si lon souhaite modier laspect dune partie du texte qui nest
encadre par aucun lment ? Llment span permet de rsoudre ce problme.
Par exemple, il est dusage de composer en italique les mots issus dune langue
trangre. Nous avons vu au paragraphe 15.3.3.8.3 page 296 comment utiliser la
pseudo-classe :lang pour appliquer des dclarations en fonction de la valeur de
lattribut lang. On peut alors crire, dans la page HTML :
<p>
Y a des gens qui nont pas russi parce quils ne sont
pas <span lang="en">aware</span>, ils ne sont pas au courant.
</p>
Et le mot aware sera mis en italique grce la rgle suivante dans la feuille de
style :
321
Chapitre 16. Organisation structurale dun site Web
:lang(en)
{
font-style : italic ;
}
Le slecteur de langue ne spcie pas dlment an de pouvoir tre appliqu
dautres lments que span au besoin.
Llment span peut tre considr comme un lment tout faire ds quil
sagit de modier laspect dune partie du texte ntant pas dlimite par un lment
(du moins avant de rajouter llment span). Il est principalement utilis avec des
slecteurs de classe, par exemple :
.important
{
color : red ;
}
<p>
Par ailleurs, il est absolument essentiel de
<span class="important">ne pas nourrir le mogwa
aprs minuit</span> car les consquences peuvent
se rvler dsastreuses.
</p>
http://www.w3.org/TR/html5/text-level-semantics.html#the-span-element
16.2 Les lments dorganisation structurale
Dans un site Web, les direntes pages sont gnralement construites selon le
mme gabarit. Elles sont formes dun ensemble de blocs rectangulaires agencs de la
mme faon dans toutes les pages an davoir une certaine cohrence visuelle. Par
exemple, un bloc pour len-tte, un bloc pour la barre latrale de navigation, un bloc
pour la partie principale de la page et un bloc pour le pied de page.
Pour cela, dirents lments sont disponibles. Ceux indiqus ci-aprs font partie
des grandes nouveauts de HTML 5.
http://www.w3.org/TR/html5/sections.html
322
16.2. Les lments dorganisation structurale
16.2.1 Llment main
Llment main contient la partie principale de la page HTML. Celle-ci doit tre
unique donc une page HTML ne peut contenir quun seul lment main.
http://www.w3.org/TR/html5/grouping-content.html#the-main-element
16.2.2 Llment article
Llment article contient un document autonome tel quun article dans un
journal ou un magazine ou bien un message dans un forum de discussion.
http://www.w3.org/TR/html5/sections.html#the-article-element
16.2.3 Llment section
Llment section reprsente une sous-partie dun document. An de lidentier
clairement, il est possible de faire dbuter son contenu par un lment header (voir
le paragraphe 16.2.6) contenant un lment de titre h1 h6 de niveau adquat (voir le
paragraphe 14.4.1 page 267).
http://www.w3.org/TR/html5/sections.html#the-section-element
16.2.4 Llment nav
Llment nav regroupe des ensembles dhyperliens facilitant la navigation au sein
dun site.
http://www.w3.org/TR/html5/sections.html#the-nav-element
16.2.5 Llment aside
Llment aside contient des informations secondaires, qui ne sont pas ncessai-
rement relies au contenu principal. Dans un site dinformation, cela peut tre les
premires lignes des articles les plus rcents ou dautres articles sur le mme thme
que larticle consult. Cela peut galement tre de la publicit.
http://www.w3.org/TR/html5/sections.html#the-aside-element
16.2.6 Llment header
Llment header contient len-tte de llment qui le contient. Cet lment peut
tre body ou main pour un en-tte global ou bien article, section, nav ou aside
pour un en-tte local.
323
Chapitre 16. Organisation structurale dun site Web
Llment header peut contenir un lment de titre h1 h6 de niveau adquat
(voir le paragraphe 14.4.1 page 267).
http://www.w3.org/TR/html5/sections.html#the-header-element
16.2.7 Llment footer
Llment footer contient le pied de page du contenu de llment qui le contient.
Cet lment peut tre body ou main pour un pied de page global ou bien article,
section, nav ou aside pour un pied de page local.
http://www.w3.org/TR/html5/sections.html#the-footer-element
16.2.8 Llment address
Llment address contient les coordonnes du ou des auteurs de llment
article ou body qui le contient.
http://www.w3.org/TR/html5/sections.html#the-address-element
16.2.9 Exemple complet dutilisation de ces lments
Le listage 16.1 montre un exemple complet dutilisation des lments dorganisa-
tion structurale.
Listage 16.1 Exemple dutilisation des lments dorganisation structurale.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Exemple</title>
</head>
<body>
<nav>
<ul>
324
16.2. Les lments dorganisation structurale
<li> <a href="page1.html">page1</a> </li>
<li> <a href="page2.html">page2</a> </li>
<li> <a href="page3.html">page3</a> </li>
<li> <a href="page4.html">page4</a> </li>
<li> <a href="page5.html">page5</a> </li>
</ul>
</nav>
<main>
<header>
<h1>Titre de la page</h1>
</header>
<article>
<header>
<h2>Titre de larticle</h2>
<p>
Ceci est le paragraphe dintroduction de larticle.
</p>
</header>
<section>
<h3>Titre de la sous-partie</h3>
<p>
Texte de la sous-partie.
</p>
</section>
<section>
<h3>Titre de la sous-partie</h3>
<p>
Texte de la sous-partie.
325
Chapitre 16. Organisation structurale dun site Web
</p>
</section>
<footer>
<address>
cole nationale suprieure de techniques avances <br/>
828, boulevard des Marchaux <br/>
91762 PALAISEAU CEDEX
</address>
</footer>
</article>
</main>
<aside>
<p>
Ici, on peut indiquer dautres informations.
</p>
<hr/>
<p>
Ici, on peut indiquer dautres informations.
</p>
</aside>
</body>
</html>
16.3 Llment div
Avant HTML 5 et les lments que nous venons dtudier, la seule faon de crer
des blocs dans une page Web tait dutiliser llment div, qui permet de dnir des
divisions. Celui-ci tait donc omniprsent.
Aujourdhui, llment div est toujours utilisable mais on le rserve au seul cas
o lon a besoin dun bloc gnrique et o les lments indiqus au paragraphe 16.2
page 322 ne conviennent pas.
326
16.4. Les deux mthodes dagencement des blocs
http://www.w3.org/TR/html5/grouping-content.html#the-div-element
16.4 Les deux mthodes dagencement des blocs
La feuille de style permet dagencer les blocs les uns par rapport aux autres. Si
plusieurs lments identiques ont besoin dtre direncis, ceci peut se faire au
moyen :
de lattribut class et dun slecteur de classe (voir le paragraphe 15.3.3.6
page 291) ;
de lattribut id et dun slecteur didentiant (voir le paragraphe 15.3.3.7
page 293).
Il existe deux mthodes dagencement des blocs, chacune ayant ses avantages et
ses inconvnients.
http://www.w3.org/TR/CSS21/visuren.html
http://www.w3.org/TR/CSS21/visudet.html
16.4.1 Agencement des blocs avec la proprit position
La premire mthode dagencement des blocs repose sur lutilisation de la pro-
prit position et des quatre proprits top, right, bottom et left permettant de
positionner avec prcision le rectangle contenant le bloc par rapport un ou plusieurs
cts de la page.
Les proprits top, right, bottom et left acceptent chacune une valeur pouvant
tre une longueur (voir le paragraphe 15.6 page 302) ou un pourcentage (les pour-
centages sont relatifs la taille de la fentre du butineur). Cette valeur indique la
distance qui spare le ct correspondant du bloc par rapport au bord de la fentre du
butineur. On utilise gnralement une ou deux de ces proprits an de positionner
le bloc verticalement et horizontalement. Il est rare dutiliser trois ou quatre de ces
proprits.
La proprit position permet de dnir le comportement du bloc quand on
fait dler le contenu de la fentre du butineur ( supposer quelle ne permette
pas dacher la totalit du contenu de la page). Elle peut prendre lune des valeurs
indiques dans le tableau 16.1.
absolute le bloc dle avec le reste de la page
fixed le bloc reste toujours au mme endroit, mme aprs dlement
Table 16.1 Valeurs utilisables avec la proprit position.
Le choix entre absolute et fixed est avant tout une aaire de prfrence person-
nelle. Un bloc (par exemple une barre latrale de navigation) qui ne dle pas peut
327
Chapitre 16. Organisation structurale dun site Web
tre intressant parce quil est toujours accessible. En revanche, sil est susamment
haut pour dpasser de la fentre du butineur vers le bas (ce qui peut arriver sur des
crans de petite taille comme ceux des tlphones mobiles), cela rend le bas de la
barre latrale de navigation inaccessible.
Enn, pour tre absolument exact, la proprit position peut galement prendre
les valeurs static et relative, qui ne prsentent pas dintrt pour positionner un
bloc et qui ne seront donc pas dtailles.
http://www.w3.org/TR/CSS21/visuren.html#propdef-position
http://www.w3.org/TR/CSS21/visuren.html#propdef-top
http://www.w3.org/TR/CSS21/visuren.html#propdef-right
http://www.w3.org/TR/CSS21/visuren.html#propdef-bottom
http://www.w3.org/TR/CSS21/visuren.html#propdef-left
16.4.2 Agencement des blocs avec la proprit float
La seconde mthode dagencement des blocs repose sur lutilisation de la proprit
float et permet de positionner les blocs de manire plus approximative mais plus
souple.
La proprit float peut prendre deux valeurs, left et right indiquant si le bloc
doit tre plac respectivement gauche ou droite. gauche ou droite de quoi ?
De ce quil y a dj du mme ct. Lordre dapparition des blocs dans la page HTML
en fonction de lendroit o lon souhaite les placer les uns par rapport aux autres a
donc son importance.
Outre lagencement des blocs, la proprit float permet galement denvelopper
une image contenue dans un paragraphe avec le texte de celui-ci (et des suivants si
limage est susamment haute et le paragraphe susamment court) aprs lavoir
place gauche ou droite de la page :
p img
{
float : left ;
margin : 0.5em ;
}
328
16.4. Les deux mthodes dagencement des blocs
<p>
Former des ingnieurs capables dassurer la conception,
la ralisation et la direction de systmes complexes,
sous des contraintes conomiques fortes et dans un
<img src="ENSTA-ParisTech.jpg" alt="[logo ENSTA]"/>
environnement international.
</p>
<p>
Former des ingnieurs capables dassurer la conception,
la ralisation et la direction de systmes complexes,
sous des contraintes conomiques fortes et dans un
environnement international.
</p>
http://www.w3.org/TR/CSS21/visuren.html#propdef-float
16.4.3 uelle mthode utiliser ?
Dans les cas simples comportant deux ou trois blocs, ces deux mthodes per-
mettent daboutir au mme rsultat. Cest dans les cas plus complexes que lune est
gnralement prfrable lautre. Les exemples qui suivent vont illustrer lutilisation
de ces proprits.
329
Chapitre 16. Organisation structurale dun site Web
16.5 Dimensionnement des blocs
Les dimensions du rectangle contenant un bloc sadaptent automatiquement son
contenu, comme cest le cas pour tous les lments tudis. Nanmoins il est possible
que le contenu dun bloc varie dune page une autre, entranant des changements
des dimensions de ce bloc qui peuvent tre inesthtiques.
Il est donc courant de spcier la largeur ou la hauteur dun bloc (en pratique, on
peut le faire pour nimporte quel lment mais cette possibilit est rarement utilise
en dehors des blocs) au moyen respectivement des proprits width et height. Celles-
ci acceptent comme valeur soit une longueur (voir le paragraphe 15.6 page 302) soit
un pourcentage (les pourcentages sont relatifs la taille de la fentre du butineur).
http://www.w3.org/TR/CSS21/visudet.html#propdef-width
http://www.w3.org/TR/CSS21/visudet.html#propdef-height
16.6 Exemple avec une barre latrale de navigation
Lutilisation la plus rpandue des blocs consiste avoir :
une barre latrale de navigation permettant daccder aux direntes pages ou
rubriques dun site sans avoir le parcourir de manire linaire ;
une partie principale.
Dans la page HTML (listage 16.2 page ci-contre), ceci se fait simplement :
en utilisant llment nav pour encadrer une liste dhyperliens an crer la
barre latrale de navigation
en utilisant llment main pour encadrer la partie principale de la page.
Si plusieurs pages dun mme site doivent tre munies dune barre latrale de
navigation, le bloc correspondant doit gurer dans chaque page.
Il est important que le bloc correspondant la barre latrale de navigation soit
indiqu avant celui correspondant la partie principale de la page pour lagencement
avec la proprit float. En eet, avec lordre inverse, plutt que davoir les deux
blocs cte cte, le haut de la barre latrale de navigation serait plac au niveau du
bas de la partie principale. En revanche, lordre des blocs na pas dimportance pour
lagencement avec la proprit position.
Bien entendu, il nest indiqu nulle part dans la page HTML o doivent tre placs
les deux blocs. Nous allons tudier comment les agencer au moyen de la proprit
position (paragraphe 16.6.1) puis au moyen de la proprit float (paragraphe 16.6.2
page 333). La barre latrale de navigation sera place gauche et la partie principale
droite. La disposition inverse est laisse en exercice au lecteur.
16.6.1 Agencement avec la proprit position
La feuille de style prsente dans le listage 16.3 page 332 permet lagencement
de la barre latrale de navigation et de la partie principale de la page HTML du
330
16.6. Exemple avec une barre latrale de navigation
Listage 16.2 Barre latrale de navigation : exemple de page HTML.
<nav>
<ul>
<li> <a href="page1.html">page1</a> </li>
<li> <a href="page2.html">page2</a> </li>
<li> <a href="page3.html">page3</a> </li>
<li> <a href="page4.html">page4</a> </li>
<li> <a href="page5.html">page5</a> </li>
<li> <a href="page5.html">page6</a> </li>
<li> <a href="page5.html">page7</a> </li>
<li> <a href="page5.html">page8</a> </li>
<li> <a href="page5.html">page9</a> </li>
</ul>
</nav>
<main>
<header>
<h1>Titre de la page</h1>
</header>
<article>
<header>
<h2>Titre de larticle</h2>
</header>
<p>
Former des ingnieurs capables dassurer la conception,
la ralisation et la direction de systmes complexes,
sous des contraintes conomiques fortes et dans un
environnement international.
</p>
</article>
</main>
331
Chapitre 16. Organisation structurale dun site Web
listage 16.2 page prcdente au moyen de la proprit position.
Listage 16.3 Barre latrale de navigation (proprit position) : exemple de feuille de
style.
nav
{
background-color : #cccccc ;
position : absolute ;
top : 0 ;
left : 0 ;
width : 20% ;
}
main
{
position : absolute ;
top : 0 ;
left : 0 ;
margin-left : 20% ;
}
Tout dabord, tudions les proprits de llment nav, correspondant la barre
latrale de navigation :
la proprit background-color permet de matrialiser le fond de la barre la-
trale de navigation an de bien en discerner les limites et de la direncier
visuellement de la partie principale ;
la proprit position indique, par sa valeur absolute, que la barre latrale de
navigation pourra dler avec le reste de la page ;
la proprit top indique que la barre latrale de navigation sera place la
distance 0 du haut de la page ;
la proprit left indique que la barre latrale de navigation sera place la
distance 0 du bord gauche de la page ;
la proprit width indique que la barre latrale de navigation aura une largeur
gale 20 % de celle de la page.
La combinaison des proprits top et left fait que la barre latrale de navigation
sera positionne en haut et gauche de la page.
Les proprits de llment main, correspondant la partie principale de la page,
nappellent que peu de commentaires. Ce bloc est positionn de la mme faon que la
barre latrale de navigation. Nanmoins, une marge gauche (proprit margin-left)
de 20 % permet den dcaler le contenu an de laisser susamment despace la barre
332
16.6. Exemple avec une barre latrale de navigation
latrale de navigation. Il est important que cette marge ait une largeur suprieure ou
gale celle de la barre latrale de navigation.
Figure 16.1 Barre latrale de navigation (proprit position) : rendu dans un buti-
neur.
Enn, le rendu de la page HTML dans un butineur (gure 16.1) permet dappr-
cier le rsultat. On se rend compte cette occasion que le texte du bloc principal est
coll au fond color de la barre de navigation latrale. Attribuer une petite valeur
(par exemple 1em) lespacement gauche du bloc principal permettrait de larer un
peu. De mme, il nest pas ncessaire que la liste de liens soit si loigne du bord
gauche de la barre latrale de navigation. Les listes ont par dfaut un espacement
gauche important. Lui attribuer une valeur infrieure (par exemple 1.5em) pourrait
tre intressant.
Lorsquon agence des blocs, il arrive frquemment de se rendre compte quil faut
agir sur une marge ou un espacement ici ou l.
16.6.2 Agencement avec la proprit float
La feuille de style prsente dans le listage 16.4 page suivante permet lagencement
de la barre latrale de navigation et de la partie principale de la page HTML du
listage 16.2 page 331 au moyen de la proprit float.
Pour llment nav, on retrouve les proprits background-color et width alors
que les proprits position, top et left ont t remplaces par la seule proprit
float, dont la valeur est left. Ceci indique que le bloc doit tre place gauche (par
rapport ce que serait sa position autrement). Dans la mesure o il est dj en haut
de la page, il nest nul besoin dindiquer sa position verticale.
De la mme faon, pour llment main, il nest ncessaire dindiquer que la
largeur de la marge gauche.
Enn, le rendu de la page HTML dans un butineur (gure 16.2 page suivante)
montre que la barre latrale de navigation est ici plus loigne des bords haut et
333
Chapitre 16. Organisation structurale dun site Web
Listage 16.4 Barre latrale de navigation (proprit float) : exemple de feuille de style.
nav
{
background-color : #cccccc ;
float : left ;
width : 20% ;
}
main
{
margin-left : 20% ;
}
Figure 16.2 Barre latrale de navigation (proprit float) : rendu dans un butineur.
gauche de la page. Elle est en eet soumise aux marges par dfaut impos llment
body par le butineur, ce qui nest pas le cas avec la proprit position. On se rend
compte quil faudrait galement agir sur les largeurs de lespacement gauche du bloc
principal et de la liste de liens, comme dans lexemple prcdent.
16.7 Exemple avec deux barres latrales
Une autre disposition courante comporte deux barres latrales, lune gauche et
lautre droite.
Dans la page HTML (listage 16.5), ceci se fait simplement avec trois blocs, un
pour chaque barre latrale et un pour la partie principale de la page.
334
16.7. Exemple avec deux barres latrales
Listage 16.5 Deux barres latrales : exemple de page HTML.
<nav>
<ul>
<li> <a href="page1.html">page1</a> </li>
<li> <a href="page2.html">page2</a> </li>
<li> <a href="page3.html">page3</a> </li>
<li> <a href="page4.html">page4</a> </li>
<li> <a href="page5.html">page5</a> </li>
<li> <a href="page5.html">page6</a> </li>
<li> <a href="page5.html">page7</a> </li>
<li> <a href="page5.html">page8</a> </li>
<li> <a href="page5.html">page9</a> </li>
</ul>
</nav>
<aside>
<p>
Ici, on peut indiquer dautres informations.
</p>
<hr/>
<p>
Ici, on peut indiquer dautres informations.
</p>
</aside>
<main>
<header>
<h1>Titre de la page</h1>
</header>
<article>
<header>
<h2>Titre de larticle</h2>
</header>
335
Chapitre 16. Organisation structurale dun site Web
<p>
Former des ingnieurs capables dassurer la conception,
la ralisation et la direction de systmes complexes,
sous des contraintes conomiques fortes et dans un
environnement international.
</p>
</article>
</main>
Comme dans lexemple avec une seule barre, il est important que le bloc corres-
pondant la partie principale de la page soit le dernier pour que lagencement avec
la proprit float soit correct.
16.7.1 Agencement avec la proprit position
La feuille de style prsente dans le listage 16.6 page 338 permet lagencement des
barres latrales et de la partie principale de la page HTML du listage 16.5 page 334
au moyen de la proprit position.
Le principe est dans la ligne de celui de lexemple avec une seule barre et nappelle
pas de commentaires particuliers.
Enn, le rendu de la page HTML dans un butineur (gure 16.3 page ci-contre)
permet dapprcier le rsultat.
16.7.2 Agencement avec la proprit float
La feuille de style prsente dans le listage 16.7 page 339 permet lagencement des
barres latrales et de la partie principale de la page HTML du listage 16.5 page 334
au moyen de la proprit float.
Le principe est dans la ligne de celui de lexemple avec une seule barre et nappelle
pas de commentaires particuliers.
Enn, le rendu de la page HTML dans un butineur (gure 16.4 page suivante)
permet dapprcier le rsultat.
336
16.7. Exemple avec deux barres latrales
Figure 16.3 Deux barres latrale (proprit position) : rendu dans un butineur.
Figure 16.4 Deux barre latrales (proprit float) : rendu dans un butineur.
337
Chapitre 16. Organisation structurale dun site Web
Listage 16.6 Deux barres latrales (proprit position) : exemple de feuille de style.
nav
{
background-color : #cccccc ;
position : absolute ;
top : 0 ;
left : 0 ;
width : 30% ;
}
aside
{
background-color : #cccccc ;
position : absolute ;
top : 0 ;
right : 0 ;
width : 30% ;
}
main
{
position : absolute ;
top : 0 ;
left : 0 ;
margin-left : 30% ;
margin-right : 30% ;
}
338
16.7. Exemple avec deux barres latrales
Listage 16.7 Deux barres latrales (proprit float) : exemple de feuille de style.
nav
{
background-color : #cccccc ;
float : left ;
width : 30% ;
}
aside
{
background-color : #cccccc ;
float : right ;
width : 30% ;
}
main
{
margin-left : 30% ;
margin-right : 30% ;
}
339
Annexes
A
Rcapitulatif des commandes des diteurs de texte
Dplacement
aller en dbut de ligne C-a
aller en n de ligne C-e
se dplacer de mot en mot C-
C-
se dplacer de paragraphe en paragraphe C-
C-
aller la ligne numro n M-g M-g ou M-g g puis
saisir n dans le minibuffer
Suppression
supprimer le caractre sous le curseur C-d
supprimer la n du mot partir du curseur M-d
supprimer la n de la ligne C-k
Excution multiple
excuter n fois une commande M-n <commande>
rpter la dernire commande C-x z
Copier-coller, couper-coller
copier-coller la souris
couper-coller souris, C-w et souris
Annulation
annuler la modication prcdente C-/ ou C-
_
annuler la commande en cours C-g
Table A.1 Rcapitulatif des commandes dEmacs tudies.
343
Annexe A. Rcapitulatif des commandes des diteurs de texte
Fichiers
sauvegarder le chier C-x C-s
sauvegarder le chier en le nommant C-x C-w
lire un chier C-x C-f
Recherche, remplacement
recherche interactive (vers le bas) C-s
recherche interactive (vers le haut) C-r
recherche et remplacement M-%
Divers
reformater le paragraphe M-q
appeler une commande par son nom complet M-x
couper la fentre en deux C-x 2
uitter
quitter C-x C-c
Table A.1 Rcapitulatif des commandes dEmacs tudies (suite et n).
Passage en mode insertion, en mode commande
passage en mode insertion au caractre situ sous le curseur i
passage en mode insertion au caractre situ aprs le curseur a
passage en mode insertion en dbut de ligne I
passage en mode insertion en n de ligne A
passage en mode insertion au-dessous de la ligne actuelle o
passage en mode insertion au-dessus de la ligne actuelle O
passage en mode commande Esc
Dplacement
gauche, bas, haut, droite h j k l
aller en dbut de ligne 0
aller en n de ligne $
se dplacer de mot en mot W B
se dplacer de paragraphe en paragraphe { }
aller sur la dernire ligne G
aller la ligne numro n nG
Table A.2 Rcapitulatif des commandes de vi et de Vim tudies.
344
Annexe A. Rcapitulatif des commandes des diteurs de texte
Suppression
supprimer le caractre sous le curseur x
supprimer la n du mot partir du curseur dw
supprimer la n de la ligne D
supprimer la ligne dd
Excution multiple
excuter n fois une commande n<commande>
rpter la dernire commande .
Copier-coller, couper-coller
copier-coller [n]yy p
couper-coller [n]dd p
Annulation
annuler la modication prcdente u
annuler la commande en cours Esc
Fichiers
sauvegarder le chier :w
lire un chier :e
Recherche, remplacement
recherche (vers le bas) /
recherche (vers le haut) ?
recherche et remplacement :s
Divers
joindre la ligne suivante la ligne courante J
Les commandes suivantes sont spciques Vim.
limiter la saisie des lignes n caractres :set textwidth=n
reformater le paragraphe gqap
uitter
quitter :q
sauvegarder le chier et quitter :wq :x ZZ
quitter sans sauvegarder le chier :q!
Table A.2 Rcapitulatif des commandes de vi et de Vim tudies (suite et n).
345
B
Rcapitulatif des commandes
Commande Description O
date ache la date et lheure 3.5 page 34
passwd change le mot de passe de lutilisateur 3.6 page 36
Table B.1 Rcapitulatif des commandes tudies dans la premire partie, Introduc-
tion .
Commande Description O
iconv convertit le codage dun chier texte 4.5.1 page 51
emacs diteur de texte Emacs 5.1 page 53
vi diteur de texte vi 6.1 page 67
vim diteur de texte Vim 6.1 page 67
Table B.2 Rcapitulatif des commandes tudies dans la deuxime partie, Du texte et
des diteurs de texte .
Commande Description O
sh Bourne shell 7.1 page 80
csh C shell 7.1 page 80
tcsh TENEX C shell 7.1 page 80
ksh Korn shell 7.1 page 80
bash Bourne-again shell 7.1 page 80
zsh Z shell 7.1 page 80
Table B.3 Rcapitulatif des commandes tudies dans le chapitre 7, Linterprteur de
commandes .
347
Annexe B. Rcapitulatif des commandes
Commande Description O
cal ache le calendrier 7.2.3 page 84
ls ache la liste des chiers 7.3 page 88
cat ache le contenu dun chier texte 7.4.1 page 92
more ache le contenu dun chier texte 7.4.2 page 92
avec contrle 9.5.1 page 184
less ache le contenu dun chier texte 7.4.3 page 93
avec contrle 9.5.1 page 184
man ache le manuel dune commande 7.5 page 94
clear eace lcran de linterprteur de commandes 7.6 page 94
exit quitte linterprteur de commandes 7.7 page 95
Table B.3 Rcapitulatif des commandes tudies dans le chapitre 7, Linterprteur de
commandes (suite et n).
Commande Description O
cp copie un chier 8.1.1 page 97
copie plusieurs chiers 8.3.3.1 page 111
mv renomme un chier 8.1.2 page 98
dplace des chiers 8.3.3.2 page 112
rm supprime des chiers 8.1.3 page 99
supprime des rpertoires 8.3.8.2 page 122
ln cre des liens 8.1.4 page 100
8.3.3.3 page 113
mkdir cre des rpertoires 8.3.1 page 107
cd change de rpertoire 8.3.4 page 113
pwd ache le rpertoire courant 8.3.4 page 113
rmdir supprime des rpertoires 8.3.8.1 page 121
chmod modie les droits daccs 8.5.3 page 131
umask modie les droits daccs 8.5.4 page 133
find retrouve des chiers 8.7.1.1 page 138
quota ache ses quotas 8.7.1.2 page 141
du ache lespace occup par chaque rpertoire 8.7.1.3 page 142
df ache loccupation des disques 8.7.1.4 page 144
compress comprime des chiers 8.7.2.1 page 147
uncompress dcomprime des chiers 8.7.2.1 page 147
gzip comprime des chiers 8.7.2.2 page 147
gunzip dcomprime des chiers 8.7.2.2 page 147
Table B.4 Rcapitulatif des commandes tudies dans le chapitre 8, Gestion, organisa-
tion et traitement des chiers .
348
Annexe B. Rcapitulatif des commandes
Commande Description O
bzip2 comprime des chiers 8.7.2.3 page 148
bunzip2 dcomprime des chiers 8.7.2.3 page 148
lzma comprime des chiers 8.7.2.4 page 149
unlzma dcomprime des chiers 8.7.2.4 page 149
xz comprime des chiers 8.7.2.5 page 150
unxz dcomprime des chiers 8.7.2.5 page 150
tar archivage 8.7.3.1 page 151
zip archivage et compression 8.7.4.1 page 154
unzip dsarchivage 8.7.4.1 page 154
unrar dsarchivage 8.7.4.2 page 155
Table B.4 Rcapitulatif des commandes tudies dans le chapitre 8, Gestion, organisa-
tion et traitement des chiers (suite et n).
Commande Description O
history ache lhistorique des commandes 9.1 page 157
type ache le chemin daccs absolu dune 9.2.3 page 162
commande
which ache le chemin daccs absolu dune 9.2.3 page 162
commande
ps ache la liste des processus 9.3.3 page 167
top ache la liste des processus 9.3.4 page 169
kill envoie un signal un processus 9.3.5 page 170
true envoie un statut de sortie vrai 9.3.6.3 page 174
false envoie un statut de sortie faux 9.3.6.3 page 174
grep recherche utilisant une expression rationnelle 9.5.2 page 185
awk utilise le langage de programmation AWK 9.5.3 page 189
sed diteur de texte non interactif 9.5.4 page 194
sort trie les lignes dun texte 9.5.5 page 196
wc ache le nombre de lignes, de mots 9.5.6 page 199
et doctets dun texte
nohup lance un processus en lmancipant 9.6.1 page 200
nice lance un processus en modiant sa priorit 9.6.2 page 201
renice modie la priorit dun processus 9.6.2 page 201
screen multiplexeur de terminaux 9.6.3 page 203
tmux multiplexeur de terminaux 9.6.4 page 205
Table B.5 Rcapitulatif des commandes tudies dans le chapitre 9, Commandes,
processus et redirections .
349
Annexe B. Rcapitulatif des commandes
Commande Description O
lpq ache la le dattente dune imprimante 10.2.1 page 208
lprm supprime un travail dimpression 10.2.2 page 209
lpr imprime un chier PostScript 10.4.1 page 212
psselect slectionne les pages imprimer 10.4.2.1 page 213
psnup imprime plusieurs pages par feuille de papier 10.4.2.2 page 214
a2ps imprime un chier texte 10.5.1 page 214
enscript imprime un chier texte 10.5.2 page 217
iconv convertit le codage dun chier texte 10.5.3 page 219
pdftops convertit un chier PDF en chier PostScript 10.6 page 219
Table B.6 Rcapitulatif des commandes tudies dans le chapitre 10, Impression .
Commande Description O
ssh connexion sur un ordinateur distant 11.2 page 224
ssh-keygen ache lempreinte dune cl publique 11.2.1 page 225
hostname ache le nom de lordinateur 11.2.1 page 225
scp transfert de chier avec un ordinateur distant 11.3 page 228
who ache la liste des utilisateurs connects 11.4 page 229
w ache la liste des utilisateurs connects 11.4 page 229
Table B.7 Rcapitulatif des commandes tudies dans le chapitre 11, Connexion
distance .
Commande Description O
test teste chiers, chanes de caractres et entiers 12.7.1.1 page 238
Table B.8 Rcapitulatif des commandes tudies dans le chapitre 12, Programma-
tion .
350
C
Rcapitulatif des lments HTML
et des proprits CSS
lment Description O
a hyperlien 14.5 page 273
abbr abrviation 14.4.5 page 271
address coordonnes du ou des auteurs 16.2.8 page 324
article document autonome 16.2.2 page 323
aside informations secondaires 16.2.5 page 323
body corps de la page 14.1.2 page 266
br retour la ligne 14.4.4 page 270
caption lgende dun tableau 14.8 page 278
cite citation 14.4.5 page 271
code code informatique 14.4.5 page 271
dd description dun lment de liste dl 14.7 page 275
dfn dnition 14.4.5 page 271
div division 16.3 page 326
dl liste contenant des dnitions 14.7 page 275
dt terme dun lment de liste dl 14.7 page 275
em mise en valeur 14.4.5 page 271
footer pied de page 16.2.7 page 324
h1 titre de premier niveau 14.4.1 page 267
h2 titre de deuxime niveau 14.4.1 page 267
h3 titre de troisime niveau 14.4.1 page 267
h4 titre de quatrime niveau 14.4.1 page 267
h5 titre de cinquime niveau 14.4.1 page 267
h6 titre de sixime niveau 14.4.1 page 267
head en-tte de la page 14.1.1 page 265
header en-tte 16.2.6 page 323
Table C.1 Rcapitulatif des lments HTML tudis.
351
Annexe C. Rcapitulatif des lments HTML et des proprits CSS
lment Description O
hr let 14.4.3 page 270
html document HTML 14.1 page 264
img image 14.6 page 274
kbd saisie au clavier 14.4.5 page 271
li lment de liste ul et ol 14.7 page 275
link fait rfrence une feuille de style 15.1 page 284
main partie principale de la page HTML 16.2.1 page 323
meta informations supplmentaires sur le document 14.1.1 page 265
nav hyperliens facilitant la navigation 16.2.4 page 323
ol liste ordonne 14.7 page 275
p paragraphe 14.4.2 page 268
samp exemple de rsultat 14.4.5 page 271
section sous-partie dun document 16.2.3 page 323
span lment tout faire 16.1 page 321
strong mise en valeur de manire plus forte que em 14.4.5 page 271
sub infrieur 14.4.6 page 272
sup suprieur 14.4.6 page 272
table tableau 14.8 page 278
td cellule de donne dun tableau 14.8 page 278
th cellule de titre dun tableau 14.8 page 278
title titre 14.1.1 page 265
tr ligne dun tableau 14.8 page 278
ul liste non ordonne 14.7 page 275
var nom dune variable ou dun argument 14.4.5 page 271
Table C.1 Rcapitulatif des lments HTML tudis (suite et n).
Proprit Description O
background-color couleur de fond 15.5.3 page 301
border-collapse fusion des bordures dun tableau 15.9.2 page 316
border-color couleur de la bordure 15.8.3 page 314
border-style style de la bordure 15.8.3 page 314
border-width paisseur de la bordure 15.8.3 page 314
bottom position dun bloc 16.4.1 page 327
caption-side position de la lgende dun tableau 15.9.3 page 318
color couleur 15.5.2 page 301
float position dun bloc 16.4.2 page 328
Table C.2 Rcapitulatif des proprits CSS tudies.
352
Annexe C. Rcapitulatif des lments HTML et des proprits CSS
Proprit Description O
font-family police de caractres 15.7.1 page 303
font-size corps des caractres 15.7.4 page 305
font-style inclinaison des caractres 15.7.2 page 304
font-weight graisse des caractres 15.7.3 page 304
height hauteur 16.5 page 330
left position dun bloc 16.4.1 page 327
margin marge 15.8.1 page 309
margin-bottom marge du bas 15.8.1 page 309
margin-left marge de gauche 15.8.1 page 309
margin-right marge de droite 15.8.1 page 309
margin-top marge du haut 15.8.1 page 309
padding espacement 15.8.2 page 313
padding-bottom espacement du bas 15.8.2 page 313
padding-left espacement de gauche 15.8.2 page 313
padding-right espacement de droite 15.8.2 page 313
padding-top espacement du haut 15.8.2 page 313
position position dun bloc 16.4.1 page 327
right position dun bloc 16.4.1 page 327
text-align alignement du texte 15.7.6 page 306
text-decoration dcoration du texte 15.7.7 page 307
text-indent taille de lalina 15.7.5 page 306
top position dun bloc 16.4.1 page 327
width largeur 16.5 page 330
Table C.2 Rcapitulatif des proprits CSS tudies (suite et n).
353
Bibliographie
De nombreux ouvrages gurant dans cette bibliographie sont consultables la
bibliothque de lENSTA ParisTech.
Du texte et des diteurs de texte
[1] Debra Cameron.
GNU Emacs Pocket Reference.
OReilly Media, novembre 1998.
url : http://shop.oreilly.com/product/9781565924963.do.
[2] Debra Cameron, James Elliott, Marc Loy, Eric Raymond et Bill Rosen-
blatt.
Learning GNU Emacs.
3
e
dition.
OReilly Media, dcembre 2004.
url : http://shop.oreilly.com/product/9780596006488.do.
[3] Steve Oualline.
Vi IMprovedVim.
Landmark.
Sams, 2001.
url : http://www.informit.com/store/product.aspx?isbn=0735710015.
[4] Arnold Robbins.
vi and Vim Editors Pocket Reference.
2
e
dition.
OReilly Media, janvier 2011.
url : http://shop.oreilly.com/product/0636920010913.do.
[5] Arnold Robbins, Elbert Hannah et Linda Lamb.
Learning the vi and Vim Editors.
7
e
dition.
OReilly Media, juillet 2008.
url : http://shop.oreilly.com/product/9780596529833.do.
355
Bibliographie
[6] Michael A. Schoonover, John S. Bowie et William R. Arnold.
GNU Emacs : UNIX Text Editing and Programming.
Addison-Wesley Professional, 1992.
url : http://www.informit.com/store/product.aspx?isbn=0201563452.
[7] Kim Schulz.
Hacking Vim 7.2.
Packt Publishing, avril 2010.
url : https://www.packtpub.com/hacking-vim-7-2/book.
[8] Richard Stallman.
GNU Emacs Manual.
16
e
dition.
Free Software Foundation, 2012.
url : http://www.gnu.org/software/emacs/manual/emacs.html.
Linterprteur de commandes
[9] Alfred V. Aho, Brian W. Kernighan et Peter J. Weinberger.
The AWK Programming Language.
Addison-Wesley, 1988.
url : http://cm.bell-labs.com/cm/cs/awkbook/.
[10] Carl Albing, JP Vossen et Cameron Newham.
bash Cookbook.
OReilly Media, mai 2007.
url : http://shop.oreilly.com/product/9780596526788.do.
[11] Gail Anderson et Paul Anderson.
The UNIX C Shell Field Guide.
Prentice Hall, avril 1986.
url : http://www.asgteach.com/books/unix.htm.
[12] John Bambenek et Agnieszka Klus.
grep Pocket Reference.
OReilly Media, janvier 2009.
url : http://shop.oreilly.com/product/9780596153618.do.
[13] Daniel J. Barrett, Richard Silverman et Robert G. Byrnes.
SSH, The Secure Shell : The Denitive Guide.
2
e
dition.
OReilly Media, mai 2005.
url : http://shop.oreilly.com/product/9780596008956.do.
356
Bibliographie
[14] Christine Deffaix Rmy.
Programmation shell sous Unix/Linux. sh, ksh, bash.
3
e
dition.
ditions ENI, aot 2011.
url : http://www.editions-eni.fr/.
[15] Dale Dougherty et Arnold Robbins.
sed & awk.
2
e
dition.
OReilly Media, mars 1997.
url : http://shop.oreilly.com/product/9781565922259.do.
[16] Paul DuBois.
Using csh & tcsh.
OReilly Media, juillet 1995.
url : http://shop.oreilly.com/product/9781565921320.do.
[17] Jerey E.F. Friedl.
Mastering Regular Expressions.
3
e
dition.
OReilly Media, aot 2006.
url : http://shop.oreilly.com/product/9780596528126.do.
[18] Jan Goyvaerts et Steven Levithan.
Regular Expressions Cookbook.
2
e
dition.
OReilly Media, aot 2012.
url : http://shop.oreilly.com/product/0636920023630.do.
[19] Michael W. Lucas.
SSH Mastery.
Tilted Windmill Press, janvier 2012.
url : http://www.michaelwlucas.com/nonfiction/ssh-mastery.
[20] Cameron Newham et Bill Rosenblatt.
Learning the bash Shell.
3
e
dition.
OReilly Media, mars 2005.
url : http://shop.oreilly.com/product/9780596009656.do.
[21] Ellie uigley.
UNIX Shells by Example.
4
e
dition.
Prentice Hall, 2005.
url : http://www.informit.com/store/product.aspx?isbn=013147572X.
357
Bibliographie
[22] Arnold Robbins.
Eective awk Programming.
3
e
dition.
OReilly Media, mai 2001.
url : http://shop.oreilly.com/product/9780596000707.do.
[23] Arnold Robbins.
sed & awk Pocket Reference.
2
e
dition.
OReilly Media, juin 2002.
url : http://shop.oreilly.com/product/9780596003524.do.
[24] Arnold Robbins.
bash uick Reference.
OReilly Media, juin 2006.
url : http://shop.oreilly.com/product/9780596527761.do.
[25] Arnold Robbins et Nelson H.F. Beebe.
Classic Shell Scripting.
OReilly Media, mai 2005.
url : http://shop.oreilly.com/product/9780596005955.do.
[26] Bill Rosenblatt et Arnold Robbins.
Learning the Korn Shell.
2
e
dition.
OReilly Media, avril 2002.
url : http://shop.oreilly.com/product/9780596001957.do.
[27] Michael Stahnke.
Pro OpenSSH.
Apress, octobre 2005.
url : http://www.apress.com/9781590594766.
[28] Tony Stubblebine.
Regular Expression Pocket Reference.
2
e
dition.
OReilly Media, juillet 2007.
url : http://shop.oreilly.com/product/9780596514273.do.
[29] Sriranga Veeraraghavan.
Sams Teach Yourself Shell Programming in 24 Hours.
2
e
dition.
Sams Teach Yourself.
Sams, 2002.
url : http://www.informit.com/store/product.aspx?isbn=0672323583.
358
Bibliographie
Cration dun site Web
[30] Christophe Aubry.
CSS 2.1. Adoptez les feuilles de style pour matriser les standards du web.
2
e
dition.
ditions ENI, juin 2008.
url : http://www.editions-eni.fr/.
[31] Christophe Aubry.
CSS. Russir la mise en page de vos sites Web.
ditions ENI, janvier 2010.
url : http://www.editions-eni.fr/.
[32] Francis Draillard.
Premiers pas en CSS et XHTML.
3
e
dition.
Eyrolles, avril 2010.
url : http://www.eyrolles.com/Informatique/Livre/premiers-pas-en-css-
et-xhtml-9782212127249.
[33] Raphal Goetter.
CSS 2. Pratique du design web.
3
e
dition.
Eyrolles, janvier 2009.
url : http://www.goetter.fr/livres/css2/.
[34] Raphal Goetter.
Mmento CSS.
2
e
dition.
Eyrolles, juillet 2009.
url : http://www.eyrolles.com/Informatique/Livre/memento-css-9782212125429.
[35] Raphal Goetter.
Mmento XHTML.
2
e
dition.
Eyrolles, juillet 2009.
url : http://www.eyrolles.com/Informatique/Livre/memento-xhtml-9782212125412.
[36] Raphal Goetter.
CSS avances. Vers HTML5 et CSS3.
Eyrolles, mars 2011.
url : http://www.goetter.fr/livres/css-avancees/.
[37] Ben Henick.
HTML & CSS : The Good Parts.
OReilly Media, fvrier 2010.
url : http://shop.oreilly.com/product/9780596157616.do.
359
Bibliographie
[38] Brian P. Hogan.
HTML5 & CSS3. Develop with Tomorrows Standards Today.
The Pragmatic Programmers, dcembre 2010.
url : http://www.pragprog.com/titles/bhh5/html5-and-css3.
[39] Michel Martin.
HTML5 et CSS3. Lessentiel des pratiques actuelles.
Pearson, mars 2011.
url : http://www.pearson.fr/livre/?GCOI=27440100242490.
[40] Julie C. Meloni et Michael Morrison.
Sams Teach Yourself HTML and CSS in 24 Hours.
8
e
dition.
Sams Teach Yourself.
Sams, 2010.
url : http://www.informit.com/store/product.aspx?isbn=0672330970.
[41] Eric A. Meyer.
CSS : The Denitive Guide.
3
e
dition.
OReilly Media, novembre 2006.
url : http://shop.oreilly.com/product/9780596527334.do.
[42] Eric A. Meyer.
CSS Pocket Reference.
4
e
dition.
OReilly Media, juillet 2011.
url : http://shop.oreilly.com/product/0636920015055.do.
[43] Chuck Musciano et Bill Kennedy.
HTML & XHTML : The Denitive Guide.
6
e
dition.
OReilly Media, octobre 2006.
url : http://shop.oreilly.com/product/9780596527327.do.
[44] Mathieu Nebra.
Russir son site web avec XHTML et CSS.
3
e
dition.
Eyrolles, janvier 2010.
url : http://www.eyrolles.com/Informatique/Livre/reussir-son-site-
web-avec-xhtml-et-css-9782212124859.
[45] Mark Pilgrim.
HTML5 : Up and Running.
OReilly Media, aot 2010.
url : http://shop.oreilly.com/product/9780596806033.do.
360
Bibliographie
[46] Jennifer Niederst Robbins.
HTML & XHTML Pocket Reference.
4
e
dition.
OReilly Media, dcembre 2009.
url : http://shop.oreilly.com/product/9780596805876.do.
[47] Christopher Schmitt.
CSS Cookbook.
3
e
dition.
OReilly Media, dcembre 2009.
url : http://shop.oreilly.com/product/9780596155940.do.
[48] Christopher Schmitt et Kyle Simpson.
HTML5 Cookbook.
OReilly Media, septembre 2011.
url : http://shop.oreilly.com/product/0636920016038.do.
[49] Luc Van Lancker.
XHTML et CSS. Les nouveaux standards du code source.
2
e
dition.
ditions ENI, octobre 2008.
url : http://www.editions-eni.fr/.
[50] Luc Van Lancker.
HTML5 et CSS3. Matrisez les standards des applications Web.
ditions ENI, mars 2011.
url : http://www.editions-eni.fr/.
[51] John C. Vanden-Heuvel Sr.
CSS for Babies.
Tome 2.
Web Design for Babies.
Code Babies Media, 2011.
url : http://codebabies.com/.
[52] John C. Vanden-Heuvel Sr.
HTML for Babies.
Tome 1.
Web Design for Babies.
Code Babies Media, 2011.
url : http://codebabies.com/.
[53] Jerey Zeldman et Ethan Marcotte.
Designing with Web Standards.
3
e
dition.
New Riders, octobre 2009.
url : http://www.zeldman.com/dwws/.
361
Bibliographie
Typographie
[54] Jean-Pierre Lacroux.
Orthotypographie, Orthographe & Typographie franaises, Dictionnaire raisonn.
2007.
url : http://www.orthotypographie.fr/.
[55] Lexique des rgles typographiques en usage lImprimerie nationale.
3
e
dition.
Imprimerie nationale. Juillet 2002.
Divers
[56] Louis Lon et Franoise Millet.
La machine UNIX.
ditions Cpadus, 1992.
url : http://www.cepadues.com/livre
_
details.asp?l=267.
[57] Alfred J. Menezes, Paul C. van Oorschot et Scott A. Vanstone.
Handbook of Applied Cryptography.
CRC Press, octobre 1996.
url : http://www.cacr.math.uwaterloo.ca/hac/.
[58] Bruce Schneier.
Applied Cryptography.
2
e
dition.
John Wiley & Sons, 1996.
url : http://www.schneier.com/book-applied.html.
362
Index
A
account . . . . . . . . . . . . . . . . . voir compte
AIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
architecture en couches . . . . . . . . . . . 33
AZERTY . . . . . . . . . . . . . . . . . . . . . . . . 29
B
babasse . . . . . . . . . . . . . . . . . . . . . . . . . . 29
bpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
binaire . . voir systme de numration
bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
bote outils . . . . . . . . . . . . . . . . . . . . . 33
BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
bureau virtuel . . . . . . . . . . . . . . . . . . . . 34
C
chirement . . . . . . . . . . . . . . . . . . . . . 222
composant dinterface graphique . . 33
compte . . . . . . . . . . . . . . . . . . . . . . . . . . 31
D
Darwin . . . . . . . . . . . . . . . . . . . . . . . . . . 19
dcimal . . voir systme de numration
desktop environment . . . . . . . . . . . . voir
environnement de bureau
display manager . . . . . voir gestionnaire
dachage
Dvorak . . . . . . . . . . . . . . . . . . . . . . . . . . 30
E
empreinte . . . . . . . . . . . . . . . . . . . . . . 224
environnement de bureau . . . . . . 32, 34
exaoctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
exbioctet . . . . . . . . . . . . . . . . . . . . . . . . 27
F
chier . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
ngerprint . . . . . . . . . . . . voir empreinte
format . . . . . . . . . . . . . . . . . . . . . . 44, 253
ferm . . . . . . . . . . . . . . . . . . . . . . 254
ouvert . . . . . . . . . . . . . . . . . . . . . 254
FreeBSD . . . . . . . . . . . . . . . . . . . . . . . . . 19
G
gestionnaire dachage . . . . . . . . . . . 31
gestionnaire de fentres . . . . . . . . . . . 34
gibioctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
gigaoctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
H
hexadcimal . . . . . . . . . voir systme de
numration
home directory . . . . . . . . voir rpertoire
personnel
HP-UX . . . . . . . . . . . . . . . . . . . . . . . . . . 19
I
identiant . . . . . . . . . . . . . . . . . . . . . . . 31
Internet . . . . . . . . . . . . . . . . . . . . . . . . . 39
ISO 8601 . . . . . . . . . . . . . . . . . . . . . . . 136
J
JBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
363
Index
K
kibioctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
kilooctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
L
Linux . . . . . . . . . . . . . . . . . . . . . . . . 19, 29
login . . . . . . . . . . . . . . . . . voir identiant
M
Mac OS X . . . . . . . . . . . . . . . . . . . . . . . 19
mbioctet . . . . . . . . . . . . . . . . . . . . . . . . 27
mgaoctet . . . . . . . . . . . . . . . . . . . . . . . 27
mot de passe . . . . . . . . . . . . . . . . . . . . . 31
Multics . . . . . . . . . . . . . . . . . . . . . . . . . . 18
multitche . . . . . . . . . . . . . . . . . . . 20, 164
premptif . . . . . . . . . . . . . . . . . . 165
multi-utilisateur . . . . . . . . . 20, 127, 221
N
NetBSD . . . . . . . . . . . . . . . . . . . . . 19, 205
O
octal . . . . voir systme de numration
octet . . . . . . . . . . . . . . . 26, voir aussi exa-
octet ; exbioctet ; gibioctet ; gi-
gaoctet ; kibioctet ; kilooctet ;
mbioctet ; mgaoctet ; pbioc-
tet ; ptaoctet ; tbioctet ; tra-
octet ; yobioctet ; yottaoctet ;
zbioctet ; zettaoctet
OpenBSD . . . . . . . . . . . . . . . . . . . 19, 205
operating system . . . . . . . . . voir systme
dexploitation
Oracle Solaris . . . . . . . . . . . . . . . . . . . . 19
ordonnancement . . . . . . . . . . . . . . . . 164
ordonnanceur . . . . . . . . . . . . . . . . . . . 164
P
password . . . . . . . . . . . voir mot de passe
pbioctet . . . . . . . . . . . . . . . . . . . . . . . . 27
ptaoctet . . . . . . . . . . . . . . . . . . . . . . . . 27

quantum . . . . . . . . . . . . . . . . . . . . . . . 164
WERTY . . . . . . . . . . . . . . . . . . . . . . . 29
WERTZ . . . . . . . . . . . . . . . . . . . . . . . 30
R
rpertoire personnel . . . . . . . . . . . . . . 31
S
scheduler . . . . . . . . . voir ordonnanceur
scheduling . . . . . voir ordonnancement
session . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
systme de numration . . . . . . . . . . . 23
binaire . . . . . . . . . . . . . . . . . . . . . . 25
dcimal . . . . . . . . . . . . . . . . . . . . . 24
hexadcimal . . . . . . . . . . . . . . . . . 25
octal . . . . . . . . . . . . . . . . . . . . . . . . 25
systme dexploitation . . . . . . . . . . . . 18
T
tbioctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
traoctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
toolkit . . . . . . . . . . . . . voir bote outils
U
UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
V
virtual desktop . . . . voir bureau virtuel
W
widget . . . . voir composant dinterface
graphique
window manager . voir gestionnaire de
fentres
X
X . . . . . . . . . . . voir X Window System
X Window System . . . . . . . . . . . . . . . 32
X11 . . . . . . . . . voir X Window System
Y
yobioctet . . . . . . . . . . . . . . . . . . . . . . . . 27
yottaoctet . . . . . . . . . . . . . . . . . . . . . . . . 27
Z
zbioctet . . . . . . . . . . . . . . . . . . . . . . . . . 27
zettaoctet . . . . . . . . . . . . . . . . . . . . . . . . 27
364
Index Du texte et des diteurs de texte
Les commandes des diteurs de texte sont rcapitules :
dans le tableau A.1 page 343 pour Emacs ;
dans le tableau A.2 page 344 pour vi et Vim.
A
ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
C
codage . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
conversion . . . . . . . . . . . . . . . . . . 51
copier-coller . . . . . . . . . . . . . . . . . . . . . 60
E
diteur de texte . . . . . . . . . . . . . . . . . . . 52
Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
F
chier texte . . . . . . . . . . . . . . . . . . . . . . 43
I
iconv . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
ISO 8859 . . . . . . . . . . . . . . . . . . . . . . . . 47
L
ligne de mode . . . . . . . . . . . . . . . . . . . . 54
M
minibuer . . . . . . . . . . . . . . . . . . . . . . . 54
mode line . . . . . . . . . voir ligne de mode
T
.txt (extension) . . . . . . . . . . . . . . . . . . 53
U
Unicode . . . . . . . . . . . . . . . . . . . . . . . . . 48
UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . 49
V
vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
365
Index Linterprteur de commandes
Un rcapitulatif des commandes tudies gure galement dans lannexe B page 347.
Symboles
! (excution dune commande de lhisto-
rique) . . . . . . . . . . . . . . . . . 158,
159
!! (excution de la commande prc-
dente) . . . . . . . . . . . . . . . . . . . . .
159
" . . . " (inhibition de caractres spciaux)
136
# (commentaire) . . . . . . . . . . . . . . . . 235
# (variable spciale) . . . . . . . . . . . . . . 245
#! (script) . . . . . . . . . . . . . . . . . . . . . . 234
$ (expression rationnelle) . . . . 186, 187
$ (valeur dune variable) . . . . . 162, 236
$( . . . ) (substitution de commande) .
184
$(( . . . )) (calcul entier) . . . . . . . . . 237
& (arrire-plan) . . . . . . . . . . . . . . . . . . 166
&& (oprateur et) . . . . . . . . . . . . . . . . 173
. . . (inhibition de caractres spciaux)
136
( . . . ) (expression rationnelle) 186, 187
) (instruction case) . . . . . . . . . . . . . 242
*
(expression rationnelle) . . . . 186, 187
*
(mtacaractre) . . . . . . . . . . . . . . . . 125
+ (expression rationnelle) . . . . 186, 187
- (suppression du premier de ses travaux
dimpression) . . . . . . . . . . 210
. (expression rationnelle) . . . . . . . . 186
. (rpertoire courant) . . . . . . . . . . . 115
.. (rpertoire parent) . . . . . . . . . . . . 115
/ (rpertoire racine) . . . . . . . . . . . . . 117
/ (sparateur) . . . . . . . . . . . . . . . 108, 135
2> (redirection de la sortie derreur stan-
dard) . . . . . . . . . . . . . . . . . . . . . .
177
; (squence) . . . . . . . . . . . . . . . . . . . . 174
;; (instruction case) . . . . . . . . . . . . 242
< (redirection de lentre standard) 179
> (redirection de la sortie standard) 176
>> (redirection de la sortie standard) . .
176
? (expression rationnelle) . . . . 186, 187
? (mtacaractre) . . . . . . . . . . . . . . . . 123
? (variable spciale) . . . . . . . . . . . . . . 172
@ (variable spciale) . . . . . . . . . . . . . . 245
[ . . . ] (commande test) . . . . . . . . 240
[ . . . ] (expression rationnelle) 186, 187
[ . . . ] (mtacaractres) . . . . . . . . . . 124
[^ . . . ] (expression rationnelle) . . 186,
187
\ (continuation de ligne) . . . . . . . . . 234
367
Index Linterprteur de commandes
\ (inhibition dun caractre spcial) 136
^ (expression rationnelle) . . . . 186, 187
^ (touche Ctrl ) . . . . . . . . . . . . . . . . . . 86
. . . (substitution de commande) 183
{ . . . } (expression rationnelle) . . . 186
| (expression rationnelle) . . . . 186, 187
| (instruction case) . . . . . . . . . . . . . 242
| (tuyau) . . . . . . . . . . . . . . . . . . . . . . . 182
|| (oprateur ou) . . . . . . . . . . . . . . . . 173
~ (rpertoire personnel) . 114, 120, 121
A
a2ps . . . . . . . . . . . . . . . . . . . . . . . 214, 219
option -1 . . . . . . . . . . . . . . . . . . 216
option -2 . . . . . . . . . . . . . . . . . . 216
option -4 . . . . . . . . . . . . . . . . . . 215
option -o . . . . . . . . . . . . . . . . . . 216
option -P . . . . . . . . . . . . . . . . . . 214
option -s . . . . . . . . . . . . . . . . . . 216
alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
archivage . . . . . . . . . . . . . . . . . . . . . . . 151
archive . . . . . . . . . . . . . . . . . . . . . . . . . 151
argument . . . . . . . . . . . . . . . . . . . . . . . . 91
arrire-plan . . . . . . . . . . . . . . . . . . . . . 166
awk . . . . . . . . . . . . . . . . . . . . 180, 189, 237
option -f . . . . . . . . . . . . . . . . . . 192
B
background . . . . . . . . . voir arrire-plan
bash . . . . . . . . . . . . . . . . . . . . . . . . 81, 231
bc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
bg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Bourne shell . . . . . . . . . . . . . . . . . voir sh
Bourne-again shell . . . . . . . . . voir bash
bunzip2 . . . . . . . . . . . . . . . . . . . . . . . . 149
.bz2 (extension) . . . . . . . . . . . . . . . . 148
bzip2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
C
C shell . . . . . . . . . . . . . . . . . . . . . voir csh
cal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
case . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
casse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
catalog . . . . . . . . . . . . . . . . voir catalogue
catalogue . . . . . . . . . . . . . . . . . . . . . . . 107
cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
chemin daccs . . . . . . . . . . . . . 108, 119
absolu . . . . . . . . . . . . . . . . . . . . . 119
relatif . . . . . . . . . . . . . . . . . . . . . . 119
chmod . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
option -R . . . . . . . . . . . . . . . . . . 133
clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
commande . . . . . . . . . . . . . . . . . . . . . . . 79
externe . . . . . . . . . . . . . . . . . . . . . 161
interne . . . . . . . . . . . . . . . . . . . . . 161
commentaire . . . . . . . . . . . . . . . . . . . 235
compltement . . . . . . . . . . . . . . 105, 108
completion . . . . . . . voir compltement
compress . . . . . . . . . . . . . . . . . . . . . . . . 147
compression . . . . . . . . . . . . . . . . . . . . 146
cp . . . . . . . . . . . . . . . . . . . . . . . . . . . 97, 111
option -i . . . . . . . . . . . . . . . . . . . 98
csh . . . . . . . . . . . . . . . . . . . . . . . . . 81, 231
D
date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
dcompression . . . . . . . . . . . . . . . . . . 146
df . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
option -h . . . . . . . . . . . . . . . . . . 145
option -k . . . . . . . . . . . . . . . . . . 144
directory . . . . . . . . . . . . . voir rpertoire
do . . . . . . . . . . . . . . . . . . . . . . . . . 243, 245
done . . . . . . . . . . . . . . . . . . . . . . . 243, 245
dossier . . . . . . . . . . . . . . . . . . . . . . . . . 107
droits daccs . . . . . . . . . . . . . . . . . . . 127
du . . . . . . . . . . . . . . . . . . . . . . . . . 142, 198
option -k . . . . . . . . . . . . . . . . . . 143
option -s . . . . . . . . . . . . . . . . . . 144
E
echo . . . . . . . . . . . . . . . . . . . 123, 162, 236
egrep . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
elif . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
else . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
mulateur de terminal . . . . . . . . . . . . 82
368
Index Linterprteur de commandes
enscript . . . . . . . . . . . . . . . . . . . 217, 219
option -D . . . . . . . . . . . . . . . . . . 218
option -E . . . . . . . . . . . . . . . . . . 217
option -o . . . . . . . . . . . . . . . . . . 218
option -P . . . . . . . . . . . . . . . . . . 217
option -U . . . . . . . . . . . . . . . . . . 217
entre standard . . . . . . . . . . . . . . . . . . 175
redirection . . . . . . . . . . . . . . . . . 178
esac . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
exit . . . . . . . . . . . 95, 205, 206, 226, 248
expression rationnelle . . . . . . . . . . . 186
F
false . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
chier
copie . . . . . . . . . . . . . . . . . . . . . . . 97
renommage . . . . . . . . . . . . . . . . . 98
suppression . . . . . . . . . . . . . . . . . 99
types de chiers
- (chier ordinaire) . . . . . . . . 89
b (chier spcial de type bloc) .
89
c (chier spcial de type carac-
tre) . . . . . . . . . . . . . . . . . . . . . .
89
d (rpertoire) . . . . . . . . . 89, 107
l (lien symbolique) . . . . . . . . 89
p (tuyau nomm) . . . . . . . . . . 89
s (prise rseau) . . . . . . . . . . . . 89
chier spcial . . . . . . . . . . . . . . . . . . . 175
ltre . . . . . . . . . . . . . . . . . . . . . . . 181, 184
find . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
option -mtime . . . . . . . . . . . . . . 140
option -name . . . . . . . . . . . . . . . 140
folder . . . . . . . . . . . . . . . . . . . voir dossier
for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
ftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
G
grep . . . . . . . . . . . . . . . . . . . . . . . 180, 185
option -E . . . . . . . . . . . . . . . . . . 188
option -i . . . . . . . . . . . . . . . . . . 189
option -l . . . . . . . . . . . . . . . . . . 189
option -n . . . . . . . . . . . . . . . . . . 189
option -v . . . . . . . . . . . . . . 182, 189
gunzip . . . . . . . . . . . . . . . . . . . . . . . . . . 148
gv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
.gz (extension) . . . . . . . . . . . . . . . . . . 147
gzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
option -9 . . . . . . . . . . . . . . . . . . 148
H
historique . . . . . . . . . . . . . . . . . . . 87, 157
history . . . . . . . . . . . . . . . . . . . . . . . . . 157
home directory . . . . . . . . voir rpertoire
personnel
hostname . . . . . . . . . . . . . . . . . . . . . . . 226
I
iconv . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
identiant de processus . . . . . . 167, 168
if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
in . . . . . . . . . . . . . . . . . . . . . . . . . 242, 243
indentation . . . . . . . . . . . . . . . . . 240, 248
inode . . . . . . . . . . . . . . . . . . . voir i-nud
interprteur de commandes . . . . 21, 79
i-nud . . . . . . . . . . . . . . . . . . . . . . . . . 100
invite . . . . . . . . . . . . . . . . . . . . 35, 83, 114
K
kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
option -9 . . . . . . . . . . . . . . . . . . 172
option -KILL . . . . . . . . . . . . . . . 172
option -l . . . . . . . . . . . . . . . . . . 171
Korn shell . . . . . . . . . . . . . . . . . . voir ksh
ksh . . . . . . . . . . . . . . . . . . . . . . . . . 81, 231
L
less . . . . . . . . . . . . . . . . . . . . . . . . 93, 185
lien . . . . . . . . . . . . . . . . . . . . . . . . 100, 101
lien symbolique . . . . . . . . . . . . . . 89, 103
link . . . . . . . . . . . . . . . . . . . . . . . voir lien
ll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
ln . . . . . . . . . . . . . . . . . . . . . . . . . 100, 113
option -i . . . . . . . . . . . . . . . . . . 103
369
Index Linterprteur de commandes
option -s . . . . . . . . . . . . . . . . . . 103
lpq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
option -P . . . . . . . . . . . . . . . . . . 208
lpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
option -P . . . . . . . . . . . . . . . . . . 212
lprm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
option -P . . . . . . . . . . . . . . . . . . 209
ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
option -a . . . . . . . . . . . . . . . . . . . 90
option -d . . . . . . . . . . . . . . . . . . 107
option -i . . . . . . . . . . . . . . . . . . 101
option -l . . . . . . . . . . . . . . . . . . . 88
lzma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
.lzma (extension) . . . . . . . . . . . . . . . 149
M
man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
masque de cration des chiers . . . 133
mtacaractre . . . . . . . . . . . . . . . . . . . 123
mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
more . . . . . . . . . . . . . . . . . . . . . . . . 92, 185
mv . . . . . . . . . . . . . . . . . . . . . . . . . . 98, 112
option -i . . . . . . . . . . . . . . . . . . . 99
N
nice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
option -n . . . . . . . . . . . . . . . . . . 202
nohup . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
P
passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
path . . . . . . . . . . . . . voir chemin daccs
PATH (variable denvironnement) . 162
pdftops . . . . . . . . . . . . . . . . . . . . . . . . 219
option -duplex . . . . . . . . . . . . . 220
PID . . . . . voir identiant de processus
pipe . . . . . . . . . . . . . . . . . . . . . . voir tuyau
PostScript . . . . . . . . . . . . . . . . . . . . . . 210
priorit . . . . . . . . . . . . . . . . . . . . . . . . . 201
process . . . . . . . . . . . . . . . . voir processus
process identier . . . . voir identiant de
processus
processus . . . . . . . . . . . . . . . . . . . . . . . 164
identiant . . . . . . . . . . . . . . . . . . 168
statut de sortie . . . . . . . . . . . . . 172
prompt . . . . . . . . . . . . . . . . . . . voir invite
ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
option a . . . . . . . . . . . . . . . . . . . 169
option u . . . . . . . . . . . . . . . . . . . 168
option w . . . . . . . . . . . . . . . . . . . 169
option x . . . . . . . . . . . . . . . . . . . 168
.ps (extension) . . . . . . . . . . . . . . . . . . 212
psnup . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
option -2 . . . . . . . . . . . . . . . . . . 214
option -4 . . . . . . . . . . . . . . . . . . 214
psselect . . . . . . . . . . . . . . . . . . . . . . . 213
option -p . . . . . . . . . . . . . . . . . . 213
pwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

quota . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
R
.rar (extension) . . . . . . . . . . . . . . . . 155
redirection . . . . . . . . . . . . . . . . . . . . . . 174
entre standard . . . . . . . . . . . . . 178
sortie derreur standard . . . . . 177
sortie standard . . . . . . . . . . . . . 175
regular expression . . . . . voir expression
rationnelle
renice . . . . . . . . . . . . . . . . . . . . . . . . . . 202
rpertoire . . . . . . . . . 89, 107, voir aussi
sous-rpertoire
cration . . . . . . . . . . . . . . . . . . . . 107
suppression . . . . . . . . . . . . . . . . 121
rpertoire courant . . . . . . . . . . . . . . . 114
rpertoire personnel . . . . . . . . . . . . . 116
rpertoire racine . . . . . . . . . . . . . . . . 117
return . . . . . . . . . . . . . . . . . . . . . . . . . . 247
rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
option -i . . . . . . . . . . . . . . . . . . 100
option -r . . . . . . . . . . . . . . . . . . 122
rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
root directory . . . voir rpertoire racine
S
scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
370
Index Linterprteur de commandes
screen . . . . . . . . . . . . . . . . . . . . . . . . . . 203
option -r . . . . . . . . . . . . . . . . . . 203
option -S . . . . . . . . . . . . . . . . . . 204
script . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
option -E . . . . . . . . . . . . . . . . . . 195
option -e . . . . . . . . . . . . . . . . . . 195
option -f . . . . . . . . . . . . . . . . . . 196
sh . . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 231
.sh (extension) . . . . . . . . . . . . . . . . . . 232
shell . voir interprteur de commandes
signal . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
sort . . . . . . . . . . . . . . . . . . . . . . . 144, 196
option -f . . . . . . . . . . . . . . . . . . 197
option -k . . . . . . . . . . . . . . 196, 198
option -n . . . . . . . . . . . . . . . . . . 197
option -r . . . . . . . . . . . . . . . . . . 198
option -t . . . . . . . . . . . . . . . . . . 198
sortie derreur standard . . . . . . . . . . 175
redirection . . . . . . . . . . . . . . . . . 177
sortie standard . . . . . . . . . . . . . . . . . . 175
redirection . . . . . . . . . . . . . . . . . 175
sous-rpertoire . . . . . . . . . . . . . . . . . . 110
ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
option -l . . . . . . . . . . . . . . . . . . 227
option -t . . . . . . . . . . . . . . . . . . 228
option -X . . . . . . . . . . . . . . . . . . 227
option -Y . . . . . . . . . . . . . . . . . . 227
ssh-keygen . . . . . . . . . . . . . . . . . . . . . 225
option -f . . . . . . . . . . . . . . . . . . 225
option -l . . . . . . . . . . . . . . . . . . 225
status (variable spciale) . . . . . . . . 172
stderr . . . . . . . . . . . . . . . . . . . . . . . . . . 175
stdin . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
stdout . . . . . . . . . . . . . . . . . . . . . . . . . . 175
substitution de commande . . . . . . . 183
T
tche de fond . . . . . . . voir arrire-plan
tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
option -c . . . . . . . . . . . . . . . . . . 151
option -f . . . . . . . . . . . . . . . . . . 152
option -J . . . . . . . . . . . . . . . . . . 154
option -j . . . . . . . . . . . . . . . . . . 154
option -t . . . . . . . . . . . . . . . . . . 153
option -v . . . . . . . . . . . . . . . . . . 152
option -x . . . . . . . . . . . . . . . . . . 153
option -Z . . . . . . . . . . . . . . . . . . 153
option -z . . . . . . . . . . . . . . . . . . 154
.tar (extension) . . . . . . . . . . . . . . . . . 151
tcsh . . . . . . . . . . . . . . . . . . . . . . . . 81, 231
telnet . . . . . . . . . . . . . . . . . . . . . . . . . . 221
TENEX C shell . . . . . . . . . . . voir tcsh
terminal . . . . . . . . . . . . . . . . . . . . . . . . . 82
test . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
then . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
tmux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
option -t . . . . . . . . . . . . . . . . . . 205
top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
true . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
tube . . . . . . . . . . . . . . . . . . . . . voir tuyau
tuyau . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
type . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
U
umask . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
uncompress . . . . . . . . . . . . . . . . . . . . . 147
unlzma . . . . . . . . . . . . . . . . . . . . . . . . . . 149
unrar . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
until . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
unxz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
unzip . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
option -l . . . . . . . . . . . . . . . . . . 155
V
variable . . . . . . . . . . . . . . . . . . . . . . . . . 235
denvironnement . . . . . . . 162, 235
spciale . . . . . . . . . . . . . . . . 172, 235
W
w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
option -c . . . . . . . . . . . . . . . . . . 200
option -l . . . . . . . . . . . . . . . . . . 199
option -m . . . . . . . . . . . . . . . . . . 200
option -w . . . . . . . . . . . . . . . . . . 200
371
Index Linterprteur de commandes
which . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
while . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
working directory . . . . . voir rpertoire
courant
X
xz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
.xz (extension) . . . . . . . . . . . . . . . . . . 150
Z
.Z (extension) . . . . . . . . . . . . . . . . . . . 147
^Z (suspension du processus) . . . . . 167
Z shell . . . . . . . . . . . . . . . . . . . . . voir zsh
zip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
option -r . . . . . . . . . . . . . . . . . . 154
.zip (extension) . . . . . . . . . . . . . . . . . 154
zsh . . . . . . . . . . . . . . . . . . . . . . . . . 81, 231
372
Index Cration dun site Web
Des rcapitulatifs gurent galement :
dans le tableau C.1 page 351 pour les lments HTML;
dans le tableau C.2 page 352 pour les proprits CSS.
Symboles
. (slecteur de classe) . . . . . . . . . . . . 291
# (slecteur didentiant) . . . . . . . . 293
, (regroupement) . . . . . . . . . . . . . . . 287
/
*
. . .
*
/ (commentaire CSS) . . . . . 285
<!-- . . . --> (commentaire HTML) . . .
265
> (combinateur) . . . . . . . . . . . . . . . . . 289
[ . . . ] (slecteur dattribut) . . . . . . 290
A
a (lment) . . . . . . . . . . . . . . . . . 273, 294
attribut href . . . . . . . . . . . . . . . 273
abbr (lment) . . . . . . . . . . . . . . . . . . 271
address (lment) . . . . . . . . . . . . . . . 324
alt (attribut)
lment img . . . . . . . . . . . . . . . . 274
&amp; . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
article (lment) . . . . . . . . . . . . . . . 323
aside (lment) . . . . . . . . . . . . . . . . . 323
attribut . . . . . . . . . . . . . . . . . . . . . . . . . 265
B
background-color (proprit) 301, 314
balise . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
body (lment) . . . . . . . . . . . . . . 265, 266
border . . . . . . . . . . . . . . . . . voir bordure
border-collapse (proprit) . . . . . 316
border-color (proprit) . . . . . . . . 314
border-style (proprit) . . . . . . . . 314
border-width (proprit) . . . . . . . . 314
bordure . . . . . . . . . . . . . . . . . . . . 308, 314
bottom (proprit) . . . . . . . . . . . . . . . 327
br (lment) . . . . . . . . . . . . . . . . . . . . 270
browser . . . . . . . . . . . . . . . voir butineur
butineur . . . . . . . . . . . . . . . . . . . . . . . . 259
C
cadratin . . . . . . . . . . . . . . . . . . . . . . . . 302
caption (lment) . . . . . . . . . . 279, 318
caption-side (proprit) . . . . . . . . 318
cascade . . . . . . . . . . . . . . . . . . . . . . . . . 297
cite (lment) . . . . . . . . . . . . . . . . . . 271
class (attribut) . . . . . . . . . . . . . 292, 327
classe . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
cm (unit de mesure) . . . . . . . . . . . . . 302
code (lment) . . . . . . . . . . . . . . . . . . 271
color (proprit) . . . . . . . . . . . . . . . . 301
commentaire
373
Index Cration dun site Web
CSS . . . . . . . . . . . . . . . . . . . . . . . 285
HTML . . . . . . . . . . . . . . . . . . . . 265
couleurs . . . . . . . . . . . . . . . . . . . . . . . . 300
CSS . . . . . . . . . . . . . . . . . . . . . . . . 253, 283
1 . . . . . . . . . . . . . . . . . . . . . . . . . . 283
2 . . . . . . . . . . . . . . . . . . . . . . . . . . 283
2.1 . . . . . . . . . . . . . . . . . . . . . . . . . 283
3 . . . . . . . . . . . . . . . . . . . . . . . . . . 283
.css (extension) . . . . . . . . . . . . . . . . . 284
D
dd (lment) . . . . . . . . . . . . . . . . . . . . 276
dclaration . . . . . . . . . . . . . . . . . 286, 296
dfn (lment) . . . . . . . . . . . . . . . . . . . 271
div (lment) . . . . . . . . . . . . . . . . . . . 326
dl (lment) . . . . . . . . . . . . . . . . . . . . 276
dt (lment) . . . . . . . . . . . . . . . . . . . . 276
DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
E
lment . . . . . . . . . . . . . . . . . . . . . . . . 255
vide . . . . . . . . . . . . . . . . . . . . . . . 265
em (lment) . . . . . . . . . . . . . . . . . . . . 271
em (unit de mesure) . . . . . . . . . . . . . 302
entit . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
espacement . . . . . . . . . . . . . . . . . 308, 313
ex (unit de mesure) . . . . . . . . . . . . . 302
F
feuille de style . . . . . . . . . . . . . . 253, 283
float (proprit) . . . . . . . . . . . . . . . . 328
font-family (proprit) . . . . . . . . . 303
font-size (proprit) . . . . . . . . . . . 305
font-style (proprit) . . . . . . . . . . . 304
font-weight (proprit) . . . . . . . . . 304
footer (lment) . . . . . . . . . . . . . . . . 324
G
&gt; . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
H
h1 (lment) . . . . . . . . . . . . . . . . . . . . 267
h2 (lment) . . . . . . . . . . . . . . . . . . . . 267
h3 (lment) . . . . . . . . . . . . . . . . . . . . 267
h4 (lment) . . . . . . . . . . . . . . . . . . . . 267
h5 (lment) . . . . . . . . . . . . . . . . . . . . 267
h6 (lment) . . . . . . . . . . . . . . . . . . . . 267
head (lment) . . . . . . . . . . . . . . . . . . 265
header (lment) . . . . . . . . . . . . 323, 324
height (proprit) . . . . . . . . . . . . . . . 330
hritage . . . . . . . . . . . . . . . . . . . . . . . . 297
:hover (pseudo-classe) . . . . . . . . . . . 295
hr (lment) . . . . . . . . . . . . . . . . . . . . 270
href (attribut)
lment a . . . . . . . . . . . . . . . . . . 273
lment link . . . . . . . . . . . . . . . 284
HTML . . . . . . . . . . . . . . . . . . . . 253, 259
2.0 . . . . . . . . . . . . . . . . . . . . . . . . . 260
3.2 . . . . . . . . . . . . . . . . . . . . . . . . . 260
4.0 . . . . . . . . . . . . . . . . . . . . . . . . . 260
4.01 . . . . . . . . . . . . . . . . . . . . . . . 260
5 . . . . . . . . . . . . . . . . . . . . . . . . . . 260
html (lment) . . . . . . . . . . . . . . . . . . 265
attribut lang . . . . . . . . . . . . . . . 265
attribut xmlns . . . . . . . . . . . . . . 265
hyperlien . . . . . . . . . . . . . . . . . . . . . . . 259
hypertexte . . . . . . . . . . . . . . . . . . . . . . 259
I
id (attribut) . . . . . . . . . . . . . . . . 293, 327
identiant . . . . . . . . . . . . . . . . . . . . . . 293
img (lment) . . . . . . . . . . . . . . . . . . . 274
attribut alt . . . . . . . . . . . . . . . . 274
attribut src . . . . . . . . . . . . . . . . 274
in (unit de mesure) . . . . . . . . . . . . . 302
index.xhtml . . . . . . . . . . . . . . . . . . . . 266
ISO 639 . . . . . . . . . . . . . . . 265, 280, 296
K
kbd (lment) . . . . . . . . . . . . . . . . . . . 271
L
lang (attribut) . . . . . . . . . . . . . . 280, 296
lment html . . . . . . . . . . . . . . . 265
:lang (pseudo-classe) . . . . . . . . . . . . 296
left (proprit) . . . . . . . . . . . . . . . . . 327
li (lment) . . . . . . . . . . . . . . . . . . . . 275
374
Index Cration dun site Web
link (lment) . . . . . . . . . . . . . . . . . . 284
attribut href . . . . . . . . . . . . . . . 284
attribut rel . . . . . . . . . . . . . . . . 284
attribut type . . . . . . . . . . . . . . . 284
:link (pseudo-classe) . . . . . . . . . . . . 295
&lt; . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
M
main (lment) . . . . . . . . . . . . . . . . . . 323
marge . . . . . . . . . . . . . . . . . . . . . . 308, 309
margin . . . . . . . . . . . . . . . . . . voir marge
margin (proprit) . . . . . . . . . . . . . . . 310
margin-bottom (proprit) . . . . . . . 309
margin-left (proprit) . . . . . . . . . 309
margin-right (proprit) . . . . . . . . 309
margin-top (proprit) . . . . . . . . . . 309
MathML . . . . . . . . . . . . . . . . . . . . . . . 280
meta (lment) . . . . . . . . . . . . . . . . . . 265
mm (unit de mesure) . . . . . . . . . . . . . 302
N
nav (lment) . . . . . . . . . . . . . . . . . . . 323
navigateur . . . . . . . . . . . . . voir butineur
O
ol (lment) . . . . . . . . . . . . . . . . . . . . 275
P
p (lment) . . . . . . . . . . . . . . . . . . . . . 268
padding . . . . . . . . . . . . . voir espacement
padding (proprit) . . . . . . . . . . . . . . 313
padding-bottom (proprit) . . . . . . 313
padding-left (proprit) . . . . . . . . 313
padding-right (proprit) . . . . . . . 313
padding-top (proprit) . . . . . . . . . 313
page HTML . . . . . . . . . . . . . . . . . . . . 253
pc (unit de mesure) . . . . . . . . . . . . . 302
position (proprit) . . . . . . . . . . . . . 327
proprit . . . . . . . . . . . . . . . . . . . 286, 296
pseudo-classe . . . . . . . . . . . . . . . . . . . . 294
daction de lutilisateur . . . . . . 295
de langue . . . . . . . . . . . . . . . . . . 296
de lien . . . . . . . . . . . . . . . . . . . . . 294
pt (unit de mesure) . . . . . . . . . . . . . 302
public
_
html . . . . . . . . . . . . . . . . . . . . 266
px (unit de mesure) . . . . . . . . . . . . . 302
R
rgle . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
rel (attribut)
lment link . . . . . . . . . . . . . . . 284
right (proprit) . . . . . . . . . . . . . . . . 327
S
samp (lment) . . . . . . . . . . . . . . . . . . 271
section (lment) . . . . . . . . . . . . . . . 323
slecteur . . . . . . . . . . . . . . . . . . . 286, 287
dattribut . . . . . . . . . . . . . . . . . . 290
de classe . . . . . . . . . . . . . . . . . . . . 291
de type . . . . . . . . . . . . . . . . . . . . 287
denfant . . . . . . . . . . . . . . . . . . . . 289
descendant . . . . . . . . . . . . . . . . . 289
didentiant . . . . . . . . . . . . . . . . 293
regroupement . . . . . . . . . . . . . . 287
SGML . . . . . . . . . . . . . . . . . . . . . . . . . 255
span (lment) . . . . . . . . . . . . . . . . . . 321
src (attribut)
lment img . . . . . . . . . . . . . . . . 274
strong (lment) . . . . . . . . . . . . . . . . 271
style sheet . . . . . . . . . voir feuille de style
sub (lment) . . . . . . . . . . . . . . . . . . . 272
sup (lment) . . . . . . . . . . . . . . . . . . . 272
T
table (lment) . . . . . . . . . . . . . . . . . 278
tag . . . . . . . . . . . . . . . . . . . . . . . voir balise
td (lment) . . . . . . . . . . . . . . . . . . . . 278
text-align (proprit) . . . . . . 306, 318
text-decoration (proprit) . . . . . 307
text-indent (proprit) . . . . . . . . . 306
th (lment) . . . . . . . . . . . . . . . . . . . . 278
title (lment) . . . . . . . . . . . . . . . . . 265
top (proprit) . . . . . . . . . . . . . . . . . . 327
tr (lment) . . . . . . . . . . . . . . . . . . . . 278
type (attribut)
lment link . . . . . . . . . . . . . . . 284
375
Index Cration dun site Web
U
ul (lment) . . . . . . . . . . . . . . . . . . . . 275
V
valeur . . . . . . . . . . . . . . . . . . . . . . . . . . 286
var (lment) . . . . . . . . . . . . . . . . . . . 271
:visited (pseudo-classe) . . . . . . . . . 295
W
width (proprit) . . . . . . . . . . . . . . . . 330
X
XHTML
1.0 . . . . . . . . . . . . . . . . . . . . . . . . . 260
1.1 . . . . . . . . . . . . . . . . . . . . . . . . . 260
.xhtml (extension) . . . . . . . . . . . . . . 266
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
xmlns (attribut)
lment html . . . . . . . . . . . . . . . 265
376
Liste des tableaux
2.1 Chires utiliss en hexadcimal . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Units multiples de loctet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1 Le codage ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Les codages ISO 8859 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3 Codage de la chane de caractres coucou en ASCII . . . . . . . . . . 48
4.4 Codage de la chane de caractres coucou en Unicode . . . . . . . . . 49
4.5 Codage de la chane de caractres pt en ISO 8859-1 . . . . . . . . . 49
4.6 Codage de la chane de caractres pt en UTF-8 . . . . . . . . . . . . 50
5.1 Combinaisons permettant de saisir des caractres usuels en franais
avec Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.1 Les six faons de passer en mode insertion dans vi . . . . . . . . . . . . . 70
6.2 Combinaisons permettant de saisir des caractres usuels en franais
avec Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.1 Diminutifs, noms et crateurs des interprteurs de commandes . . . . 81
7.2 Types de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.1 Chemin daccs relatif (exemple 2), toto1 et toto2 . . . . . . . . . . . . . 120
8.2 Chemin daccs relatif (exemple 2), toto3 et toto4 . . . . . . . . . . . . . 121
8.3 Droits daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
8.4 Droits daccs en binaire et en octal . . . . . . . . . . . . . . . . . . . . . . 131
8.5 Masque de cration des chiers (chier ordinaire) . . . . . . . . . . . . . 134
8.6 Masque de cration des chiers (rpertoire) . . . . . . . . . . . . . . . . . 134
9.1 Caractres utilisables dans une expression rationnelle . . . . . . . . . . . 186
10.1 Imprimantes utilisables lENSTA ParisTech . . . . . . . . . . . . . . . . 208
377
Liste des tableaux
12.1 Oprateurs utilisables dans une expression encadre par $(( et )) . . . 237
12.2 Expressions les plus utiles pouvant suivre la commande test . . . . . . 239
15.1 Noms de couleurs utilisables dans une feuille de style . . . . . . . . . . . 300
15.2 Units de mesure utilisables dans une feuille de style . . . . . . . . . . . 302
15.3 Noms de polices gnriques utilisables avec la proprit font-family . 303
15.4 Valeurs utilisables avec la proprit font-style . . . . . . . . . . . . . . . 304
15.5 Valeurs utilisables avec la proprit text-align . . . . . . . . . . . . . . . 307
15.6 Valeurs utilisables avec la proprit text-decoration . . . . . . . . . . . 308
15.7 Valeurs utilisables avec la proprit border-style . . . . . . . . . . . . . 314
15.8 Proprits de conguration de lpaisseur, de la couleur et du style des
quatre cts de la bordure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
15.9 Valeurs utilisables avec la proprit border-collapse . . . . . . . . . . . 318
15.10 Valeurs utilisables avec la proprit caption-side . . . . . . . . . . . . . 319
16.1 Valeurs utilisables avec la proprit position . . . . . . . . . . . . . . . . 327
A.1 Rcapitulatif des commandes dEmacs tudies . . . . . . . . . . . . . . . 343
A.2 Rcapitulatif des commandes de vi et de Vim tudies . . . . . . . . . . 344
B.1 Rcapitulatif des commandes tudies dans la premire partie, Intro-
duction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
B.2 Rcapitulatif des commandes tudies dans la deuxime partie, Du
texte et des diteurs de texte . . . . . . . . . . . . . . . . . . . . . . . . . . 347
B.3 Rcapitulatif des commandes tudies dans le chapitre 7, Linterpr-
teur de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
B.4 Rcapitulatif des commandes tudies dans le chapitre 8, Gestion,
organisation et traitement des chiers . . . . . . . . . . . . . . . . . . . . 348
B.5 Rcapitulatif des commandes tudies dans le chapitre 9, Commandes,
processus et redirections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
B.6 Rcapitulatif des commandes tudies dans le chapitre 10, Impression 350
B.7 Rcapitulatif des commandes tudies dans le chapitre 11, Connexion
distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
B.8 Rcapitulatif des commandes tudies dans le chapitre 12, Program-
mation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
C.1 Rcapitulatif des lments HTML tudis . . . . . . . . . . . . . . . . . . 351
C.2 Rcapitulatif des proprits CSS tudies . . . . . . . . . . . . . . . . . . . 352
378
Table des gures
3.1 Gestionnaire dachage utilis lENSTA ParisTech . . . . . . . . . . . 31
3.2 Environnement de bureau utilis lENSTA ParisTech . . . . . . . . . . 35
4.1 Exemple de chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Exemple de chier contenant une image en couleurs . . . . . . . . . . . 45
5.1 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.2 Emacs : continuation de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3 Emacs : achage dans le minibuer dune commande partiellement
saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.4 Emacs : tat de la ligne de mode aprs sauvegarde du chier . . . . . . . 62
6.1 Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.1 Arbre gnalogique des interprteurs de commandes . . . . . . . . . . . 80
7.2 uelques commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.3 uelques commandes (dcomposition temporelle) . . . . . . . . . . . . 85
8.1 Structure dun chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.2 Structure dun chier ayant deux noms . . . . . . . . . . . . . . . . . . . . 102
8.3 Principe du lien symbolique . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.4 Structure du rpertoire rep . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.5 Structure du rpertoire rep contenant rep2 . . . . . . . . . . . . . . . . . 110
8.6 Arborescence imaginaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.7 Exemple dutilisation de ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.8 Structure du systme de chiers sous UNIX . . . . . . . . . . . . . . . . . 117
8.9 Chemin daccs relatif (exemple 1) . . . . . . . . . . . . . . . . . . . . . . . 119
8.10 Chemin daccs relatif (exemple 2) . . . . . . . . . . . . . . . . . . . . . . . 120
8.11 Arborescence utilise pour illustrer la commande find . . . . . . . . . . 139
8.12 Arborescence utilise pour illustrer la commande du . . . . . . . . . . . 143
379
Table des gures
9.1 Ordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
9.2 Entre, sortie et sortie derreur standards . . . . . . . . . . . . . . . . . . . 175
9.3 Redirection de la sortie standard . . . . . . . . . . . . . . . . . . . . . . . . 176
9.4 Redirection de la sortie derreur standard . . . . . . . . . . . . . . . . . . . 177
9.5 Redirection des sortie et sortie derreur standards . . . . . . . . . . . . . 178
9.6 Redirection de lentre standard . . . . . . . . . . . . . . . . . . . . . . . . . 178
9.7 Obtention de lidentiant de processus avec des chiers temporaires . 181
9.8 Obtention de lidentiant de processus avec des tuyaux . . . . . . . . . . 183
9.9 Substitution de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
10.1 Rendu graphique du chier PostScript du listage 10.1 . . . . . . . . . . . 211
10.2 Fichier imprim avec la commande a2ps . . . . . . . . . . . . . . . . . . . 215
10.3 Fichier imprim avec la commande enscript . . . . . . . . . . . . . . . . 218
15.1 Marge, espacement et bordure : exemple de feuille de style . . . . . . . 309
15.2 Marge, espacement et bordure : exemple de page HTML . . . . . . . . . 310
15.3 Marge, espacement et bordure : rendu dans un butineur . . . . . . . . . 311
15.4 Marge, espacement et bordure : schma de principe . . . . . . . . . . . . 312
15.5 Gestion des bordures dun tableau : exemple de code HTML . . . . . . 316
15.6 Gestion des bordures dun tableau (approche simpliste) : exemple de
feuille de style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
15.7 Gestion des bordures dun tableau (approche simpliste) : rendu dans
un butineur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
15.8 Gestion des bordures dun tableau (proprit border-collapse) : exemple
de feuille de style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
15.9 Gestion des bordures dun tableau (proprit border-collapse) : rendu
dans un butineur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
16.1 Barre latrale de navigation (proprit position) : rendu dans un
butineur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
16.2 Barre latrale de navigation (proprit float) : rendu dans un butineur 334
16.3 Deux barres latrale (proprit position) : rendu dans un butineur . . 337
16.4 Deux barre latrales (proprit float) : rendu dans un butineur . . . . 337
380
Table des listages
4.1 Conversion de codage de caractres en Perl . . . . . . . . . . . . . . . . 51
9.1 Exemple de programme en langage AWK . . . . . . . . . . . . . . . . . 193
10.1 Exemple de chier PostScript . . . . . . . . . . . . . . . . . . . . . . . . . 211
13.1 Exemple de chier SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.2 Exemple de chier XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
16.1 Exemple dutilisation des lments dorganisation structurale . . . . 324
16.2 Barre latrale de navigation : exemple de page HTML . . . . . . . . . 331
16.3 Barre latrale de navigation (proprit position) : exemple de feuille
de style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
16.4 Barre latrale de navigation (proprit float) : exemple de feuille de
style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
16.5 Deux barres latrales : exemple de page HTML . . . . . . . . . . . . . 334
16.6 Deux barres latrales (proprit position) : exemple de feuille de
style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
16.7 Deux barres latrales (proprit float) : exemple de feuille de style 339
381
Table des matires
Sommaire 9
Avant-propos 11
I Introduction 15
1 Le stage dinformatique pour lingnieur 17
1.1 Objectifs du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2 uest-ce quun systme dexploitation ? . . . . . . . . . . . . . . . . 18
1.2.1 Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.2 UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.3 Pourquoi UNIX lENSTA ParisTech ? . . . . . . . . . . . 19
1.3 Linformatique ecace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 Reprsentation et mesure de linformation 23
2.1 Reprsentation des nombres . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.1 Systme dcimal . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.2 Notation positionnelle et bases de numration . . . . . . . 24
2.1.3 Systmes de numration utiliss en informatique . . . . . 24
2.1.3.1 Systme binaire . . . . . . . . . . . . . . . . . . . . 25
2.1.3.2 Systme octal . . . . . . . . . . . . . . . . . . . . . . 25
2.1.3.3 Systme hexadcimal . . . . . . . . . . . . . . . . . 25
2.2 Units de mesure de linformation . . . . . . . . . . . . . . . . . . . . 26
2.2.1 Loctet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.2 Reprsentation dun octet en hexadcimal . . . . . . . . . . 26
2.2.3 Units multiples de loctet . . . . . . . . . . . . . . . . . . . . 26
3 Premier contact 29
3.1 La babasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.1 Le clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
383
Table des matires
3.1.2 Le gestionnaire dachage . . . . . . . . . . . . . . . . . . . . 31
3.2 Le compte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Ouverture de session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 Linterface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.1 X Window System . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.2 Les botes outils . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.3 Le gestionnaire de fentres . . . . . . . . . . . . . . . . . . . . 34
3.4.4 Lenvironnement de bureau . . . . . . . . . . . . . . . . . . . 34
3.5 Linterprteur de commandes . . . . . . . . . . . . . . . . . . . . . . . 34
3.6 Changement du mot de passe . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 Verrouillage et n de session . . . . . . . . . . . . . . . . . . . . . . . . 38
3.8 Lenvironnement informatique de lENSTA ParisTech . . . . . . . 39
II Du texte et des diteurs de texte 41
4 Le texte et son codage 43
4.1 Le texte, cest quoi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2 uest-ce quun chier ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3 Codage du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1 Le codage ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.2 Les codages ISO 8859 . . . . . . . . . . . . . . . . . . . . . . . 47
4.3.3 Unicode et le codage UTF-8 . . . . . . . . . . . . . . . . . . . 48
4.4 Codage des chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5 Conversion dun codage vers un autre . . . . . . . . . . . . . . . . . . 51
4.5.1 La commande iconv . . . . . . . . . . . . . . . . . . . . . . . . 51
4.5.2 Dans un logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.6 Les diteurs de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5 Lditeur de texte Emacs 53
5.1 Lancement dEmacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Saisie du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.3 Les commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4 Commandes de dplacement . . . . . . . . . . . . . . . . . . . . . . . . 59
5.5 Commandes de suppression . . . . . . . . . . . . . . . . . . . . . . . . 59
5.6 Excution multiple dune commande . . . . . . . . . . . . . . . . . . 60
5.7 Copier-coller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.8 Couper-coller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.9 Commande dannulation des modications . . . . . . . . . . . . . . 61
5.10 Commandes de gestion de chiers . . . . . . . . . . . . . . . . . . . . 61
5.11 Commandes de recherche et de remplacement . . . . . . . . . . . . 63
5.12 Saisie de caractres ne gurant pas sur le clavier . . . . . . . . . . . 64
5.13 Commande dannulation de la commande en cours de saisie . . . 64
384
Table des matires
5.14 Commandes diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.15 uitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.16 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6 Les diteurs de texte vi et Vim 67
6.1 Lancement de vi et de Vim . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.2 Saisie du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.3 Les commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.4 Commandes de dplacement . . . . . . . . . . . . . . . . . . . . . . . . 71
6.5 Commandes de suppression . . . . . . . . . . . . . . . . . . . . . . . . 71
6.6 Excution multiple dune commande . . . . . . . . . . . . . . . . . . 72
6.7 Copier-coller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.8 Couper-coller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.9 Commande dannulation des modications . . . . . . . . . . . . . . 72
6.10 Commandes de gestion de chiers . . . . . . . . . . . . . . . . . . . . 73
6.11 Commandes de recherche et de remplacement . . . . . . . . . . . . 73
6.12 Saisie de caractres ne gurant pas sur le clavier . . . . . . . . . . . 73
6.13 Commande dannulation de la commande en cours de saisie . . . 74
6.14 Commandes diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.15 uitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.16 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
III Linterprteur de commandes 77
7 Linterprteur de commandes 79
7.1 Historique des interprteurs de commandes . . . . . . . . . . . . . . 80
7.2 Concepts fondamentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.2.1 Lmulateur de terminal . . . . . . . . . . . . . . . . . . . . . . 82
7.2.2 Linvite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.2.3 Pass, prsent et futur . . . . . . . . . . . . . . . . . . . . . . . 84
7.2.4 Notation des combinaisons de touches . . . . . . . . . . . . 86
7.2.5 Sensibilit la casse . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.2.6 dition de la ligne de commande et historique . . . . . . . 86
7.2.7 Forme des exemples dans la suite du document . . . . . . . 87
7.3 La commande ls, la syntaxe des commandes . . . . . . . . . . . . . 88
7.3.1 Les options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.3.2 Les arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.4 Les commandes dachage : cat, more et less . . . . . . . . . . . . 91
7.4.1 La commande cat . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.4.2 La commande more . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.4.3 La commande less . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.5 La commande man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
385
Table des matires
7.6 La commande clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.7 La commande exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8 Gestion, organisation et traitement des chiers 97
8.1 Gestion des chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8.1.1 Copie de chiers : la commande cp . . . . . . . . . . . . . . 97
8.1.2 Renommage de chiers : la commande mv . . . . . . . . . . 98
8.1.3 Suppression de chiers : la commande rm . . . . . . . . . . 99
8.1.4 Cration de liens : la commande ln . . . . . . . . . . . . . . 100
8.2 Le compltement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.3 Organisation des chiers . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.3.1 Cration de rpertoires : la commande mkdir . . . . . . . . 107
8.3.2 Chemin daccs et structure arborescente . . . . . . . . . . 108
8.3.3 Retour sur les commandes de gestion des chiers . . . . . 111
8.3.3.1 La commande cp et les rpertoires . . . . . . . . 111
8.3.3.2 La commande mv et les rpertoires . . . . . . . . 112
8.3.3.3 La commande ln et les rpertoires . . . . . . . . 113
8.3.4 Se dplacer dans un rpertoire : la commande cd . . . . . . 113
8.3.5 Promenade dans le systme de chiers . . . . . . . . . . . . 115
8.3.6 Chemin daccs absolu et chemin daccs relatif . . . . . . 119
8.3.7 Notation simplie du rpertoire personnel . . . . . . . . . 120
8.3.8 Suppression de rpertoires . . . . . . . . . . . . . . . . . . . . 121
8.3.8.1 La commande rmdir . . . . . . . . . . . . . . . . . 121
8.3.8.2 Loption -r de la commande rm . . . . . . . . . . 122
8.3.9 uelques conseils pour organiser vos chiers . . . . . . . . 122
8.4 Les mtacaractres de gnration de noms de chiers . . . . . . . . 122
8.4.1 Le mtacaractre ? . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4.2 Les mtacaractres [ et ] . . . . . . . . . . . . . . . . . . . . . 124
8.4.3 Le mtacaractre
*
. . . . . . . . . . . . . . . . . . . . . . . . . 125
8.4.4 Utilisation avance . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.4.5 Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.5 Les droits daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.5.1 Principe des droits daccs . . . . . . . . . . . . . . . . . . . . 127
8.5.2 Reprsentation numrique des droits daccs . . . . . . . . 129
8.5.3 La commande chmod . . . . . . . . . . . . . . . . . . . . . . . . 131
8.5.4 La commande umask . . . . . . . . . . . . . . . . . . . . . . . . 133
8.6 Les noms des chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.7 Gestion de lespace de stockage, compression et archivage . . . . . 138
8.7.1 Gestion de lespace de stockage . . . . . . . . . . . . . . . . . 138
8.7.1.1 Retrouver des chiers : la commande find . . . 138
8.7.1.2 La commande quota . . . . . . . . . . . . . . . . . 141
8.7.1.3 La commande du . . . . . . . . . . . . . . . . . . . . 142
8.7.1.4 La commande df . . . . . . . . . . . . . . . . . . . . 144
386
Table des matires
8.7.2 Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
8.7.2.1 Les commandes compress et uncompress . . . . . 147
8.7.2.2 Les commandes gzip et gunzip . . . . . . . . . . 147
8.7.2.3 Les commandes bzip2 et bunzip2 . . . . . . . . . 148
8.7.2.4 Les commandes lzma et unlzma . . . . . . . . . . 149
8.7.2.5 Les commandes xz et unxz . . . . . . . . . . . . . 150
8.7.3 Archivage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
8.7.3.1 La commande tar . . . . . . . . . . . . . . . . . . . 151
8.7.3.1.1 Crer une archive . . . . . . . . . . . 151
8.7.3.1.2 Extraire une archive . . . . . . . . . . 152
8.7.3.1.3 Acher le contenu dune archive . 153
8.7.3.1.4 Compression et dcompression dune
archive . . . . . . . . . . . . . . . . . . 153
8.7.4 changes avec dautres systmes dexploitation . . . . . . . 154
8.7.4.1 Les commandes zip et unzip . . . . . . . . . . . . 154
8.7.4.2 La commande unrar . . . . . . . . . . . . . . . . . 155
9 Commandes, processus et redirections 157
9.1 Lhistorique des commandes . . . . . . . . . . . . . . . . . . . . . . . . 157
9.1.1 La commande history . . . . . . . . . . . . . . . . . . . . . . . 157
9.1.2 Au sujet des exemples qui suivent . . . . . . . . . . . . . . . 158
9.1.3 Excuter nouveau une commande dans son intgralit . 158
9.1.4 Utiliser certains mots dune commande prcdente . . . . 159
9.2 Les chemins de recherche des commandes . . . . . . . . . . . . . . . 161
9.2.1 Commandes externes et commandes internes . . . . . . . . 161
9.2.2 La variable denvironnement PATH . . . . . . . . . . . . . . . 162
9.2.3 Les commandes type et which . . . . . . . . . . . . . . . . . . 162
9.2.4 Mise en garde . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9.3 Gestion des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.3.1 Lordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . 164
9.3.2 Lancement dun processus en arrire-plan . . . . . . . . . . 166
9.3.3 La commande ps . . . . . . . . . . . . . . . . . . . . . . . . . . 167
9.3.4 La commande top . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.3.5 La commande kill . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.3.6 Le statut de sortie dun processus . . . . . . . . . . . . . . . . 172
9.3.6.1 Les variables spciales ? et status . . . . . . . . . 172
9.3.6.2 Succession de commandes . . . . . . . . . . . . . . 173
9.3.6.3 Les commandes true et false . . . . . . . . . . . 174
9.4 Redirections, tuyaux et substitution de commande . . . . . . . . . 174
9.4.1 Sous UNIX, tout est chier . . . . . . . . . . . . . . . . . . . 174
9.4.2 Redirection de la sortie standard . . . . . . . . . . . . . . . . 175
9.4.3 Redirection de la sortie derreur standard . . . . . . . . . . 177
9.4.4 Redirection de lentre standard . . . . . . . . . . . . . . . . 178
387
Table des matires
9.4.5 Les tuyaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
9.4.6 Substitution de commande . . . . . . . . . . . . . . . . . . . . 183
9.5 uelques ltres usuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.5.1 Les commandes more et less . . . . . . . . . . . . . . . . . . . 184
9.5.2 La commande grep . . . . . . . . . . . . . . . . . . . . . . . . . 185
9.5.2.1 Les expressions rationnelles . . . . . . . . . . . . . 186
9.5.2.2 Utilisation dune expression rationnelle avec la
commande grep . . . . . . . . . . . . . . . . . . . . 188
9.5.2.3 uelques options de la commande grep . . . . . 189
9.5.3 La commande awk . . . . . . . . . . . . . . . . . . . . . . . . . . 189
9.5.4 La commande sed . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9.5.5 La commande sort . . . . . . . . . . . . . . . . . . . . . . . . . 196
9.5.6 La commande wc . . . . . . . . . . . . . . . . . . . . . . . . . . 199
9.6 Gestion des longs processus . . . . . . . . . . . . . . . . . . . . . . . . 200
9.6.1 La commande nohup . . . . . . . . . . . . . . . . . . . . . . . . 200
9.6.2 Les commandes nice et renice . . . . . . . . . . . . . . . . . 201
9.6.3 La commande screen . . . . . . . . . . . . . . . . . . . . . . . 203
9.6.4 La commande tmux . . . . . . . . . . . . . . . . . . . . . . . . . 205
10 Impression 207
10.1 Nommage des imprimantes . . . . . . . . . . . . . . . . . . . . . . . . 207
10.2 Avant dimprimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
10.2.1 La commande lpq . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.2.2 La commande lprm . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.3 Le format PostScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.4 Impression de chiers PostScript . . . . . . . . . . . . . . . . . . . . . 212
10.4.1 La commande lpr . . . . . . . . . . . . . . . . . . . . . . . . . . 212
10.4.2 Les utilitaires PSUtils . . . . . . . . . . . . . . . . . . . . . . . 213
10.4.2.1 La commande psselect . . . . . . . . . . . . . . . 213
10.4.2.2 La commande psnup . . . . . . . . . . . . . . . . . 214
10.5 Impression de chiers texte . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.5.1 La commande a2ps . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.5.2 La commande enscript . . . . . . . . . . . . . . . . . . . . . . 217
10.5.3 Impression de chiers texte cods en UTF-8 . . . . . . . . 219
10.6 Impression de chiers PDF . . . . . . . . . . . . . . . . . . . . . . . . . 219
11 Connexion distance 221
11.1 Le chirement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
11.1.1 Chirement symtrique . . . . . . . . . . . . . . . . . . . . . 223
11.1.2 Chirement asymtrique . . . . . . . . . . . . . . . . . . . . . 223
11.1.3 Chirement hybride . . . . . . . . . . . . . . . . . . . . . . . . 224
11.2 La commande ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
11.2.1 Connexion simple . . . . . . . . . . . . . . . . . . . . . . . . . 225
388
Table des matires
11.2.2 Connexion avec achage graphique dport . . . . . . . . 227
11.2.3 Connexion avec un identiant dirent . . . . . . . . . . . 227
11.2.4 Connexion depuis lextrieur de lENSTA ParisTech . . . 228
11.3 La commande scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.4 Savoir qui est connect sur un ordinateur : les commandes who et w 229
12 Programmation 231
12.1 Pourquoi programmer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
12.2 Comment programmer ? . . . . . . . . . . . . . . . . . . . . . . . . . . 232
12.2.1 Les scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
12.2.2 Excution dun script . . . . . . . . . . . . . . . . . . . . . . . 232
12.3 Continuation de ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
12.4 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
12.5 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
12.6 Le calcul entier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12.7 Les instructions de contrle . . . . . . . . . . . . . . . . . . . . . . . . 238
12.7.1 Les tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
12.7.1.1 La commande test . . . . . . . . . . . . . . . . . . 238
12.7.1.2 Le test if . . . . . . . . . . . . . . . . . . . . . . . . . 240
12.7.1.3 Le test case . . . . . . . . . . . . . . . . . . . . . . . 241
12.7.2 Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
12.7.2.1 La boucle for . . . . . . . . . . . . . . . . . . . . . . 243
12.7.2.2 Les boucles while et until . . . . . . . . . . . . . 244
12.8 Les arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.9 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
12.10 Statut de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
12.11 uelques conseils gnraux sur la programmation . . . . . . . . . . 248
IV Cration dun site Web 251
13 Formats de documents et historique de la toile 253
13.1 Des formats de documents . . . . . . . . . . . . . . . . . . . . . . . . . 253
13.1.1 Formats ouverts, formats ferms . . . . . . . . . . . . . . . . 254
13.1.2 Un exemple de format ouvert : SGML . . . . . . . . . . . . 255
13.1.3 Lvolution de SGML : XML . . . . . . . . . . . . . . . . . . 257
13.2 Historique de la toile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
14 HTML, XHTML 263
14.1 Structure gnrale dune page XHTML . . . . . . . . . . . . . . . . . 264
14.1.1 Len-tte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
14.1.2 Le corps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
14.2 Nommage et emplacement des chiers . . . . . . . . . . . . . . . . . 266
389
Table des matires
14.3 Au sujet des exemples qui suivent . . . . . . . . . . . . . . . . . . . . . 267
14.4 Les lments usuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
14.4.1 Les lments de titres h1, h2, h3, h4, h5 et h6 . . . . . . . . . 267
14.4.2 Llment de paragraphe p . . . . . . . . . . . . . . . . . . . . 268
14.4.3 Llment de let hr . . . . . . . . . . . . . . . . . . . . . . . . 270
14.4.4 Llment de retour la ligne br . . . . . . . . . . . . . . . . 270
14.4.5 Les lments textuels abbr, cite, code, dfn, em, kbd, samp,
strong et var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
14.4.6 Les lments infrieur sub et suprieur sup . . . . . . . . . 272
14.4.7 Les entits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
14.5 Llment dhyperlien a . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
14.6 Llment dinsertion dimage img . . . . . . . . . . . . . . . . . . . . 274
14.7 Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
14.8 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
14.9 Lattribut de langue lang . . . . . . . . . . . . . . . . . . . . . . . . . . 280
14.10 MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
15 Feuilles de style CSS 283
15.1 Faire rfrence une feuille de style dans une page HTML . . . . 284
15.2 Au sujet des exemples qui suivent . . . . . . . . . . . . . . . . . . . . . 285
15.3 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
15.3.1 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . 285
15.3.2 Les rgles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
15.3.3 Les slecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
15.3.3.1 Les slecteurs de type . . . . . . . . . . . . . . . . . 287
15.3.3.2 Le regroupement . . . . . . . . . . . . . . . . . . . . 287
15.3.3.3 Les slecteurs descendants . . . . . . . . . . . . . . 289
15.3.3.4 Les slecteurs denfant . . . . . . . . . . . . . . . . 289
15.3.3.5 Les slecteurs dattribut . . . . . . . . . . . . . . . 290
15.3.3.6 Les slecteurs de classe . . . . . . . . . . . . . . . . 291
15.3.3.7 Les slecteurs didentiant . . . . . . . . . . . . . 293
15.3.3.8 Les pseudo-classes . . . . . . . . . . . . . . . . . . . 294
15.3.3.8.1 Les pseudo-classes de lien . . . . . . 294
15.3.3.8.2 Les pseudo-classes daction de luti-
lisateur . . . . . . . . . . . . . . . . . . 295
15.3.3.8.3 La pseudo-classe de langue . . . . . 296
15.3.4 Les dclarations et les proprits . . . . . . . . . . . . . . . . 296
15.4 Lhritage et la cascade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
15.4.1 Lhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
15.4.2 La cascade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
15.5 Les couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
15.5.1 Nommage et reprsentation des couleurs . . . . . . . . . . 300
15.5.2 La proprit de couleur color . . . . . . . . . . . . . . . . . . 301
390
Table des matires
15.5.3 La proprit de couleur de fond background-color . . . . 301
15.6 Les units de mesure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
15.7 Le texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
15.7.1 La proprit de police font-family . . . . . . . . . . . . . . 303
15.7.2 La proprit dinclinaison font-style . . . . . . . . . . . . . 304
15.7.3 La proprit de graisse font-weight . . . . . . . . . . . . . . 304
15.7.4 La proprit de corps font-size . . . . . . . . . . . . . . . . 305
15.7.5 La proprit dalina text-indent . . . . . . . . . . . . . . . 306
15.7.6 La proprit dalignement text-align . . . . . . . . . . . . 306
15.7.7 La proprit de dcoration text-decoration . . . . . . . . 307
15.8 Marge, espacement et bordure . . . . . . . . . . . . . . . . . . . . . . . 308
15.8.1 La marge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
15.8.2 Lespacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
15.8.3 La bordure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
15.9 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
15.9.1 Centrage dun tableau . . . . . . . . . . . . . . . . . . . . . . . 315
15.9.2 Gestion des bordures . . . . . . . . . . . . . . . . . . . . . . . . 316
15.9.3 La proprit de positionnement de lgende caption-side 318
16 Organisation structurale dun site Web 321
16.1 Llment span . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
16.2 Les lments dorganisation structurale . . . . . . . . . . . . . . . . . 322
16.2.1 Llment main . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
16.2.2 Llment article . . . . . . . . . . . . . . . . . . . . . . . . . 323
16.2.3 Llment section . . . . . . . . . . . . . . . . . . . . . . . . . 323
16.2.4 Llment nav . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
16.2.5 Llment aside . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
16.2.6 Llment header . . . . . . . . . . . . . . . . . . . . . . . . . . 323
16.2.7 Llment footer . . . . . . . . . . . . . . . . . . . . . . . . . . 324
16.2.8 Llment address . . . . . . . . . . . . . . . . . . . . . . . . . 324
16.2.9 Exemple complet dutilisation de ces lments . . . . . . . 324
16.3 Llment div . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
16.4 Les deux mthodes dagencement des blocs . . . . . . . . . . . . . . 327
16.4.1 Agencement des blocs avec la proprit position . . . . . 327
16.4.2 Agencement des blocs avec la proprit float . . . . . . . 328
16.4.3 uelle mthode utiliser ? . . . . . . . . . . . . . . . . . . . . . 329
16.5 Dimensionnement des blocs . . . . . . . . . . . . . . . . . . . . . . . . 330
16.6 Exemple avec une barre latrale de navigation . . . . . . . . . . . . . 330
16.6.1 Agencement avec la proprit position . . . . . . . . . . . . 330
16.6.2 Agencement avec la proprit float . . . . . . . . . . . . . . 333
16.7 Exemple avec deux barres latrales . . . . . . . . . . . . . . . . . . . . 334
16.7.1 Agencement avec la proprit position . . . . . . . . . . . . 336
16.7.2 Agencement avec la proprit float . . . . . . . . . . . . . . 336
391
Table des matires
Annexes 341
A Rcapitulatif des commandes des diteurs de texte 343
B Rcapitulatif des commandes 347
C Rcapitulatif des lments HTML et des proprits CSS 351
Bibliographie 355
Du texte et des diteurs de texte . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Linterprteur de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Cration dun site Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Typographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Index 363
Index Du texte et des diteurs de texte 365
Index Linterprteur de commandes 367
Index Cration dun site Web 373
Liste des tableaux 377
Table des gures 379
Table des listages 381
Table des matires 383
392
Le prsent ouvrage a t mis en pages par son au-
teur au moyen du systme de prparation de documents
L
A
T
E
X cr par Leslie Lamport et entretenu par lquipe
du projet L
A
T
E
X3 reposant sur le systme de compo-
sition T
E
X cr par Donald Knuth. Sa ralisation a
t assure par le moteur pdfT
E
X cr par Hn Th

Thnh , la classe memoir cre par Peter Wilson et


entretenue par Lars Madsen ainsi quune trentaine
dextensions. Lensemble a t fourni par la distribution
T
E
X Live.
Son texte a t compos en URW Garamond corps
10, la couverture et les titres de chapitres en URW Nimbus
Sans et les exemples en Bera Mono.
Ses chiers sources ont t saisis au moyen de ldi-
teur de texte Vim et leur historique a t con aux bons
soins du logiciel de gestion de versions Subversion (cette
dition correspond au numro de rvision 281 du dpt).
Le cycle de production du chier PDF ayant permis
son impression a t entirement ralis sur le systme
dexploitation NetBSD.
cole nationale suprieure
de techniques avances
828, boulevard des Marchaux - 91762 PALAISEAU CEDEX - France
www.ensta-paristech.fr

Vous aimerez peut-être aussi