UTILISATION DES SYST
EMES
INFORMATIQUES
Introdution
A L'Environnement De D
eveloppement Sous Unix
{ Cinquieme edition {
J.P.BRAQUELAIRE
(ave R. STRANDH)
Liene
Ma^trise
d'Informatique
l
UTILISATION DES SYST
EMES
INFORMATIQUES
Introdution
A L'Environnement De D
eveloppement Sous Unix
{ Cinquieme edition {
J.P.BRAQUELAIRE
(ave R. STRANDH)
Liene
Ma^trise
d'Informatique
l
Avant propos
Ce texte est le support d'un ours d'initiationa l'environnement de programmation du systeme
Unix. Les premiers hapitres ne neessitent auun pre-requis. Les hapitres traitant de la program-
mationen shellneessitent uneonnaissanedes oneptsde basede laprogrammation.L'aent est
missur les logiiels du domaine publiet du projet GNU qui onstituent aujourd'huila part laplus
important de l'environnementde l'utilisateur etdudeveloppeursousUnix.
Table des matieres
1 Presentation de l'environnement de travailsous Unix 1
1.1 Couhe materiel. . . 1
1.1.1 Conguration . . . 1
1.1.2 Evenements etodage desarateres . . . 3
1.2 Couhe systeme . . . 5
1.2.1 Le reseau . . . 5
1.2.2 Le systeme d'exploitation . . . 5
1.2.3 L'interfaeX11 . . . 8
1.3 La ouhe appliations . . . 9
1.3.1 L'environnement standard . . . 9
1.3.2 L'environnement X . . . 9
1.3.3 L'environnement GNU . . . 11
1.3.4 Le traitement de texteT E X/L A T E X . . . 13
1.4 Compte utilisateuretprotetion . . . 14
2 Introdution au systeme UNIX 15 2.1 R^oledu noyau . . . 15
2.2 Lesentrees-sorties . . . 15
2.2.1 Flots d'entrees-sorties . . . 15
2.2.2 Flots d'entrees-sorties standard . . . 16
2.2.3 Meanismes de rediretion. . . 16
2.2.4 Fihiers speiaux . . . 17
2.3 Le systemede hiers . . . 17
2.3.1 Desription del'arboresenestandard . . . 18
2.3.2 Chemin . . . 19
2.3.3 Protetions etaes . . . 20
2.3.4 Meanismes de remplaement de hemins . . . 20
2.3.5 Prinipalesommandesrelativesaux hiers. . . 20
2.4 Lesproessus . . . 21
2.4.1 Creation d'unproessus . . . 21
2.4.2 Etat d'unproessus . . . 21
2.4.3 Environnement d'unproessus . . . 22
2.4.4 Contr^oledesations d'unproessus . . . 22
2.4.6 Prinipales ommandesrelatives auxproessus . . . 23
2.4.7 Meanismes de (( boot )) etde ((login )) . . . 24
3 Introdutiona Emas 27 3.1 Denitions etoneptsde base . . . 27
3.1.1 Jeu de arateres . . . 27
3.1.2 Buer, fen^etreseterans . . . 27
3.1.3 Cle . . . 28
3.1.4 Commande . . . 28
3.2 Interationave GNU Emas . . . 29
3.2.1 Invoationd'une ommande . . . 29
3.2.2 Parametres de ommandes . . . 29
3.2.3 Communiationa travers lemini-buer . . . 29
3.2.4 Communiationpleinepage . . . 30
3.3 Contr^ole de l'environnement . . . 30
3.3.1 Modesmajeurs etmodesmineurs. . . 30
3.3.2 Valeuret modiationdesvariables . . . 31
3.3.3 Denitionde nouvelles fontions . . . 31
3.3.4 Les hiersd'initialisation . . . 32
4 Edition, ompilation et mise au point de programmes C 37 4.1 Dusourea l'exeutable . . . 37
4.2 La ommande g. . . 37
4.3 La ommande make . . . 38
4.4 Edition,ompilationetmise aupointde programmes Csous GNU Emas . . . 39
4.4.1 Edition de programmes C . . . 39
4.4.2 Lanement d'uneompilation . . . 41
4.4.3 Reherhe d'erreurs . . . 41
5 Programmation en shell 43 5.1 Fontionnement general . . . 43
5.2 Strutureettraitement d'uneommande. . . 43
5.2.1 Deompositiond'uneommande . . . 43
5.2.2 Commande simple . . . 44
5.2.3 Pipeline . . . 47
5.2.4 Liste de pipelines . . . 47
5.2.5 Parenthesage . . . 48
5.3 Meanismes de substitution . . . 48
5.3.1 La phase de substitution. . . 48
5.3.2 Remplaement de ommandes. . . 48
5.3.3 Remplaement de variablesetparametres . . . 48
5.3.4 Remplaement de hemins . . . 50
5.3.5 Quotation . . . 50
5.5 Commandes UNIXpourlaprogrammationen shell . . . 52
5.5.1 La ommande test . . . 52
5.5.2 La ommande expr . . . 53
5.5.3 La ommande tr . . . 53
5.5.4 La ommande sed . . . 54
5.6 Fontions . . . 56
5.7 Struturesde ontr^ole . . . 56
5.7.1 Les tests. . . 57
5.7.2 Iterations . . . 58
5.7.3 Ehappements . . . 58
5.8 Commandes internes . . . 59
5.9 Exemples . . . 61
5.9.1 psg . . . 61
5.9.2 Xdisp . . . 61
5.9.3 last . . . 62
5.9.4 makemake . . . 63
A Exeries et problemes d'examen 69
Chapitre 1
Presentation de l'environnement de
travail sous Unix
Unenvironnementde travailinformatiqueseomposede dierentsniveauxs'appuyantlesunssur
les autres:
{ laouhemateriel(hardware) omposeedesordinateurs,desperipheriquesetdesreseauxd'in-
teronnexion;
{ laouhe systeme d'exploitation (operating system) realisant lest^ahesde base (gestion des
hiers,des ommuniations...);
{ laouheappliationquiestunensembledeprogrammespermettantd'eetuerdestraitements
deplushautniveau (edition ettraitement detexte, programmation...).
Lesdeux dernieres ouhes sont dulogiiel (software).
L'environnementdetravail dudepartementd'informatiquedel'universiteBordeauxIestompose
destationsetterminauxXtournantsoussystemeUnixetreliesadesserveursaumoyend'unreseau
Ethernet.
1.1 Couhe materiel
1.1.1 Conguration
Lesmahinesde laliene d'informatiquefontpartie d'unreseau loalde mahines, appele emi, 1
sur lequel sont regroupees les dierentes mahines d'enseignement de l'UFR de mathematiques et
informatique.
Le reseau onsidere iiest un reseau Ethernet. La vitesse optimale de e type de reseau est de
100 Megabits par seonde. Diverses unites sont interonnetees a travers e reseau: des serveurs de
disque,desstationsdetravailetterminauxX,etdesimprimantes.Cereseauest,ommedenombreux
autresreseaux loaux de l'universite Bordeaux I, onnete au reseau REAUMUR de l'universite. Ce
dernierassure laliaisonave lemonde exterieur(voirgure 1.1).
Les postes de travail sont des postes de travail graphiques. Un poste de travail graphique est
generalement ompose:
{ d'un lavier omportant des touhes de aratere (lettres, hires, symboles), de touhes de
fontion, et de modiateurs qui sont des touhes s'utilisant simultanement ave une autre
touhe:CONTROL,SHIFT,METAou ALT...
{ d'uneran graphiquedont la taille,la resolution, 'est-a-dire le nombre de pixels,et lenombre
deouleursaÆhablespeutvarier(parexemple17 poues,1024768 pixels,256 ouleurs);
Internet
stations
DESS stations
AGS AGS
AGS
AGS
AGS
AGS
REAUMUR
Matmea
IUP stations stations
Liene ENSERB
LaBRI
CeReMaB
(viaAQUARELetRENATER) ethernet
ethernet
Ma^trise FDDI
ethernet
emi
Fig.1.1 {Cettegurederit l'organisation generale du reseau universitaireREAUMUR.Lesreseaux
loauxmentionnes sontdiversreseauxenrelationavelelaboratoireetledepartementd'informatique.
De nombreux autres reseaux loaux sont onnetes a REAUMUR.
{ d'unesouris,omportant generalement trois boutons (LEFT, MIDDLE,RIGHT).
Chaque poste de travail est onnete par le reseau loal a unemahine entrale appelee serveur
et gerant des unitesde disque.Toutes les donneesdesutilisateurssont regroupeessur les disquesdes
dierents serveurs. L'aes a des imprimantes et leteurs de disquette est egalement possible par le
reseau.
Certains postesde travail sont desstations de travail,'est-a-dire des ordinateurs,pouvant faire
exeuter des programmes. D'autres sont des terminaux graphiques attahes a une station ou a un
serveur. Ces terminaux sont apables de gerer loalement des fen^etres et des operations graphiques
simples. Le systeme de gestion de fen^etres qu'ils implementent est le systeme de fen^etrage X, ou
X11, quiest lesysteme de fen^etrage standardassoiea Unix.Detelsterminaux sont desordinateurs
restreints, speialisesdans lagestiondu systeme X.Ilssont appelesdesterminaux X,ou TX.
1.1.2
Evenements et odage des arateres
Un evenementsest le resultat d'une ation sur lelavier: frappe d'une lettre, d'uneehe... ou
surlasouris:deplaement, enfonement d'un bouton. Certainsevenements sont geres loalement sur
lepostedetravail,ommeparexempleundeplaement de lasourisprovoquanteluidu urseursur
l'eran.D'autressontenvoyes ausystemed'exploitation,qui s'exeute surunordinateurdistant dans
leasd'un TX.
Les arateres sont des evenements partiuliersodes par des valeurs numeriques appelees odes
ASCII (Amerian Standard Code for Information Interhange). Il s'agit de la norme de odage de
arateres lapluslargement utilisee.
Un premier ensemble de odesde baseutilise les entiers omprisentre 0 et127. Ilest liste sur la
table 1.1. La plupart de es arateres sont des arateres aÆhables: lettres, hires, pontuation,
espaes, parenthesages, et. D'autresarateres, eux dont le ode estinferieur a 32 et eluide ode
127,sontappelesdesarateres de ontr^ole.
Chaque aratere de ontr^ole porte lenom d'un aratere aÆhable qui luiestassoie.
A haque
arateredeontr^olegurantsurlapremiereolonnede latable1.1orrespondlearatereaÆhable
gurantsurlam^emelignedanslatroisiemeolonne.Parexemple,learateredeode1estlearatere
CONTROL-A,note C-aou^A. Le aratere DELde ode 127 est parfoisnote C-?.
Chaquearateredeontr^oleest pardefautassoieaun traitement debase, ommeparexemple:
{ C-m(ouReturn),C-j(ou LineFeed):validationd'uneligne entree au lavier;
{ C-[(ouESC):aratere d'ehappement (Esape);
{ C-i(ouTAB):insertiond'une tabulation;
{ C-h(ouBakSpae):deplaement du urseurvers lagauhe;
{ DEL:suppressionduaraterea gauhe du urseur;
{ C-setC-q: ontr^ole de ux;
{ C-l:saut de pagesuruneimprimante.
Le plusgrand ode de la table 1.1 est l'entier127. Il s'erit 1111111 en base 2.Les odes ASCII
sont par onsequent odables sur 7 hires binaires, enore appeles bits. L'unite de memoire sur
une mahine etant traditionnellement l'otet, a savoir un mot de taille 8 bits, il est possible de
oder128 odes supplementaires sur un otet.Ces odessont les valeursde 128 a 255. Onappellera
meta-arateres )esarateres quietendent l'ensembledesodesASCII.Chaunportelenomdu
aratereASCIIstandardobtenuen retranhant128asonode.Parexemplelearateredeode128
estMeta-Control-, note M-C-(ouC-M-), eteluide ode 188 estM-C-<.
Les meta-arateres sont notamment utilisespouroderles arateres desalphabets Europeens:
arateres aentues, ,$,,n,~
A,>, et. Surlesmiro-ordinateurs, esodespeuventegalement ^etre
utilisespour oder des arateres graphiques. Le odage d'autres ensembles de arateres, arabe ou
Organisation de la table des odes ASCII
Car. Code Car. Code Car. Code Car. Code
^ 0 32 64 ` 96
^A 1 ! 33 A 65 a 97
^B 2 " 34 B 66 b 98
^C 3 # 35 C 67 99
^D 4 $ 36 D 68 d 100
^E 5 % 37 E 69 e 101
^F 6 & 38 F 70 f 102
^G 7 ' 39 G 71 g 103
^H 8 ( 40 H 72 h 104
^I 9 ) 41 I 73 i 105
^J 10 * 42 J 74 j 106
^K 11 + 43 K 75 k 107
^L 12 , 44 L 76 l 108
^M 13 - 45 M 77 m 109
^N 14 . 46 N 78 n 110
^O 15 / 47 O 79 o 111
^P 16 0 48 P 80 p 112
^Q 17 1 49 Q 81 q 113
^R 18 2 50 R 82 r 114
^S 19 3 51 S 83 s 115
^T 20 4 52 T 84 t 116
^U 21 5 53 U 85 u 117
^V 22 6 54 V 86 v 118
^W 23 7 55 W 87 w 119
^X 24 8 56 X 88 x 120
^Y 25 9 57 Y 89 y 121
^Z 26 : 58 Z 90 z 122
^[ 27 ; 59 [ 91 { 123
^\ 28 < 60 \ 92 | 124
^℄ 29 = 61 ℄ 93 } 125
^^ 30 > 62 ^ 94 ~ 126
^_ 31 ? 63 _ 95 DEL 127
Tab. 1.1{ Tabledes odes ASCII
1.2 Couhe systeme
1.2.1 Le reseau
Plusieurs mahines onnetees a travers un reseau informatique doivent, pour se omprendre,
respeterdiversesonventionsdanslafaon d'ehanger desmessages.Un telensemblede onventions
estappeleunprotoole de ommuniation.Le reseau onsidereii,ommelaplupartdesreseaux
de mahines Unix,utilise le protoole Tp/Ip . Cereseau est a l'originedu reseau mondialInternet
et a labasede sononsiderablesues.
Parmiles appliationsles plusinteressantes implementees, itons:
{ laonnexion adistane, viale protoole Telnet etlesommandes telnetetrlogin;
{ letransfertde hiersvia leprotooleFtp etlaommande de m^eme nom;
{ lepartagede hierdusysteme dehiersrepartiNfsdistribueparSun Mirosystems Inorpo-
rated;
{ leourriereletronique(protoole Smtp).
{ leWeb (WWW)
Chaquemahineonnetee aunreseauloal(serveur,stationdetravail,terminalX,imprimante...)
possede un nom qui permet de l'identier de maniere unique sur e reseau. Le reseau loal possede
lui-m^eme un nomquipermetde l'identierparmiles autres reseaux reseaux loaux d'unreseau plus
grandquilesrelie.Ilexiste ainsiunehierarhiea plusieursniveau permettant d'identierde maniere
uniquehaquemahinesur l'ensemble dureseauInternet.
Par exemple, le terminal X de nom powellest unestation du reseau loal emi, lui-m^eme inlus
dans le reseau u-bordeaux reliant dierents sites universitaires bordelais. Ce reseau fait partie du
reseau national fr.Le nomomplet duterminal X powells'erit:
powell.emi.u-bordeaux.fr
Cependant, a l'interieur du reseau emi le seul nom de la mahine, 'est-a-dire powell, est suÆsant
pourl'identier.
1.2.2 Le systeme d'exploitation
Un systeme d'exploitationestun programme omplexerealisant les fontionnalitesde baseindis-
pensablesatouslesutilisateurs.Ilexisteplusieurssystemesd'exploitation:Unix,VMS,VM,et.Sur
les miro-ordinateurstournent egalement des systemes d'exploitation plussimples omme MS/DOS,
ouMaOS. L'environnement onsidere iiestle systeme Unix.
1.2.2.1 Le systeme UNIX
Le projet Unix a ete initialise par Ken Thompson, au laboratoire Bell de AT&T aux USA, a la
suiteduretraitdeBell Labsdu projetMultis 2
.La dateoÆielledudemarrage d'Unixestn1969.
Le25eanniversairedusystemead'ailleurseteelebre durantlequatriemetrimestre1994.Ils'agissait
audepartd'unprojetdereherhe,developpesurunPDP-7,parKenThompsonetDennisRithie.Le
langageCaetedeveloppe apartirde1971 parDennisRithieetBrianKernighan,etUnixreritenC
en 1973.La premiereversionoÆielle,UnixV7, datede 1978. Elleaengendredeux grandesfamilles:
{ BSD:versionrealisee parl'universite ameriainede Berkeley;
{ System V:version realisee parBellLabs.
2.Leprojet Multis etait un projet ambitieux derealisation de systeme d'exploitation qui a beauoupontribuea faire
Atuellement sont menees dierentestentatives de normalisation,dont lanormePosix qui sesitue a
l'intersetionde esdeux familles.
Voiiquelques arateristiques du systeme Unix:
{ Systeme temps partage:exeutiononurrente de proessus,ordonnanement.
{ Systememulti-utilisateurs:omptesutilisateurs,onnexionoulogin,identiationdesressoures,
environnementpersonnalise.
{ Partage des ressoures:arboreseneglobale de hiers,meanismes deprotetions.
{ Gestiondeommuniations:entreproessus,entreutilisateurs(write,talk,mail,news,WWW).
{ Homogeneite, simpliite,portabilite, extensibilite.
1.2.2.2 Organisation generale du systeme UNIX
Le shemadelagure1.2esttraditionnellementutilisepourrepresenterl'organisationdusysteme
Unix.La partieentrale, lenoyau, onstituelesysteme proprementdit. Ila en harge:
{ lagestiondusystemedehiers,desproessus,delamemoire,desommuniationsetdesentrees
sorties;
{ letraitement d'evenements exterieursprovenant des peripheriques, lesinterruptions.
Un ensemble de ommandes de base est fourni ave le systeme. Il est onsiderablement etendu au
moyen de tres nombreux logiiels libreset de logiiels du domaine publi.Ces logiiels, souvent tres
puissantsettresbiendoumentesonstituent deplusenplussousUnixlabasede l'environnementde
travail del'informatiien.Lesnoms gurantautourdu noyausurlagure1.2sontdesommandes:
interpretes de ommandes, ompilateurs, editeurs de texte, gestion des onnexions, ommandes du
systeme,programmes utilisateurs,et.
Le systeme de hiers estorganise de faon arboresenteen repertoires ethiers.Deplus, toute
ressourephysique(imprimantes, disques,postesde travail...) est assoiee a unpseudo-hierappele
hier speial. Gr^ae a ette organisation, les entrees-sorties sont homogenes. Leurmise en oeuvre
est toujours la m^eme, quel que soit la nature reelle du peripherique. On parle pour ela d'entrees-
sorties generalisees. Chaque utilisateur possede une arboresene personnelle qui est une partie de
l'arboresenegenerale.Larainedeettearboreseneestsonrepertoired'aueilhome diretory.
rm cc gcc
a.out
sh bash
emacs gdb
cat login
noyau
Fig. 1.2{ Organisation du systeme UNIX
1.2.2.3 Les interpretes de ommandes
Un interprete de ommandes est un programme iterant indeniment la leture d'une ligne de
ertainsas l'interpretede ommandespeutrealiserluim^eme esations,enutilisanteventuellement
desservies dunoyau Unix.Ils'agitdeommandes internesal'interprete.Danslaplupartdesas,
es ations sont realisees par des ommandes. De maniere generale, l'interprete de ommandes sert
d'interfaeentrel'utilisateur etlesystemed'exploitation.
SousUnix,uninterpretedeommandesestuneommandebanalisee.Ilenexisteplusieurs,ertains
livres en standard ave le systeme, et d'autres disponibles sur le reseau internet sous la forme de
logiielslibresou domaine publi.Tousles interpretes de ommandes Unixsont bases surles m^emes
prinipauxgeneraux.Ilsappartiennentaunem^emefamilleet sontdesignessousletermegeneriquede
shells. La version debase ommuneatous les systemes Unixest sh.Ilenexisteplusieursextensions,
dontl'interprete bashorant uneinterfae utilisateurtres agreable et puissante.
Le fontionnement general d'unshell estlesuivant:
1) Letured'uneligne de ommande:
a) AÆhage d'un message appele prompt indiquant que l'interprete est pr^et a lire une ligne
de ommande. Pardefaut e message estforme du aratere $suivid'uneespae.
b) Saisie etedition de laligne.
) Validation dela ligne.
2) Analyseettraitement de lalignelue:
a) Deoupage en unitessyntaxiques.
b) Remplaement de meta-arateres.
3) Exeution dela (oudes)ommande(s) orrespondante(s).
a) Traitement desrediretions d'entrees-sorties
b) Traitement de laommande dans leas d'une ommande interne, ou reherheset lane-
ment desommandes afaireexeuterdansl'autre as.
1.2.2.4 Les ommandes
Lesommandesstandarddusystemepeuvent varierd'uneversiond'Unixauneautre.Cependant
les ommandes les plus utilisees se retrouvent sur toutes les versions. L'ensemble des ommandes
disponiblessur lereseau esttres vaste. Cesommandessont generalement fourniesave lesouredu
programme.Cela permet d'etendre onsiderablement les possibilitesd'Unix.Ces extensions peuvent
varier fortement d'unsitea un autre.Cependant, lorsqu'uneommandefait defaut surun site, ilest
toujourspossibleetsouvent relativement faile del'y installer.
Pourlaneruneommande,ilsuÆtdetapersonnom,etequ'ils'agissed'uneommandestandard
du systeme, d'une extension, voire m^eme sous ertaines onditions d'une ommande developpee par
l'utilisateur lui-m^eme (voir l'utilisation de la variable PATH, page 48. Les eventuels arguments sont
tapes diretement a lasuitede laommande.
Chaque ommandelanee donnenaissaneaun proessus, quiest uneourrene de ette om-
mande en mahine. Il peut y avoir a un moment donne plusieurs proessus dierents provenant de
l'exeutionde lam^eme ommande. Voiiunexemplede quelques exeutions de ommandes.
$
$ whoami
modele
$
$ pwd
/users/modele
$
$ date
Wed Sep 13 13:50:28 MET DST 1995
$
Otober 1995
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
$
La ommande standardpsdonnelalistedesproessusenours d'exeution. L'interpretedeom-
mandesetant uneommandebanalisee,sonexeution s'eetuesouslaformed'unproessus,omme
pourn'importequelleautreommande.Surl'exemplesuivant,lesdeuxproessuslistesparl'exeution
de pssont:
{ l'interpretede ommandesbash ;
{ laommande ps ellem^eme.
$ ps
PID TT STAT TIME COMMAND
908 p2 S 0:10 (bash)
24218 p2 1 0:00 ps
$
Pardefaut,seulslesproessusdel'utilisateurquilanepssontlistes.Ilexisted'autresproessusqui
sont des proessusrees au lanement du systeme eteventuellement des proessus rees pard'autres
utilisateurs.
1.2.3 L'interfae X11
L'interfae ave le poste graphique, 'est-a-dire l'ensemble lavier/souris/eran, est geree par un
programme partiulier appele serveur X.
3
Dans le as d'une station,le serveur X estun proessus
Unix. Dans le as d'un TX, le serveur X est diretement implemente sur un proesseur loal au
terminal.
Un programme qui utilise les fontionnalites de X est appele lient X. La grande puissanede
X11estd'orirlapossibilited'utiliserunpostegraphiqueatraverslereseauenpermettantaunlient
d'interagir ave un serveur distant. C'est sur ette fontionnalite qu'est base le fontionnement d'un
terminal X.
Dans la terminologie X, un poste graphique est appele un display. Un display est identie par
un nomde mahinesuivid'un identiateurquiest generalement laha^nede arateres :0.0.Par
exemple,leserveurXduterminalXdenommurnau,estpardefautidentieparlaha^ne murnau:0.0.
On disposesousun shelld'un ensemblede variablesappeleesvariables d'environnement (voir
egalementsetion2.4.3page22etsetion5.4).Cesvariablespeuvent^etreexporteesautomatiquement
a tous les programmes lanes par le shell. Ce meanisme peut^etre utilise pour indiquer a un lient
le serveur qu'il doit utiliser. On plae pour ela le nom du lient dans une variable speiale dont le
nom est DISPLAY typographie en majusules. Dans l'exemple preedent, ave le shell bash, on erit
simplement:
$ DISPLAY=murnau:0.0
3.Attentiona nepas onfondreun((serveurde hiers)),qui estunordinateurentraldediealagestiondedisques,ave un
$ export DISPLAY
$
1.3 La ouhe appliations
1.3.1 L'environnement standard
L'environnementlogiielstandardd'Unixestrelativementrihe,maisdejaassezanien.Diverslan-
gagesdeprogrammationsontdisponibles:lelangageC(pastoujourslaversionnormaliseeISO/ANSI),
le langage Fortran, un assembleur, les langages interpretes Sh,Csh, Awk, et. Sont egalement dis-
poniblesdefaonmoins standard,soitdansdes distributionsspeiquesaertainsonstruteurssoit
en domainepubli,deslangagesomme Sheme, Lisp, Prolog,Ada,Eiffel , C++ ,et.
Lesprinipauxoutils standardd'aidea laprogrammation sont:
{ ledebogueurlangage mahine adb,
{ ledebogueursymbolique dbx,
{ desgenerateurs d'appliation ommemake(voir 4.3),
{ lesgenerateurs de programmes lexetya,
{ desoutils rudimentairesd'analyseomme prof,
{ dierentes bibliotheques,omme labibliothequede programmationde terminaux termap.
Ilexistede nombreusesommandes debase de manipulationde donnees (tri, fusion,reherhe...)
failementombinablesensembleetpermettantdeonstruiretresfailementdestraitementomplexes.
Cet aspetboite a outils aete unedesraisonsdu suesremarquabled'Unixpendant les annees80.
Citons ennles editeurs de texte ed etvi quine presentent plusguere d'inter^et pourles utilisa-
teurs 4
etles outils de traitement de texte nroff ettroff utilises pourmettre en page les pages du
manuel.
1.3.2 L'environnement X
1.3.2.1 Ressoures
Le omportement du serveur est parametrable au moyen d'un ensemble de ressoures. Ils'agit
de donnees gerees par le serveur et odant dierentes informations omme les polies de arateres
disponibles,leparametrage d'unefen^etre (ouleurde fond,polieourante,epaisseurd'untrait...), la
formeetlavitessedu urseur,et.
Cet environnement est ompletement dynamique, etmodiableau moyen de la ommande xrdb.
Ilestourant del'initialiseraumoyend'unhierde ongurationdenom.Xdefaultsqu'onfournit
ala ommandexrdbau moment de laonnexion.
Cette requ^ete est en general elle m^eme plaee dans le hier d'initialisation .xsession qui est
automatiquement pris en omptelors de la onnexion. Celapermet a haque utilisateur de posseder
sespropres hiersd'initialisation,etparonsequent depersonnaliserson environnement.
4.Cesoutilssontparfoisutilisesparlesadministrateursdusystemelorsqu'ilsinstallentunnouveausystemeouqu'ilsreparent
unsystemeab^me.Danseaseneet,ilestfrequentqu'onnedisposequed'unenvironnementrestreintdontnefaitpaspartie
1.3.2.2 Le gestionnaire de fen^etres
Un gestionnaire de fen^etre X est un lient partiulier qui assure l'interfae entre le serveur X et
l'utilisateur 5
.Lesplusourantssont twm,twm, mwm,awm. Lesfontionnalitesdebase sont ommunes
a touses gestionnaires:
{ Gestiondesfen^etres:reation,suppression,empilement(pop/push),deplaements, modiation
de taille,et.
{ Ioniation:ouvertureetfermeturede fen^etres, dessin etplaement desi^ones, et.
{ Gestionde menus.
Cesgestionnaireslisentau moment de leurlanement unhierd'initialisation(start-up) permettant
de parametrer etd'adapterleuromportement (.twmr,.mwmrparexemple).
On peut voir sur la gure 1.3 un exemple d'eran sous X ave dierentes fen^etres et i^ones. Sur
etexemple, legestionnaireutilise estmwm.
1.3.2.3
Emulateur de terminal
Unterminalsimpleestunensemblelavier/eranonnetepardeuxanauxaunprogrammeappele
ontr^oleur de terminaux.Pourhaque aratereentreau lavier,leontr^oleurrenvoieunehode
e arateresur l'eran.Ilmemorisehaquearatere reudansunezonememoire appeleeun buer
jusqu'ae qu'unprogramme eetueuneleture.Surles terminaux video nongraphiques,egalement
appelesterminauxASCII,es deuxanaux orrespondent aunepairede ls(voir gure1.4).
Fig. 1.3{ Exemple d'eran d'unestation detravail sous X
Ce mode d'interation etait sous Unix le seul possible jusqu'a la banalisation des terminaux X
et des stations graphiques.Bien que ette nouvelle tehnologie permettent des fontionnalites beau-
oup plus puissante, omme l'implementation d'hypertextes multimedia, le fontionnement de
tresnombreuxprogrammes,ommeparexempleles interpretesde ommandes,est enore regipare
mode d'interation de base. Pour interagir ave es programmes, on utilise sous X un logiiel appele
emulateur de terminal, qui simule par un logiiel le omportement d'un terminal video ASCII.
L'emulateurde terminal leplusourant est xterm.
1.3.2.4 Divers lients
De tres nombreux lients sont disponibles realisant les fontionnalites les plus diverses. Citons
par exemple les horloges xlok, olok et dlok, l'indiateur de ourrier xbiff, le leteur de
nouvelles xrn,l'interfaeWWWnetsape,laalulatriexal,lemanuel d'utilisationxman,l'outil
de manipulationd'imagesxv,gimpet. Surlagure 1.3sont ouvertesdierentes fen^etresassoieesa
GNU Emas,ghostview, xv,dlok etolok.
eho
ontr^oleur
Fig. 1.4{ Organisation d'un terminal ASCII
1.3.3 L'environnement GNU
Le projetGNU, dirige parRihard Stallman, est un projet de developpement d'unsysteme om-
patibleUnix,gratuit,etdonttous lessoures sont aessibles.Pourdeveloppere systeme,dierents
outilsonteterealisesommel'editeurGNU Emasouleompilateurg.LesystemeGNUestdispo-
nibleavedeuxnoyauxdierents:HURDouLinux.LesoutilsGNUsontaussidisponiblessurd'autres
systemesUnix(ommeSolarisouHP)etm^emesurertainssystemesnon UnixommeWindowsNT.
La qualite et le grand nombre des outils distribues sous le label GNU en font un environnement
extr^emement interessant. Lesprinipauxoutils etudies ii,l'editeurGNU Emas , les ompilateursC,
C++etObjetive Cregroupes danslaommande g,ledebogueur symboliquegdb,l'interpretede
ommandesbash...sont issusde e projet.
Signalonsen partiulierleprojetLinuxdedeveloppementd'unnoyauUnixlibrementdistribuable
tournantsurmiro-ordinateursompatiblesPC.CeprojetestassoieauprojetGNUpourproposerun
systemeomplet,lenoyauetant lenoyauLinuxetlesommandesellesduprojetGNU.Cetensemble
onstitueal'heureatuellel'outilleplusinteressantpourtravaillersousUnixaveunmiro-ordinateur.
1.3.3.1 L'editeur: GNUEmas
Le logiielGNU Emasestunediteur de texte,'est-a-dire unprogrammepermettant desaisir
et de modier un hiertexte. Emas est une familled'editeurs de texte remontant a environ 1975,
tresrepanduesurdenombreuxsystemes.LaversionlaplusreentedeGNU Emasest20.3.Unautre
membrede lafamilleest XEmasrealiseparLuidIn,etbase surGNU Emas.
A partirdelaversion19,GNU Emasestpleinementinterfae ave X.Voiiquelques unesdeses
arateristiques.
{ Interfaage X11.
{ Multi-fen^etres, multi-buers, multi-hiers (voir gure 1.5), repartis dans des erans (frame)
orrespondanta desfen^etresX.
{ Fontionnement en mode insertion etativation de ommandesau moyen de les.
{ Fontionnaliteslassiques:deplaementsdans le hier, insertion/suppressionde lignes, de a-
rateres, deparagraphes, de blos...,reherhes etpositionnements, et.
{ Interfaageavelesysteme:paroursderepertoire,letureduourrier,interationavelesshells,
ompilations,et.
{ Environnementextensible, programmableen Lisp.
{ Bibliotheque demodesspeialises.
fichier buffer
fen^etre
Fig.1.5{Chaque hier ouvertparGNU Emasestreopiedans unbueretaÆhesurl'eran dans
unefen^etre.Il estpossibled'ouvrir plusieursfen^etres sur unm^eme hier.Le nombrede buersn'est
pas a priori limite.
1.3.3.2 L'interprete de ommandes: bash
Ils'agit d'unshellstandardorant de tres nombreusespossibilitesd'edition desommandes, rap-
pelant les fontionnalitesde base de GNUEmas.
1.3.3.3 Compilateur et debogueur: g et gdb
LeompilateurgestunompilateurCimplementantlanormeCISO/ANSI.Ilintegreegalement
unompilateurC++etunompilateurObjetive C,quisontdeuxlangagesaobjetsdenisau-dessus
du langage C.
Il y a plusieurs inter^ets a utiliser le ompilateur g: implementation de la norme ISO/ANSI,
lartedes messagesd'erreur,rapiditedu ompilateur,eÆaite du ode genere lorsde l'utilisationde
l'optimiseurde ode.
Le debogueur symbolique gdb est un outil indispensable au debogage rapide d'une appliation.
Il permet notamment de suivre instrution par instrution l'exeution d'un programme ompile et
d'interagir surleproessusdiretement auniveau du soure.
Les deuxoutils,getgdbaquierent toute leurpuissanelorsqu'il sont utilisesdiretement sous
GNU Emas.
1.3.3.4 Divers
Mentionnons simplement pourreferene quelques unsdesautresoutils duprojetGNU:
{ gnumake: generateur d'appliation.
{ bison:generateurde programme.
{ gnuplot: visualisationde fontionsmathematiques.
{ groff:traitement de textedespages de manuel Unix.
{ GIMP:logiielde traitment d'images.
{ Lilypond:logiiel demise en pagede partitionsmusiales.
{ Otave:logiielsimilairea Matlab.
{ et.
1.3.4 Le traitement de texte T
E X/L
A
T
E X
Le traitement de texte T
E
X developpe par Donald Knuth et disponible en domaine publi est
atuellement l'outil de traitement de texte le pluspuissant du point de vuedes possibilitestypogra-
phiques.Ilrespeteles usagesetlesavoir-faire seulaire destypographesetdes omposeurs.
Integrant un langage de programmation,ilest entierement reprogrammableetdonextr^emement
extensible. Il existe sur les serveurs internet une multitude de hiers appeles hiers de style
permettant d'adapter etd'etendre T
E X.
L'utilisationdeT
E
Xestfailiteeparuneouhedenieau-dessusdeelui-iappeleeL A
T
E
X,adapte
a laompositionde textes livres,de rapports,d'artiles, de doumentstehniques,et. Ce polyopie
aete redige en utilisant lemode bookde L A
T
E
X. Un texteen L A
T
E
X (ouen T
E
X)est unhierASCII
ontenant du texte normal et des ommandes ommenant parun aratere \. Voii par exemple le
odeen L A
T
E
X despremieres lignesde ette setion:
\subsetion{Le traitement de texte \TeX{}/\LaTeX}
Le traitement de texte \TeX{} developpe par Donald Knuth et disponible
en domaine publi est atuellement l'outil de traitement de texte le
plus puissant du point de vue des possibilites typographiques. Il
respete les usages et le savoir-faire seulaire des typographes et
des omposeurs.
Integrant un langage de programmation, il est entierement
reprogrammable et don extremement extensible. Il existe sur les
serveurs internet une multitude de fihiers appeles {\bf fihiers de
style} permettant d'adapter et d'etendre \TeX.
Les ommandes indiquent des ations a eetuer sur le texte, omme le setionnement ou un han-
gement de polie. On peut notamment voir sur et exemple que la numerotation des setions et les
esures 6
sont eetuees automatiquement parT
E X.
UnhierT
E
X(resp.L A
T
E
X)estompileaumoyen delaommandetex(resp.latex).Le resultat
est un hier graphiqueappele hier dvi (pourDeVie Independent). Il est possiblede onvertir e
hieren hierPostSriptimprimablesuruneimprimantelaseraumoyende laommande domaine
publidvips.Un hierdvipeut^etre visualisesous Xau moyen du lient xdvi.Le hierPostSript
peut^etre visualiseau moyende ghostsript (voir1.3.3.4).
Signalonsegalement lapossibilite de onstruire desgures au moyen du lient X domaine publi
xfig. Ces gures sont failement integrable a un soure L A
T
E
X au moyen de la ommande domaine
publifig2dev.
6.Lesesures,'est-a-direledeoupagedesmotsestparametrageselonlalanguedanslaquelleonerit.Parexemplelesregles
1.4 Compte utilisateur et protetion
Au demarrage du systeme,haqueposte detravailest pr^eta aepterla onnexiond'un utilisa-
teur.Surl'eran estaÆhe un message dela forme
login:
Le systeme onna^tlalistedesutilisateursautorisesaseonnetersurlamahine.Chaqueutilisateur
estidentieparunnomappelesonnomde login. Lorsqu'unutilisateurest denisurunemahine,on
ditqu'ilpossedeun omptesurette mahine.
Pour des raisons de seurite, tous les omptes ouverts sur une mahine doivent imperativement
^etre proteges par un mot de passe. La raison prinipale est d'interdire l'aes de la mahine aux
personnes n'ayant pas de ompte. Celapermet egalement de restreindre, voire de supprimer,l'aes
auxdonneesd'un utilisateurpourlesautres utilisateurs.
Chaque nouvel utilisateur reoit generalement un mot de passe initialise par l'administrateur du
systeme. Lors de la premiere onnexion, la premiere hose a faire et de denir un nouveau mot de
passe.
Il est imperatifque haque motde passe ne soitonnuque de sonseul proprietaire
Ce mot de passe doit ^etre suÆsamment robuste pourresistera destentatives d'erations. Deux
riteres important de robustessesont lalongueur etlaomplexite du mot.
{ Longueur:toutmotdepassedevraitomporter8arateresquiestlemaximumprisenompte.
{ Complexite:toutmotdepassedevraitontenirdesarateresvaries,parexempleenm^elantdes
lettresmajusulesetminusules etdesarateres speiaux (virgules,espaes, aents...).
Ilfauteviterabsolumentles motsdepasse simplesadeviner:sonprenom,sadatede naissane,
unmotenrapportavesonativitefavorite,et.D'autrepart,ilexistedesprogrammesderaquagede
ompteutilisantdesditionnairesde mots.Ilfautdonevitertoutmot gurant dansunditionnaire,
ou enrapportave un theme ou unsujet ala mode.
La seurite desomptesestunehose tresimportantesurdesmahinesrelieesaureseau Internet.
Les tentatives d'eration et de piratage venant de l'exterieur ne sont pas rares. Ilest important de
bienomprendrequ'unomptefailementfraturablepeut^etreutilisepardespiratesommetremplin
poureetuerdenouvelleserations.Danseasleproprietaireduomptepeut^etre inrimine,s'ila
ommisdesimprudenes,ommeparexemplepr^etersonompteauneautrepersonneenluidivulguant
sonmot de passe.
Le mot de passe est deni ou modie au moyen de la ommande passwd sur une mahine isolee
etdelaommande yppasswdsurunemahineen reseau.Lors de lasaisiedu motde passe,l'eho est
supprime de faon a ne pas laisser de trae de e mot sur l'eran. Poureviter les erreursde frappe,
la ommande redemande uneseonde fois e mot de passe. Dans le as d'un hangement de mot de
passe, l'anienmot de passe estegalement demande.
Chapitre 2
Introdution au systeme UNIX
2.1 R^ole du noyau
Le noyau estunprogrammeharge enmemoire entralelorsdulanementdu systeme.Ildemeure
en memoire jusqu'a l'arr^etdu systeme:on ditqu'il estresident. Pourdes raisons de seurite, ilest
leseulapouvoiraeder a latotalite de lamemoire,a ladierene desproessusutilisateurquisont
enfermes dans un espae memoire propre. De ette faon, un proessus ne peutagir diretement sur
les donneesd'un autreproessusou dunoyau.
La ommuniationentreunproessusetlenoyau sefaitaumoyend'un meanismespeialappele
appelsysteme.Ils'agitd'unerequ^eteenvoyeaunoyau,luidemandantsoitdefourniruneinformation
surl'etat du systeme, soitd'eetueruneationsur lesysteme(par exemplereerun hier).
Chaque unite peripherique de la mahine (onsoles, disques, imprimantes...)est ommandee par
un ontr^oleur (ontr^oleur de terminaux, ontr^oleur de disques...) Un proessus utilisateur ne peut
aeder diretement aun ontr^oleurde peripherique.
Certains modulesdunoyau,appelesles pilotesde peripheriqueou deviedrivers, sont harges
del'interfaeentrelesproessusetlesontr^oleurs.Laommuniationsavelespilotessefaitegalement
aumoyen d'appelssystemes.
2.2 Les entrees-sorties
2.2.1 Flots d'entrees-sorties
Uneoperationd'entree-sortieestgeneralementuntransfertdedonneesentreunezonememoire
etun hierouuneuniteperipherique.Parexempleunproessuspeuteetuerdesentrees-sortiesur
leterminal depuislequelil aete lane (leturesau lavier eterituressur l'eran).
On appellera ots d'entree-sortie d'unproessus ses entrees-sorties atives. Plusieurstypesde
ommuniationssontpossibles:
proessus ! hier
hier ! proessus
proessus ! peripherique
peripherique ! proessus
Ilestegalement possibled'etablirun otd'entree-sortie entre deuxproessus:
proessus ! proessus
2.2.2 Flots d'entrees-sorties standard
Un proessus possede par defaut a sareation trois ots d'entres-sorties predenis appeles ots
d'entrees-sorties standard(ousimplemententrees-sorties standard). Cesont:
{ stdin:ot d'entree standard,surlequelsont eetueesles operationsdeleturestandard;il
estpar defautassoie au lavier du terminal;
{ stdout:ot de sortie standard,sur lequelsont eetueesles operationsd'eriturestandard;
ilest pardefaut assoie al'eran du terminal;
{ stderr: ot de sortie erreur standard, sur lequel sont eetues les aÆhages de messages
d'erreur;il estpar defautassoiea l'eran duterminal.
Le shema de lagure2.1 represente lesots d'entrees-sorties pardefautd'un proessus.
'
&
$
%
-
stderr stdout
stdin
- -
-
proessus
Fig. 2.1 {Flots d'entrees-sorties standard
2.2.3 Meanismes de rediretion
Ilestpossiblederedenirlesotsd'entrees-sortiesstandardenlesassoiantaunnouveauperipherique
ou aun hier.On parledans e asde rediretion d'entree-sortie.
Les rediretionssont possiblesdiretement depuisun shell.On distinguedeuxas:
{ d'unprogramme versun hier:parexemple, laommande
$ ls -l >ls.l
redirigeleot desortie standardde ls dansun hierde nomls.l(Figure2.2);
ls.l
-
'
&
$
%
-
stderr stdout
stdin
- -
-
ls
Fig. 2.2{ Rediretion de sortiestandard
{ d'unprogrammeversun autre programme(pipeou tube):parexemple, laommande
$ ls -l | more
redirigelasortie standardde ls surl'entree standardde more(Figure2.3).
- -
stdin
more
-
- stdout
stderr -
stdin
ls
- -
stderr stdout '
&
$
%
-
Fig.2.3 { Resultat d'un pipe
La possibilite d'assembler des ommandesau moyen de tubes a fait se multiplierles ltressous
Unix. Un ltre est une ommande traitant un ot de donnees lue sur son entree standard et trans-
mettant leresultatsur sasortie standard.Les plusourants sont:
{ grep:extration demotifs
{ sort:trides lignes
{ tr:remplaementsde arateres (voir setion5.5.3 page53)
{ sed:remplaement de motifs (voir setion5.5.4 page54)
{ awk:langage de programmation permettant de realiserdes traitements omplexessur un ot
{ head:extration despremieres lignes
{ tail:extration desdernieres lignes
2.2.4 Fihiers speiaux
SousUnix,le termegeneral dehierpeutdesignerplusieurstypesde hiers:
{ hiersreguliers:hiersontenantdesdonnees(textes,programmesoures,ommandesexeutables...);
{ repertoires:hiersontenant d'autres hiers;
{ hiers speiaux:hierstifs permettant laliaisonave un pilotede peripherique.
Parexemple,/dev/ttydesigneleterminalourant,etdev/ttynnleterminalnumeronn.Dupointde
vuedel'utilisateur,unhierspeialseomporteommeunhierregulier.Parexemple,laommande
date >/dev/tty12
aÆhe la datesur leterminal numero 12 (si l'aes en eritureest autorise). On qualieles entrees-
sortiesUnixd'entrees-sorties generalisees.
2.3 Le systeme de hiers
Le systeme de hiers est un arbre dont la raine est notee /. Chaque proessus possede un
repertoire ourant quiest sa positiondans l'arbredu systeme de hiers.Lors de laonnexion, le
repertoire ourant dushell estlerepertoire d'aueil(home diretory). Ilpeut^etre modie au moyen
2.3.1 Desription de l'arboresene standard
{ repertoires dehiersexeutables:/bin,/usr/bin,/usr/loal/bin
{ repertoires debibliotheques:/lib, /usr/lib,/usr/loal/lib
{ pages de manuel (sur UnixBSD): /usr/man/mani (pages soures), /usr/man/ati (pages for-
matees)
LemanuelUnixestomposedepagesderitesdansunlangagedetraitementdetextesspeique
a Unix.Deux ommandessont utiliseespourtraiter letexte:
{ nroffqui prepareunesortie poureran video,
{ troffqui produit unresultatpourimprimantelaser(voirgure 2.4).
Lorsque l'ondemande unepagedemanuelau moyen de laommande man, lemessage
Wait reformatting...
signieque le page a aÆher est alulee au moyen de nroff. Elleest ensuite stokee dans le
repertoire despages formateesan d'eviterdela realulerlorsd'une prohaineonsultation.
Un gros avantage de ette organisation est que e qui s'aÆhe a l'eran par man et e qui est
imprimedans ladoumentationpapierprovient desm^emeshierssoure.
sdf sdf fsdfsfd
sfd fsdfsdff ff
Imprimante
sfdfsdff fsfff f sdf sdf sdf sf sd dff fd fsadfsa fadaf asdf saf sdf dfsda
sdfsdf fsdfsdfsfsdf sdfsdf fsdfd
\’Ecran
Sortie graphique de
manuel du Sources
Traitement texte
Sortie tty
Fig. 2.4 {Formatagedes pages de manuel par nro ettro.
{ Fihiersd'administration:/et, /adm
{ /et/passwd:haque lignede e hierdenitun utilisateur
login:passwd:uid:gid:ommentaire:repertoire d'aueil:shell
Chaque utilisateur est identie par le systeme au moyen d'un numero unique appele son
uid (user identier). Chaque lignedu hier passwd met en orrespondane un nom de
loginaveunuid.Elleontienttouteslesinformationsneessairesalaonnexion,yompris
{ /et/termap:base de desriptionde terminaux
{ /et/r:initialisationdu systeme
{ /et/utmp:listedesutilisateursonnetes
{ ...
{ divers:/tmp, /dev,/users
2.3.2 Chemin
2.3.2.1 Chemins absolus et relatifs
Un heminidentieun hier(hierregulier,repertoire...)danslesystemede hiers.Ilorres-
pond a un deplaement dans l'arboresene des hiers. Deplus, dans haque repertoire R , il existe
deuxnoms reserves
{ ..:referene au repertoire pere deR
{ .:referene aurepertoire R
{ Cheminrelatif.Ilexprimeundeplaement parrapportalapositionourante; parexemple, si
lerepertoire ourant est/usr/loal,les hemins
1) bin
2) bin/emas
3) ../lib
4) ../lib/libtermap.a
sont des hemins de repertoires dans les as 1) et 3), et des hemins de hiers dans les deux
autres.
{ Cheminabsolu.Ilexprimeundeplaementparrapportalaraine(independantdelaposition
ourante):
1) /usr/loal/lib
2) ~/emas (~ estsous bash uneabreviationpourlerepertoire d'aueil).
2.3.2.2 Validite d'un hemin
Un heminpeut^etre deompose en unprexeetnom de base.Lorsque le hemin ontient des
/,le nomde baseest lemot suivantledernier /; leresteest leprexe:
z }| {
~/Programmes/C/tubes
| {z }
z }| {
~/Programmes/C/tubes/frein:
| {z }
z}|{
../Textes
| {z }
z }| {
../Textes/ls:man
| {z }
Le prexe est toujoursle hemin d'un repertoire; il determine la position dans l'arboresene du
repertoire ou du hier identie par le nom de base. Lorsque le hemin ne omporte pas de /, il se
reduitau seulnom de base. Le prexe estalors impliitement .,'est-a-dire lerepertoire ourant.
Un hemin est valide seulement si son prexe est le hemin d'un repertoire existant, que l'on
2.3.3 Protetions et aes
{ Un hierappartient:
{ aun utilisateur,quiestsonproprietaire;
{ aun groupe(pas neessairement elui deson proprietaire).
{ Troistypesd'aessont denis:
{ pourun hier:leture,eriture, exeution;
{ pour un repertoire: leture, eriture, utilisation (il s'agit de l'utilisation dans la partie
prexe d'unhemin).
{ Le mode d'aes denitl'aes en 8
>
<
>
:
leture
eriture
exeution pour
8
>
<
>
:
le proprietaire
les utilisateursde m^eme groupe
les autresutilisateurs
.
Celafait 9informationselementaires (3 hamps de3 ags),que l'on note
rwx
|{z}
u rwx
|{z}
g rwx
|{z}
o
Le aratere -indiquequ'unaes n'estpasautorise:
rw-r--r--
rwxr-xr-x
2.3.4 Meanismes de remplaement de hemins
Sous l'interprete de ommandes, il est possible de speier des listes de hemins au moyen de
motifs. Parexemple,lemotif*represente touslesnoms dehiersdurepertoireourant dont lenom
ne ommene pasparun point.Demanieregenerale, dans unmotif, *remplaeuneliste quelonque
de arateres. Exemples:
eho /u*/l*
eho /users/*
Au moment dutraitement delaommande,'est-a-direavant laphased'exeution, bashremplae
lemotifparlalistedesheminsluiorrespondant,puistransmetleselementsdeettelisteenargument
a laommande.Ilexiste d'autres meanismesde substitution(voir5.3.4).
2.3.5 Prinipales ommandes relatives aux hiers
{ d:deplaement dansl'arboresene
{ pwd:aÆhagedu hemindurepertoire ourant
{ ls:listageduontenude repertoires
{ at:listagedu ontenu de hiers
{ more:aÆhage duontenu
{ p:opie dehier
{ mv:deplaement de hier
{ rm:suppressionde hier
{ hmod:hangement desdroitsd'aes
{ hown:hangement duproprietaire d'unhier
{ mp:omparaison de deuxhiers
{ diff:listagedesdierenes entredeux hiers
{ file:identiationdehiers
{ join:jointure de deuxhiers
Citonsegalement quelquesltres (voir page2.2.3) pouvant aussis'utilisersurdeshiers:
{ grep:reherhe demotifs
{ head:listagedudebut d'unhier
{ tail:listagedela nd'un hier
{ sort:tri
2.4 Les proessus
2.4.1 Creation d'un proessus
Unproessusestuneourreneenmemoired'unprogrammeexeutable.Seullenoyaupeutreer
de nouveaux proessus.Un proessus peut demanderau noyau le lanement d'un nouveau proessus
aumoyen d'appelssystemesspeiques.Un tel appelreoit en parametre
{ leheminduprogramme a harger;
{ lalisteeventuelle de ses arguments.
Le noyau teste si le proessus demandeur a le droit d'exeuter e programme: et si 'est le as,
eetue le lanement. Chaque nouveau proessus reoit un numero unique appele son pid (proess
identier).Les numeros sont attribuesparle noyau moduloun numeromaximal.
C'est de ette faon que les shells, par exemple bash, font exeuter les ommandes entrees au
lavier.Enutilisantesappels,ilestpossibledeprogrammer denouveauxinterpretesdeommandes.
La liste de tous les proessus atifs a un instant donne est stokee en memoire dans une table
appelee la table des proessus. Cette table est mise a jour par le noyau a haque reation ou
suppressionde proessus.
2.4.2
Etat d'un proessus
Un proessus n'utilisepas lamahine en permanene. En partiulier,lorsqu'il demande un aes
auneressoure physique, il peut^etre misen attente, le tempsquel'aessoiteetue.
Onpeutonna^trel'etatdesproessusenappelantlaommandepsavel'option-l.Lesprinipaux
etats parlesquelspasse unproessussont resumessurla gure2.5.
'
&
$
% Z
R
T S I
enreation
-
R I atif
-
termine
stoppe
enattente
Fig. 2.5{
Etats d'un proessus
2.4.3 Environnement d'un proessus
2.4.3.1 Environnement systeme
Ils'agitdesinformationsdont lenoyaua besoinpourgererl'ensembledesproessus.Cesinforma-
tions sont aessibles via la table des proessus.Parmi les informations de l'environnement systeme
d'unproessus,on trouve:
{ sonpid,
{ sonetat,
{ lenumero de sonproprietaireetde songroupe,
{ lepidde sonpere, 'est-a-dire eluiquia provoque sareation,
{ sonrepertoire ourant,
{ sonniveau de priorite,
{ ses entrees etsortiesstandard,
{ lapartiede lamemoire ou ilest harge,
{ ...
La plupartdeesinformationssonttransmisesdu proessuspereauproessuslsparreopielors
de lareation duls.
2.4.3.2 Donnees
On distingue
{ les donnees proprementdite du programme;
{ les argumentsde lanement de laommande:il s'agitd'une listede ha^nesde arateres;
{ l'environnement utilisateur: ils'agit d'uneliste de variablesdont leontenu (la valeur) est
une ha^ne de arateres. Parmi es variables, ertaines sont predenies au moment du login,
puistransmisespardefautde pere en ls,ommeparexemple:
{ HOME:leheminabsoludu repertoire d'aueil
{ TERM:letype du terminalvideo
{ PATH: une liste de hemins de repertoires dans lesquels sont ranges des programmes
exeutables.
{ DISPLAY:nomdu serveurX.
Lesvariablestransmises auxproessusls sont appeleesdesvariablesexportees.
Certainesdeesdonneessontdansunepileappeleelapiled'exeutionduproessus.Onpeut
onna^trelaliste desvariablesd'environnement exportees parleshellprintenv.
2.4.4 Contr^ole des ations d'un proessus
Au moyendes appelssystemes, toutproessuspeutdemanderlamise enoeuvred'operations
{ surson propreenvironnement systeme:
{ modiersapriorite,
{ semettre en attented'unevenement,
{ surdes ressouresphysiques:
{ reation ousuppressionde hiers,
{ ativation d'entres-sorties,
{ ...
{ surd'autres proessus
{ modiationdel'etat (par exemplestoppage, outerminaison),
{ ...
Toutes es operations sont rigoureusement ontr^olees par le noyau. On a deja evoque en 2.3.3
les ontr^oles et meanismes de protetions onernant les hiers. De m^eme, un proessus ne peut
interagir surun autre proessusque s'ilsappartiennent tousles deux aun m^eme utilisateur.
Il existeune seuleexeption a e meanisme. Ils'agit d'un utilisateur privilegie, appele le super-
utilisateur,quiestl'utilisateur d'uidzero. En general, sonnomde login estroot.
Lorsqu'unproessusappartientaetutilisateur(onditalorsqueleproessusestsuper-utilisateur),
lenoyaun'eetue plusauunontr^olesurlesappelssystemes.Ceproessusesttoutpuissant:ilpeut
aeder a touteslesressoures physiques,interagir surtous les proessus,et.
L'aessuper-utilisateur,'est-a-direlaonnexionsouslenomderoot,estreserveeauxpersonnes
quiadministrent lamahine.
2.4.5 Communiation entre proessus
Nousavonsvuen2.2.3 qu'ilestpossibledefaire ommuniquerdeuxproessusaumoyen depipes,
en redirigeant leotde sortie standardde l'unsurleotd'entree standardde l'autre.
Il est egalement possible de faire ommuniquer deux proessus par signaux. Un signal est une
informationelementaire, odeeparunentier,qu'unproessuspeutenvoyeraunautre.Lenoyaupeut
egalement envoyer dessignaux auxproessus.
Lorsqu'un proessus reoit un signal, il suspend aussit^ot le traitement en ours pour traiter le
signalreu.Pardefaut, elaprovoquesaterminaison,ave dansertain aslaprodutiond'unhier
orequiestuneopie del'imagememoire duproessus.Parexemple,uneerreurdansun programme
peut entrainer l'utilisationd'une adresse memoire inorrete etauser l'envoi par lenoyau du signal
SIGBUSquiprovoquelaterminaisondu programme ave le message
Bus error - ore dumped
Un proessuspeutaussireuperer unsignal and'eetuer untraitement speique a laplaede
laterminaison.
2.4.6 Prinipales ommandes relatives aux proessus
2.4.6.1 Job ontrol
Unproessuspeut^etrestoppependantsonexeution.CelasefaitpardefautentapantC-zpendant
l'exeution. Leproessusstoppe restepresent danslesysteme.Ilpeuta toutmoment ^etre relaneau
moyen de laommande fg.Ilreprenddanse as sonexeutionnormalement.
Par defaut, un proessus s'exeute en avant-plan (foreground). Cela signie qu'il possede le
ontr^ole du terminal depuis lequel il a ete lane (par exemple une fen^etre xterm). Il est possible
de detaher un proessus an de plaer son exeution en arriere-plan (bakground). Dans e as, il
nepeutplusfairedeleture auterminal.C'estleshelldee terminalquireprendlamain.Ilyadeux
faonsde plaerun proessus en arriereplan:
{ terminerlaommande de lanement parlearatere &,
{ stopperle proessusetle relaneraumoyen de laommandeinterne bg.
On peut obtenir une liste de ses proessus, avant-plan, arriere-plan et stoppes, au moyen de la
ommandeinterne jobs:
$ jobs
[1℄ Running olok -fg #f0b050 -bd #0b3709 & (wd: ~)
[4℄ Stopped grep (wd: ~)
[8℄ Running xbiff & (wd: ~/lmi/rerutement)
[9℄ Running emas & (wd: ~/lmi/plaquette/organisation)
[12℄ Running netsape ~/html/index.html &
[13℄- Running ghostview main.ps &
[14℄+ Stopped latex main
$
Le aratere+indiqueleproessusstoppeourant,'est-a-direeluiquiestrelaneparuneutilisation
desommandesfgoubg.Lenumeroentrerohetsestutilisablepourdesignerunautreproessus.Par
exemplefg %13rattaheleproessus[13℄.Attention,ettenumerotationdesproessusdel'utilisateur
est interne a bash et ne orrespond pas a l'identiateur de proessus attribue par le systeme. Les
identiateurssysteme (pid) peuvent^etre obtenus aumoyen de laommande ps:
$ ps
PID TT STAT TIME COMMAND
2207 p1 S 0:53 /usr/new/bash -login
2239 p1 IW 2:36 olok -fg #f0b050 -bd #0b3709
2240 p1 IW 4:02 dlok
2243 p1 T 0:01 grep
2408 p1 S 5:12 xbiff
2429 p1 IW 35:58 emas
8921 p1 IW 3:41 xfig
14773 p1 IW 4:35 netsape /usr/labri/ahille/html/index.html
21269 p1 IW 0:13 ghostview main.ps
21273 p1 IW 0:03 gs -sDEVICE=x11 -dNOPAUSE -dQUIET -dSAFER -
21342 p1 T 0:00 latex main
21343 p1 R 0:00 ps
$
2.4.6.2 Commandes usuelles
Voiiquelques autresommandeslassiques demanipulationdes proessus.
{ kill:envoi d'un signal a un proessus (sous bash, on peututiliserindieremment le pid ou le
numero interne donne parlaommande jobs)
{ who:liste desutilisateursonnetes
{ w:idem, maisave d'avantaged'informations(BSD)
{ nie:lanement d'unproessus enfaiblepriorite
{ time:lanement d'unproessus ave obtention detemps d'exeution
{ trae:traagede l'exeutiond'unproessus
2.4.7 Meanismes de ((boot)) et de ((login))
Lors du lanement du systeme, le noyau est tout d'abord harge dans la partie de la memoire
quiluiest reservee.C'est l'etapede bootstrap, ou boot. Lorsquelehargement esttermine, lesysteme
Unix est operationnel.Le noyau ree un premier proessus,appele proessus initial,de nom initet
de pid1.Ce proessusest harge a partirdu programmeexeutable /et/init.
Le proessusinitlane,pourhaqueterminalaonneter,laommande/et/getty,dontler^ole
est d'attendrelademandede onnexion d'unutilisateur,en aÆhant surle terminallemessage
Lorsqu'un utilisateur tape son nom de login, getty lit e nom, puisfait exeuter la ommande
loginen luitransmettant le nomluen argument.
Ce nouveau proessuseetueles ations suivantes:
{ reherhe delalignedenissantetutilisateurdans/et/passwdetextrationdesinformations
(mot de passerypte,numerod'utilisateur...);
{ leturedu mot depasse (ave suppressionde l'eho);
{ ryptage dumot luetomparaison ave le motrypte;
{ siok,
{ initialisationdu proprietaire, groupe,etrepertoire ourant du proessus;
{ initialisationdesentrees-sorties standard;
{ lanement de l'interpretede ommandes.
{ sinonaÆhagede
Login inorret
login:
L'interprete de ommandes ommene par lire un ou plusieurs hiers d'initialisation, appeles
hiersstart-up. Parexemple, bashlitles hiers.bash profile et.bashr durepertoire d'aueil.
IlaÆhe ensuite lepromptetattend lafrapped'une ommande.
Exeries.
1. Mettreunmotdepasse sursonompte.
2. Essayerlesommandeswho,tty,date,al,eho.
3. Essayerman man.
4. Reherherune ommandequi nettoiel'eran.
5. Essayerlesommandesd'editiondelignedebash :
{ faireaÆherlealendrierdel'anneeourante;
{ utiliserl'historiqueetl'editiondelignepourfairesuessivementlesalendriersdesmoisdejanvier,
dedeembre,etdefevrierdel'anneeourante.
EssayerlareherheaveC-r.
6. Essayerlesmeanismesdeompletiondebash(C-i,M-?).
7. Dessinerl'arboresenedusystemedehiers.DerirelesprinipauxrepertoiresdusystemeUnix.
8. Essayeresdierentesoptionsdelsdanslerepertoired'aueil.
9. Essayermorehfihieri;queremarque-t-onparrapportaman?
10. Essayerlaommandefilesurtousleshiersd'unrepertoire(parexemple/et/*).
11. Essayerlaommandewsurunhier,surunelistedehiers,sanshier.
12. Essayereho ~.Commentpeut-onfaireaÆherlearatere~?
13. Essayerlesommandessuivanteslesmotifsderemplaementdenomsdehiers.Enpartiulier,essayer
eho */*,eho */??adierentsendroitsdel'arboresene.
14. Creerunrepertoiretmpet unrepertoireProjetsdanssonrepertoired'aueil.
15. Essayerrmdir ~etommenter.
16. Donnerdesexemplesdeommandeseetuantdesletureset deserituredansunrepertoire.
17. Essayerls -l, ls -lg. Regarderles dierents aesde ses hiers et de hiers du systeme. Essayer
diversesmodiationsparhmodverierleresultataumoyendels -l,
18. Experimenterlesmodesd'aesd'un repertoireaumoyendehmod,ls,pet rm.Verierquel'onpeut
avoirledroitdedetruireunhiersansavoirledroitdelelire.Dansquelaspeut-ondetruireunhier
quinenousappartientpas?
19. Creerdanssonrepertoire~/tmpunhierontenantdutexteetenleverl'aesenleturepourl'utilisateur.
Essayerde lireaumoyen deat.Verierqu'un autreutilisateurpeutenore lelire.Sous GNUEmas,
hargerle hierprotegeen leture. StopperGNUEmas et remettre l'aesen leture. Reommener
20. Enlever l'aes en eriture pour l'utilisateur sur un hier texte. Reveiller GNUEmas et tenter de
modier le hier: GNUEmas aplaee bueren mode read onlyreperable par--%%-en debut de
lignedemode.Ce modeest desativableaumoyendelaommandetoggle-read-onlyliee alaleC-x
C-q.Desativeremode,modierlehierettenterdesauver.StopperGNUEmas,redonnerl'aesen
eritureetreommener.Essayeresmanipulationssurunhierd'unautreutilisateur.
21. Pourquoils -lnepermet pasdelisterlemoded'aesd'unrepertoire;reherheraumoyendemanla
faondefaire.
Chapitre 3
Introdution a Emas
3.1 Denitions et onepts de base
3.1.1 Jeu de arateres
GNU Emas est apable de traiter n'importe quel aratere ASCII etendu, ode sur 8 bits. Les
arateres de 0a127 sont euxde latableAsii standard;lesarateres allant de128 a255 sont des
meta-arateres (voir page3). Pardefaut, les arateres non aÆhables sont visualisesa l'eran de la
faon suivante:
0 ^
1 ^A
2 ^B
.
.
.
27 ^[
28 ^\
29 ^℄
30 ^^
31 ^_
127 ^?
128 \200
129 \201
.
.
.
255 \377
Sous X, il estegalement possibled'ativer l'option d'aÆhage graphiquedes arateres europeen
odes par des meta-arateres (voir egalement page 3). Cela se fait au moyen de la ommande
standard-display-european(voir setion 3.2.1 pour l'invoation d'une ommande GNU Emas et
lehieremas.elliste page33pourlepositionnementpardefaut del'aÆhageeuropeen).
Surles postesde travail ne disposant pasde latouhe Meta,on peutsimulersous GNU Emasle
aratere M-en tapant lasuitede deux arateres ESC .
3.1.2 Buer, fen^etres et erans
Sous GNU Emas, un buer est une zone memoire, indeniment extensible 1
, dans laquelle sont
ranges des arateres quelonques. GNU Emaspeutgerer simultanement un nombrequelonque de
buers. Cependant, il est raisonnable de ne pas saturer la memoire par un trop grand nombre de
buers.
On appelle point l'endroit du buer a partir duquel agissent les ommandes d'edition. Cette
position est situee entre deux arateres. Le urseur est toujours situe sur le aratere qui suit le
point.
GNU Emas peut tourner sur un terminal simple, par exemple dans une fen^etre xterm, en en
utilisant les possibilites de fen^etrage de X11. An d'eviter toute ambigute, nous appelleronseran
ouframeunefen^etreXouverteparGNUEmas. Surunterminalsimple,GNU Emasnedisposeque
d'unseuleran.Sous X,Emaspeutouvrirautant d'eransque souhaite.
Uneran peut^etredivisehorizontalement ouvertialementen fen^etresdetaillevariable.Chaque
fen^etre est obligatoirement assoiee a unbuer, dontle ontenu estvisualisedans lafen^etre.
Chaque fen^etre estmunied'une ligne de modederivant sonetat ourant (positionourantedu
point,nom dubuer, mode ourant,marquesbuer modie...).
Ilexisteenbasdel'eran unefen^etreassoieaunbuerpartiulier:lemini-buer.Cettefen^etre
estpardefautreduiteauneseuleligne. Elleestutilisepoureetuer desoperationsd'entrees-sorties.
3.1.3 Cle
Une le est unesuite de arateres interpretee omme un tout par GNUEmas. La plupart des
arateres sont des les. Certains autres sont des arateres prexes et ne onstituent pas des les a
partentiere. C'est pardefaut leasde
C-
C-x
C-h
ESC
Le sequenesprexesne sont paslimitesa unseularatere. Parexemple, pardefautlasequene
C-x 4
est unprexe.
Les prexesne sont pas ^ables dans GNU Emas . Au ontraire, il est a tout moment possible de
redenirlestatutd'unaratere, yomprisdefairede n'importequelaratere unaratere prexe.
Il est possibled'inserer une le dans le textegr^ae a un meanismede quotation.On utilise pour
elalaleC-qlieealaommandequoted-insert.Parexemple,lasuitede arateres C-q C-dinsere
learatere C-ddans lebuer; ilest visualise par^D.De m^eme, C-q ESC vinsereles arateres ESC
etv, etC-q C-qinserelearatere C-q.
3.1.4 Commande
Toute ation eetuee par GNU Emas, y ompris l'insertion d'un aratere, est le resultat de
l'exeutiond'une ommande.Un ertain nombrede es ommandessont liees adesles:
forward-har C-f
save-buffers-kill-emas C-x C-
self-insert-ommand A
self-insert-ommand z
exeute-extended-ommand M-x
Chaque ommande GNUEmas, des plus simples omme les deplaements de urseur aux plus
sophistiqueesomme l'indentation d'un programme C, est denie par unefontionerite en langage
Lisp.
M^eme les arateres aÆhables (lettres,hires...) sont desles.Ils sont tous,pardefaut, liesala
m^emeommande:
self-insert-ommand
Si l'on hange laliaison du aratere A en l'assoiant par exemplea laommande forward-har,la
En resume:
{ toutele provoque l'exeution d'uneommande;
{ haque ommande provoque l'evaluation d'une fontion Lisp par un interprete Lisp interne a
GNUEmas .
3.2 Interation ave GNU Emas
3.2.1 Invoation d'une ommande
Dans le as d'une ommande liee a une le, il suÆt de taper ette le pour faire exeuter la
ommande.Ladenitiond'unensembledeliaisons (bindings)estappeleunetablede lesoukeymap.
La keymap, ommune a tous les buers, est la keymap globale, de nom global-map.
A haque
mode est assoiee unekeymap loale,dont les denitions masquent les denitions globales. De ette
faon,on peutredenirlavaleurd'une leen fontion dutype de buerquel'onedite.
On peutredenirinterativement uneliaisonau moyen des ommandes:
loal-set-key
loal-unset-key
global-set-key
global-unset-key
Il est egalement possible d'invoquer diretement une ommande par son nom, au moyen de la
ommandeexeute-extended-ommand,lieealale M-x.Lorsdelafrappedeettele,leurseurest
plae danslemini-buer,etilest ainsipossiblede taperlenomde laommande a faireexeuter.
Enn, il estpossibled'invoquerl'interpreteLisp an de luifaireinterpreter une expression.Pour
ela,on tape lale M-: quilane laommande eval-expression.Parexemple
M-: bf Eval: (apropos "enter") RET
estequivalent a M-x apropos RET enter RET etaC-h a enter RET.
3.2.2 Parametres de ommandes
Il s'agit d'unparametre numerique, pouvant^etre negatif, prexant l'invoationd'une ommande
(parunele oupar M-x);leparametre est introduitau moyen de laleC-u.
C-u [[hpari℄℄ hlei
C-u [[hpari℄℄ M-x hommandei
Leparametre hpariest faultatif.Lorsqu'ilestabsent,laommande reoitunevaleurpardefaut, qui
esten general le nombre4.
C-u 5 C-f (forward-har 5)
C-u C-f (forward-har 4)
C-u 2 0 M-x goto-line (goto-line 20)
C-u 10 C-v (sroll-up 10)
3.2.3 Communiation a travers le mini-buer
{ aÆhagede messages:
Auto-saving...done
Wrote /users/modele/Textes/ls.man
{ leture deparametres:
M-x goto-line Goto line: 1 0 RET
C-x C-f Find le: /users/modele/.emas
C-h v Desribe variable: tl-x-map
Certain types de parametres (ommandes, variables, hemins...) sont assoies a des meanismes
de ompletion, provoques par les lesC-i, SPC, etRET. Cela permet de ne taper que ledebut d'un
nom, etde laisserGNU Emasen ompleterla n.
3.2.4 Communiation pleine page
Certains modes aÆhent dans le buer une liste de hoix, parmi lesquels il est possible de se
deplaer, et sur lesquelsil est possible d'ativer des ommandes. C'est par exemple le as du mode
diredharge parlaommande diredliee aC-x det permettant d'editerleontenud'un repertoire.
Chaque ligne ontient le nom d'un hier du repertoire. Il est possible de se deplaer de ligne
en ligne, de marquer les lignes ave des ommandes (delete, rename...), d'en laner l'exeution, de
hargerun autrerepertoire ou un hier(find etvisit),et.
A esmodessontassoieesdeskeymapstrespartiulieres.Enpartiulier,lesarateres aÆhables
ne sont plusliesala ommandeself-insert-ommand.
3.3 Contr^ole de l'environnement
3.3.1 Modes majeurs et modes mineurs
Chaque buerestliea un mode enore appele mode majeur. Le mode majeur pardefautest le
mode fundamental-mode.Ilyaplusieursfaonsde plaerun buerdansun mode partiulier:
1) en hargeant dans e buerun hierdontle suÆxeest impliitementassoie a un mode:
{ . .h: modesCou C++
{ .sm:mode Sheme
{ .el :mode EmasLisp
2) en ativant expliitemente mode aumoyende laommande d'appelde e mode:
{ M-x -mode
{ M-x sheme-mode
{ M-x emas-lisp-mode
{ M-x text-mode
{ M-x nroff-mode
3) en utilisant uneommande assoiee a unmode:
{ C-x C-b:mode Buffer Menu(menudesbuers)
{ M-x dired:mode dired(editionde repertoire)
{ M-x rmail:mode rmail(letureetenvoi de ourriereletronique)
Il existeegalement desmodes mineurs, ombinablesave un mode majeur, pour en parametre
leomportement:
{ auto-fill-mode
{ auto-save-mode
Chaque mode estdeni parunprogrammeEmas Lisp,harge etexeute parGNUEmas . Ilest
possibleparonsequentpossibledeprogrammerde nouveaux modes.Lesprogrammes EmasLispde
3.3.2 Valeur et modiation des variables
Le omportement de GNU Emasest parametre parun ensemblede variables, pouvant^etre
{ globales:ommunesa tous lesbuers;
{ loales:assoieesa un buer,etdonvisiblesseulement danse buer.
Parexemple,lavariable-auto-newlineestglobale,etutiliseepartouslesbuersenmodeC.Par
ontre, lavariable default-diretoryest loale ahaque bueret ontient le hemindu repertoire
ourant.
Une denitionloale masque ladenitionglobale d'une variable de m^eme nom. Par exemple, la
variable globale ase-fold-searhpeut^etre redenie loalementdans unbuer.
Certainesommandes modie impliitement la valeur d'une variable.Parexemple, laommande
ompile, qui lane une ompilation dans un buer de nom *Compilation*, exeute a ommande
ontenue dans la variable ompile-ommand. Il est possible de valider ette ommande par defaut
en tapant simplement RETURN, ou d'entrer une nouvelle ommande quidevient la valeurourantede
ompile-ommand.
On peut examiner le ontenu d'une variable gr^ae a la ommande desribe-variable liee a
C-h v.Onpeutobtenirlalistedetouteslesvariablesenprovoquantuneompletiondenomdevariable
apartir dumot vide:
M-x C-h v SPC
La ommande set-variablepermet de modierle ontenu d'une variable.La ommande edit-
-optionsouvreunmoded'interationpleine-page,lemodeoptions,permettantdemodierlavaleurs
desvariablesourantes.
3.3.3 Denition de nouvelles fontions
3.3.3.1
Elementsde EmasLisp
Ilya deuxfaons de denirunenouvellefontion:
1) ennommant unemaro-lavier:
M-x name-last-kbd-maro Name for last kbd maro: hnomi
2) enerivant unefontionLisp:
(defun hnomi (hliste de par:i )
"hdesription"i
(interative hmode d 0
interationi)
)
Voiiquelquesunes desommandes EmasLisputilisablessousGNU Emas:
{ setq:aetationd'une variable;
{ let:delaration etinitialisationd'unevariableloale;
{ if while < <= > >= =:miseen oeuvrede testsetde boules;
{ format:formatage d'uneha^ne de arateres;
{ insert-string:insertion d'uneha^ne dearateredans lebuer;
{ point:valeurdu point;
{ forward-har,bakward-har,beginning-of-line,next-line...:touteslesommandespre-
denies;
{ define-key:redenitiond'unele (argument:unekeytab);