• Aucun résultat trouvé

sh bash

N/A
N/A
Protected

Academic year: 2022

Partager "sh bash"

Copied!
86
0
0

Texte intégral

(1)

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

(2)
(3)

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

(4)
(5)

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.

(6)
(7)

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

(8)

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

(9)

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

(10)
(11)

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);

(12)

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.

(13)

{ 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

(14)

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

(15)

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

(16)

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

(17)

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

$

(18)

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

(19)

$ 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

(20)

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

(21)

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.

(22)

{ 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:

(23)

{ 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

(24)

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.

(25)

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

(26)

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

(27)

{ 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

(28)

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

(29)

{ /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

(30)

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

(31)

{ 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

(32)

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

(33)

{ 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: ~)

(34)

[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

(35)

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

(36)

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.

(37)

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

(38)

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

(39)

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

(40)

{ 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

(41)

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);

Références

Documents relatifs

n Juveniles consume plankton, adults are carnivorous (insect larvae, crustaceans, worms and small molluscs, fish roe and larvae). n Sexual maturity is attained at the age of 3 to

Bonus Notre résumé a été bien compris par un autre groupe qui ignorait les

Bonus Notre résumé a été bien compris par un autre groupe qui ignorait les

1) Features, being a very short description of the major facilities of SDOS. 2) Concepts, section where simple definitions throughout the rest of the manual are

[r]

La Cystéine est la molécule qui appartient à la famille des acides -aminés car un carbone porte les deux fonctions -COOH caracté- ristique des acides carboxyliques et -NH 2

La calculatrice est autorisée mais d’usage personnel Chacun doit avoir son propre matériel.. Calculer CO

La calculatrice est autorisée mais d’usage personnel Chacun doit avoir son propre matériel.. Calculer CO