Académique Documents
Professionnel Documents
Culture Documents
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
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/
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
, 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 :
< (lower than) pour reprsenter < ;
> (greater than) pour reprsenter > ;
& (ampersand) pour reprsenter &.
<p>
En HTML, les balises sont dlimites par <code><</code>
et <code>></code>.
</p>
<p>
Pour reprsenter ces caractres, on utilise les entits
<code>&lt;</code> et <code>&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>∑</mo>
<mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> </mrow>
<mrow> <mo>+</mo> <mn>∞</mn> </mrow>
</munderover>
<mfrac> <mn>1</mn> <msup> <mi>n</mi> <mn>2</mn> </msup> </mfrac>
<mo>=</mo>
<mfrac> <msup> <mn>π</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
& . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
< . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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