new cours linux

79
Cours Linux version 0.0.9 Année Académique 2001-2002 Auteurs : Frédéric BURLET, Fabian BASTIN, Christophe CHISOGNE, Avec l’aide du NamurLUG c Copyright 2000-2001 Ce document est sous licence OpenContent.

Upload: assopapou

Post on 29-Nov-2015

65 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: New Cours Linux

Cours Linuxversion0.0.9

AnnéeAcadémique2001-2002

Auteurs:FrédéricBURLET,FabianBASTIN,ChristopheCHISOGNE,Avecl’aide du NamurLUG

c�

Copyright 2000-2001CedocumentestsouslicenceOpenContent.

Page 2: New Cours Linux

Tabledesmatières

1 Intr oduction 8

1.1 À proposdu cours. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2 À proposdecedocument. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3 Qu’est-cequeLinux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3.1 D’où vientLinux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4 Linux, le systèmed’exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.4.1 Lessystèmesd’exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.4.2 Linux, et lesautresOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.4.3 Linux, un OSviable? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.5 Linux, plusqu’unOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.5.1 LogicielstournantsousLinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.5.2 Linux vs GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6 GNU/Linux, au-delàdu technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6.1 Logicielslibres,opensource,licences . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.7 PourquoiLinux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.8 Où chercherdel’aide? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.8.1 Sursondisquelocal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.8.2 Sousformenonélectronique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.8.3 SurInternet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2 Lescommandesutiles 16

2.1 Un peudethéorie... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.1 Notion desystèmedefichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.2 Quelquesremarquespréliminiaires. . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2 Plusd’aide! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2

Page 3: New Cours Linux

CoursLinux - Namur-LUG 3

2.3 Opérationssurlesrépertoires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3.1 Lister lesfichiersd’un répertoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3.2 Créerun répertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3.3 Supprimerun répertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3.4 Afficherle répertoirecourant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3.5 Changerderépertoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3.6 Espaceoccupéparun répertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4 Opérationssurlesfichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4.1 La copiedefichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4.2 Déplacement/Renomagedefichiers . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.4.3 Effacementdefichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.5 Commandespluscomplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.5.1 Comparerle contenudedeuxfichiers . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.5.2 Concaténationdefichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.5.3 Chercherun fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.5.4 Chercheruneexpressiondansunfichier . . . . . . . . . . . . . . . . . . . . . . . . 26

2.6 Lespagers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.6.1 less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.6.2 more . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.7 Accèsàd’autresdisques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.7.1 Monterunsystèmedefichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.7.2 Démonterunsystèmedefichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.7.3 Espaceoccupéd’unepartition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.8 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.9 L’arborescencedu systèmeLinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3 L’inter prèteur decommande: BASH 31

3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2 Le mécanismedesalias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.3 Redirectionet filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.3.1 Redirectiondela sortiestandard. . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3.2 Doubleredirectiondesortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3.3 Redirectiond’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Page 4: New Cours Linux

CoursLinux - Namur-LUG 4

3.3.4 Combinaisonderedirections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.5 Redirectiondeserreurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.6 Redirectiondela sortiestandardetd’erreur . . . . . . . . . . . . . . . . . . . . . . 34

3.3.7 Lesfiltres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.3.8 Relierlescommandesparun tube . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.3.9 Principalescommandesdefiltre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.4 Regroupementdecommandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.5 Lessubstitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.5.1 La substitutiondecaractères. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.5.2 La substitutiondecommande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.5.3 Lescaractèresd’échappement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4 Leséditeurs : Emacset vi 39

I L’éditeur vi 40

4.1 Édition detextessousLinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.1.1 Qu’est-cequevi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.1.2 Fonctionnalitésdevi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.1.3 Casoù vi estparticulièrementadapté . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2 Conceptsdebasesousvim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2.1 Edition defichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2.2 Modesutilisésparvim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2.3 Changerdemode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.2.4 Commentsortir devim ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.2.5 Principesgénérauxdevim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.3 Utilisation basiquedevim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.3.1 Commandesdedéplacement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.3.2 Commandesdechangementdemode . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3.3 Commandesdesuppression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3.4 Commandesdemodification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3.5 Commandes”Fichiers” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3.6 Commandescouper-copier-coller . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.4 Commandesplusavancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.4.1 Rechercheset remplacement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Page 5: New Cours Linux

CoursLinux - Namur-LUG 5

4.4.2 Sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.4.3 Colorationsyntaxique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4.4 Insertiond’un autrefichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4.5 Lancerun sous-shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4.6 Edition multi-fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

II L’éditeur emacs 48

4.5 Descriptiondela bête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.6 Commandesd’éditionélémentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.7 Editerplusieursfichiersà la fois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.8 Terminerunesession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.9 Copier, coller, supprimerdespartiesdetexte . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.10 Chercheret remplacerdesexpressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.10.1 Chercheruneexpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.10.2 Chercheret remplaceruneexpression . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.11 Répéterunecommandeetannulerunecommande. . . . . . . . . . . . . . . . . . . . . . . 52

4.12 Lescommandesexplicites: M-x <commande-explicite> . . . . . . . . . . . . . . . . . . . 52

4.13 Lesmodesenemacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.13.1 Le modefondamental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.13.2 Lesmodesdeprogrammation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.14 L’aideenligne : C-h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5 Administration 54

5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.2 Commandesdegestiongénérale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.2.1 Passerensuperutilisateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.2.2 Redémarrer/arrêterle système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.3 Gestiondesutilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.3.1 Un peudethéorie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.3.2 Ajouter unnouvel utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.3.3 Enlever un nouvel utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.3.4 Changerle mot depasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.4 Gestiondesgroupes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.4.1 Un peudethéorie.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Page 6: New Cours Linux

CoursLinux - Namur-LUG 6

5.4.2 Ajouter ungroupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.4.3 Supprimerun groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.4.4 Ajouter unutilisateurdansun groupe . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.4.5 Supprimerun utilisateurd’un groupe . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.5 Lespermissionsd’accès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.5.1 Un peudethéorie.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.5.2 Changerlespermissionsd’accès. . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5.5.3 Changerdepropriétaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.5.4 Changerdegroupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.6 Gestiondesprocessus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.6.1 Un peudethéorie.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.6.2 Lister lesprocessus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.6.3 Tuerunprocessus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.7 Installeretdésinstallerdesprogrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.7.1 La notiondepackage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.7.2 (Dés)installerdespackagesRPM . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Page 7: New Cours Linux

Remerciements

Mes remerciementsaux gensdu NamurLUGpour leur soutienlors de la rédactionde ce document.Plus

particulièrement,àFabianBASTIN pourla rédactiondel’introductionetpoursesremarquestoujoursaussi

judicieuses,à ChristopheCHISOGNEpour sonexpertiseen vi et sesconnaissancestant philosophiques

qu’ historiques,et à FrançoisSCHOUBBENpoursesrelectureset sesconseilsenmatièredestructuration.

Jevoudraisremercierégalementtousles gensqui s’occupentde la rédactiondespagesde manuelet info

qui documententle systèmelinux etqui sonttoujoursunesourced’informationsinépuisable.

Page 8: New Cours Linux

Chapitr e 1

Intr oduction

1.1 À proposdu cours

Ce courssur GNU/Linux estorganisépar le kot Linux, en collaborationavec le NamurLUG. Le kot Li-

nux est un kot à projet desFacultésUniversitairesNotre-Damede la Paix de Namur (http://www.

fundp.ac.be ), qui a vu le jour début septembre2000.Le Namur LUG1 est un grouped’utilisateurs

de GNU/Linux à Namur, fondédansle courantde l’année1999,et sousl’influence duquelestnéel’idée

de créerun kot à projet consacréà GNU/Linux. Vouspouvez consulterle site web du LUG, à l’adresse

http://namurlug .o rg .

Cecoursa pourobjectif devousinitier à GNU/Linux. Il estdestinéplutôt auxinformaticiens(étudiantsou

professionnels)qu’au grandpublic. En effet, GNU/Linux demandeun investissementnon négligeableen

termedeformationpourprofiterpleinementdesapuissanceet desasouplesse.

Dansun premiertemps,nousvousprésenteronsbrièvementla philosophieGNU/Linux et sesenjeuxsous-

jacents.

L’apprentissagedusystèmeGNU/Linux passeavanttoutparuneconsultationdesadocumentationintégrée,

c’estpourquoi,nousvousdonneronslesmoyensd’accéderà toutecettedocumentation,avantd’entrerdans

le vif du sujet.

Nousaborderonsensuitedesaspectsplustechniques,enexpliquant,la descriptiondequelquescommandes

utiles,suiviesparquelquespetitesnotionsconcernantl’interpréteurdecommandeBASH. Nousaborderons

égalementla descriptiondel’arborescencedesrépertoiresdu systèmeGNU/Linux ainsiqu’unpeud’admi-

nistration.

Il nenousétaitévidemmentpaspossibled’expliciter chaqueaspectdeGNU/Linux.

GNU/Linux sedéveloppetellementrapidementet esttellementvastequ’un simpletutorial nesuffirait pas

pourexpliquercemerveilleuxOSenentier. D’ailleurscertainspuristesrisquerontd’êtreheurtésà la lecture

de ce document.Nous nousen excusonsd’avance.Le but du documentest de fournir une introduction

simple,sansentrerdanstropdetechnique.Parconséquent,plusieursraccourcisontétévolontairementpris.

Si desquestionspersistent,n’hésitezsurtoutpasà lesposersurnotreforum http://namurlug .o rg /

forum .1NamurLinux UserGroup

8

Page 9: New Cours Linux

CoursLinux - Namur-LUG 9

1.2 À proposdecedocument

Signalonségalementquecedocumentaétérédigépourservirdesupportauxformationsdonnéesàl’Institut

d’InformatiquedesFacultésdeNamur. Il a étéentièrementécrit enLATEX. Nousavonségalementchoiside

mettrecedocumentsousLicenceOpenContentversion1.0ouultérieure.Cettelicencevousdonnela liberté

demodifiercedocument,del’utiliser et dele redistribuer. Pourplusdedétailconcernantcettelicencevoir

la copie en fin de syllabus ou encorevisitez http://www.ope nc ont ent. or g/ opl .s ht ml . Vous

pouvez avoir accésauxsourcesde cedocumentainsiqu’uneversioncompiléesur le sitedu NamurLUG

(http://namurlug .or g/ ), rubrique’plat du jour’.

Le présentdocumentn’a paspour vocationd’être statique,maisd’être en évolution constante.Toutesre-

marques,suggestions,correctionspeuventêtreenvoyéesà FrédéricBurlet ([email protected] g) ou à

FabianBastin(slashbin@namur lug .o rg ) ou encoreà ChristopheChisogne(chichi@namurlug .

org ).

1.3 Qu’est-cequeLinux ?

Depuis1999environ, on entendbeaucoupparlerdeLinux, y comprisen-dehorsdu mondedesinformati-

ciens.Mais qu’est-cequec’estexactement,Linux ?

”Linux” est unemarquedéposéepar Linus BenedictTorvalds,soncréateur. Du point de vue technique,

Linux n’estriend’autrequ’unsystèmed’exploitation,un”operatingsystem”particulier. Nousutiliseronsle

termeabrégé”OS” pournousréférerauxsystèmesd’exploitation.D’un point devuenontechnique,Linux

estunphénomènenouveau,parfoisdérangeant,qui risquebienderévolutionnerl’informatique.

Au départ,Linux étaitunOSdetypeUnix, maisdevanttournersurplateformePCplutôtquesurdesstations

detravail. Aujourd’hui,Linux estdevenuunOScomplet,puissant,rapide,d’unestabilitéetd’unerobustesse

qui n’ont rienàenvier auxplusgrandsOSconnus.

1.3.1 D’où vient Linux ?

Mais d’où provient doncLinux ?Pourle savoir, il fautseplongerdansle volet historique,en1991.

Cetteannée-là,un petit étudiantfinlandaisétudiait les OS à l’universitéd’Helsinki, en sebasantsur Mi-

nix, un systèmed’exploitationpédagogique,formedérivéeet simplifiéedesUnix commerciaux,conçupar

Andrew Tannenbaum.Minix étaitgratuit,et soncodesource,disponible.

Cet étudiants’appelaitLinus BenedictTorvalds.C’était un informaticienbrillant et curieux.Sesparents

venaientdelui acheterle nouveauPCdernier-cri de l’époque,un splendideAT-386.Linus Torvaldsn’était

intéresséque par dessystèmesde type Unix, mais ceux-ci était hors de prix. Le DOS prédominaitsur

les architecturesPC, maisne pouvait satisfaire les dessainsen Linus Torvalds.Minix, écrit depuis0 par

Tannenbaumet tournantsur lesprocesseurs8088,étaitdèslors le seulpoint dedépartvalable.Torvaldsse

mit doncautravail enréécrivantetenétendantMinix pourlesplateformesi386.

La mêmeannée,en1991,un certainTim BernersLee,auCERNdeGenève, inventaitle World Wide Web,

le désormaisomniprésentWWW. Lesdeuxévénementsont convergé.Linus travaillait sursonsystème,qui

allait devenir Linux. Mais il avait adoptéuneméthodede travail horsdu commun: il publiait l’entièreté

Page 10: New Cours Linux

CoursLinux - Namur-LUG 10

de son travail (le codesourcede Linux) sur Internet.Plus fort encore,il invitait chacunà participerau

développementdeLinux !

Linux a doncétédéveloppésur le net,pardenombreuxinformaticiens.Le premiernoyauLinux stableest

sorti en1991.

1.4 Linux, le systèmed’exploitation

Linux estunsystèmed’exploitation.Parmisescaractéristiques:

– multitâche: on peutfairetournerplusieursprogrammesenmêmetemps,

– multi-plateformes: on le trouve surtout typedemachine,

– multi-utilisateurs: plusieursutilisateurspeuventseconnecterenmêmetemps,

– respectdela normePOSIX.

Il estenoutreadaptable,cequi expliquequ’on le retrouve actuellementdeplusenplusdansle mondede

l’embarquéetdesPDA.

1.4.1 Lessystèmesd’exploitation

1.4.2 Linux, et lesautresOS

Linux n’estévidemmentqu’unOSparmid’autres,certainsétantorientésgrandpublic (DOS,Windows 9x,

Windows ME, BeOS,MacOS,...),d’autresayantunevocationplus professionnelle(BSD, Windows NT,

SunOS,...).

Linux ne se distingueguèredesautresUnix, puisqu’il s’agit en fait d’un clone desUnix traditionnels.

Néanmoins,le faible coût de revient et la grandeportabilitéde Linux lui ont accordéun succèsqu’aucun

Unix propriétairen’avait connujusqu’ici.

1.4.3 Linux, un OS viable?

UnedesgrandesforcesdeLinux reposesursastabilitéqui, dansle mondedesserveurs,semesurenotam-

mentpar l’ uptime, c’est-à-direle tempsavant lequelle serveurseraplanté.Alors qu’il estcourammentde

l’ordre de40 jourspourun systèmeWindows NT, il n’estpasrared’avoir un uptimeoscillantentre1 anet

2 anpourun systèmeLinux.

S’il estfiable,Linux n’en estpasmoinsperformant.Ainsi, Silicon Graphicscommenceà vendredesma-

chinessousLinux, et tantl’US Air Forcequela NASA, utilisateurscritiquess’il s’enfaut,font confianceau

systèmeaupingouin.

Page 11: New Cours Linux

CoursLinux - Namur-LUG 11

1.5 Linux, plus qu’un OS

1.5.1 Logiciels tournant sousLinux

Contrairementàcequecertainspourraientpenser, la logithèquesousLinux esttrèsriche.La principalerai-

sonestla compatibilitéUnix deLinux, permettantunportagefaciledenombreusesapplications.L’exemple

le plus frappantestsansdoutel’environnementgraphiqueX-Window. Les secteursles mieux représentés

suivent dèslors le courantUnix, c’est pourquoiLinux estféconden applicationsréseau,et estuneplate-

forme de développementde premierchoix. Linux estégalementfort présentdansle mondescientifique,

depuisleslogicielsdecompositioncommeLATEX, auxoutilsmathématiques(Scilab,gnuplot,...),enpassant

pardiversoutilsdesimulation.L’utilisation deLinux pardesorganismestelsquela NASA illustrecephéno-

mène.La paternitéUnix expliqueégalementla faiblessedeLinux danslesapplicationsdetypebureautique,

traditionnellementdéveloppéespourdesenvironnementspluspopulaires.Cedernierpoint tendnéanmoins

àdisparaître.

1.5.2 Linux vsGNU/Linux

Certainsrefusentle termeLinux s’il n’estpasaccompagnédeGNU. Derrièrecemotsecachele projetdela

FreeSoftwareFoundation(http://www.gnu. org ) defournir un systèmeinformatiquelibre. Ceprojet

aétéinitié en1984,annéedefondationdela FSF. Le premiertravail aconsistéenla réécrituredesutilitaires

Unix debase,qu’il s’agissedel’interpréteurdecommandesou du compilateurC. Linux a fourni le noyau,

maisil est inexploitableseul.C’est de la réunionde cesdifférentstravaux qu’estné le systèmequevous

utilisez.L’inclusiondu termeGNU apourbut derappelerqueLinux neseraitriensansle travail dela FSF.

Bienquenousadhérionsàcetesprit,nousemploieronsfréquemmentle termeLinux aulieu deGNU/Linux,

pourplusdefacilité.

1.6 GNU/Linux, au-delàdu technique

1.6.1 Logiciels libr es,opensource,licences

L’inclusiondesutilitairesGNU à Linux a eupourconséquenced’incorporerla philosophiedéfendueparla

FSF. Linux estissud’un modededéveloppementouvert, Linus Torvaldsayantsoumissoncodeaunet.La

FSFa formalisécetyped’approchedansla notiondelogiciel libre, dontlesidéessontlessuivantes:

– libertéd’utiliser le logiciel ;

– accèsaucodesource;

– possibilitédemodifierle code;

– libertédediffuserle programme,avecousansmodifications.

Desvariantesdu conceptde logiciel libre sontapparues,dont la plus importanteest le mouvementopen-

source(http://www.open sou rc e. or g).

Page 12: New Cours Linux

CoursLinux - Namur-LUG 12

1.7 Pourquoi Linux ?

ChoisirLinux nerelèvepasduhasard; entantqu’OS,il afait sespreuvessurle plandela performanceetde

la stabilité.C’estunOSpropiceàrecevoir deslogicielsdegrandequalité,lesquelssontd’ailleursnombreux.

Enfin, Linux est aussiun modede pensée,une philosophiequi se démarquede la logique économique

classique,pourfaireplaceà l’ouvertureet aupartagedel’information.

La puissancedeLinux aunprix : celled’unecomplexité plusgrande,nécessitantuneffort certain.Heureu-

sement,Linux jouit d’unedocumentationconséquenteet dequalité.

1.8 Où chercher de l’aide ?

La règledebasesousLinux estuninvestissementpersonnel.L’accentdansle mondeLinux estmissurl’effi-

cacité,audétrimentdu caractèreintuitif. Pourtirer partideLinux etdeslogicielsqu’il hébèrge,l’utilisateur

seraamenéàconsulterparlui-mêmelesdocumentationset manuelsfournis.

L’utilisation optimaled’un systèmeLinux, pourdesinformaticiens,requièrebienplusdeconnaissancesque

pourd’autressystèmes.Plusieursfacteursexpliquentla nécessitéimposéeauxutilisateursexigeantsdebien

seformer.

Un premierfacteurest le caractèrehautementcontrôlable,adaptable,paramétrabled’un systèmeLinux :

toussesaspectssontsusceptiblesde faire l’objet demodifications.Cettepossibilitéestparfoisfondamen-

tale,voire critique,danscertainsdomaines.Mais un contrôletrèsfort exige de bien connaîtreun nombre

éventuellementpharaoniquedechoix,d’optionsdeconfiguration.

La maîtrised’un systèmeestproportionnelleautempspasséà le dompter. SousLinux, la courbed’appren-

tissageestassezlenteaudébut, ets’accélèreensuiteassezvite.Biensûr, lesutilisateurstravaillantsousUnix

depuisdesannéesontun avantageénormesurceuxqui viennentd’un mondenonUnix.

Un autrefacteurdéterminantestla façondontle systèmeconsidèresesutilisateurs.SousLinux, l’utilisateur

estconsidérécommeintelligent et sachantce qu’il fait, quoi qu’il demande(y comprisla suppressiondu

système).Les gardes-foussontmoinsnombreuxqu’ailleurs.L’utilisateur a donc largementintérêtà bien

connaîtresonsystème,parcequecederniernel’empêcherapasdefairetoutetn’importequoi.

En bref, un utilisateurde Linux estappeléà seformer, et souvent à s’auto-former. C’est un desprincipes

fondamentauxde l’utilisation de Linux : il faut chercher, grattersoi-mêmepour trouver les informations

quel’on recherche.Leseffortssontrécompensésparuneconnaissancecroissantedusystème,qui peutaller

jusqu’aucodesourcedu noyau,voireplusloin encore...Quelavantage,dupoint devue”pédagogique”!

La formation,c’est bien joli. Encorefaut-il savoir où trouver de l’aide. En effet, Linux est un système

professionnelcomplexe.Devantl’immenseétenduedespossibilités,on peutvite s’y perdre.Voici quelques

pointsde repèredansle paysageLinux. Quasimenttoutesles questionsquel’on peutseposertrouveront

réponsedansundesendroitssuivants.

1.8.1 Sur sondisquelocal

L’endroit le plusrapide,c’estsurle systèmelui-même,àsavoir surun disquedurdesamachine.

Page 13: New Cours Linux

CoursLinux - Namur-LUG 13

La commandeman

Une descommandesles plus souvent utiliséespour chercherde l’aide est la commandeman. Man est

l’abréviationde”manual”.Lesmanuelsinformatiquessurpapierétantvolumineuxetcoûteux,ils sontfour-

nis sousformeélectronique.Dansle mondeLinux/Unix, c’estla commandemanqui sertà la consulter. La

syntaxe esttrèssimple.Parmi lesformeslesplusutilisées:

– man xxx

Ceciaffichedel’aide àproposdela commandexxx , écranparécran.

– man -a xxx

Mêmechose,maiscettefois la recherchenes’arrêteplusaupremier”manuel” trouvé.C’estutile dansle

casoùunecommandefait partiedeplusieursmanuels(comme”printf ”)

– man n xxx

Le n indiquele numérodemanueloù chercherla documentation.

– man -t xxx � lpr

Avec cettecommande,l’aide est convertie au format postscriptet envoyée à l’imprimante par défaut

(souventuneimprimantelaser, pourunequalitéirréprochable).

– man man

Pourlespluscurieux,cettecommandeaffichedel’aide surla commandeman.

Poursortir d’une pageman,il suffit d’appuyersur la lettre q. Pourplus d’informationsconcernantcette

commandereportez-vousaupoint 2.2page17.

La commandeInf o

Un autreformatdedocumentationqui esttrèsrépanduestle format”info”. C’est le formatdebaseutilisé

pourdocumenterla plupartdesutilitairesdebasedu système.Souvent, la docexistesousforme”man” et

”info”, maisla secondeformefait foi encasdelitige, et la premièrepeutêtreancienneet nonmaintenue.

Le format info estun format texte. Il a la particularitéd’autoriserunenavigation(via deshyperliens)dans

le documentd’aide,et celasousformelinéaire(commeun livre) ou hiérarchique(enarbre).La commande

permettantdelire (et naviguer)danslesdocumentsinfo estnaturellementla commandeinfo.

La commandeinfo s’utilise commela fonctionman,dansla mesureoù l’aide auformat info surunecom-

mandexxx estaffichéeparla commande

info xxx

Pourplusd’informationssur cettecommandeinfo, le réflexe de taper”man info” n’estguèresatisfaisant.

Mais commela docinfo estdisponibleauformatinfo, il suffit detaper

info info

pourapprendreà l’utiliser : enappuyantensuitesur la toucheh, on arrive mêmesurun documentinfo de

type”tutoriel”. Diversaspectsdecettecommandesontprésentésà la section2.2page18.

LesHOWTO, FAQ et autres/usr/doc

Une autresourceextrêmementintéressanteet instructive se trouve dansl’arborescenceusr/doc . On y

trouve pêle-mêlelesHOWTO, FAQ, guides,documentationsspécifiquesàun logiciel.

Page 14: New Cours Linux

CoursLinux - Namur-LUG 14

LesFAQsontlesquestionsfréquemmentposées(FrequentlyAskedQuestions),accompagnéesde leur ré-

ponses,et groupéespar thèmes.Il est trèsutile (pour ne pasdire indispensable)de lire les FAQavant de

poserunequestionsurle web: si elle adéjàétéposée50 fois et qu’uneréponsesetrouve danslesFAQ, on

courtle risquederecevoir uneréponsenerespectantpastouteslesrègledepolitesse.

LesHOWTOsontdesdocumentsconcernantun sujetprécis,et qui peutrecouvrirplusieurscommandes.Il

existe par exempleun Sound-HOWTOconsacréau systèmeaudiode Linux. Les HOWTOsontrassemblés

surle sitedu LDP, le Linux DocumentationProject(http://www.linu xd oc .o rg ).

Il existe égalementquelquesdocumentsplus importants(de l’ordre de plus d’une centainede pages).Ils

abordentdesthématiquespluslargesencore,tellesquel’administrationsystèmesousLinux. Cesdocuments,

appelésguidesen anglais,sontégalementdisponiblessur le site du LDP. Ils setrouvent égalementsur le

disquelocal desbonnesdistributionsLinux, mêmesi la plupartnelesproposenthélaspas.

Pourdesaidesconcernantun seullogiciel, uneseulecommande,uneaidetrèsspécifiqueestgénéralement

disponibleun sous-répertoirede /usr/doc . Ainsi, le documentconsacréau logiciel debootLILO (pour

LInux LOader),setrouvedans/usr/doc/lilo/ Manual. tx t. gz , ouquelquechosedetrèssimilaire.

Le codesource

La documentationultime d’un logiciel estbien entendusoncodesource.C’est la référencela plusfiable,

carlesdocsnesontpasforcémentbientenuesà jour. Ainsi, il arrive quedesoptionsdeligne decommande

soientrenommées,ignoréesou supprimées,alorsquela documentationy fait encoreerronémentallusion.

La documentationétantgénéralementle parentpauvredesprogrammeurs,il arrive mêmeparfoisqu’elle

n’existe pas.Le codesourceestalorsla seuleréférence.Sur les canauxtrèsspécialisés,et seréférantà la

sériecultedela guerredesétoiles,lesinternautesLinuxiensconfirmésaimentà répondreun vibrant”Read

TheSource,Luke” auxquestionspouvantêtrerésoluesdecettemanière.

1.8.2 Sousforme non électronique

La documentationn’existe pasquesousforme électronique.Il existe de bonslivres trèsbien faits. Nous

vousrecommandonsleséditionsO’Reilly, pourleursnombreuxouvragesdequalitéconsacrésauxsystèmes

Unix/Linux.

Lesêtrehumainssontégalementunesourced’informationtrèsappréciée.Aprèsavoir pris connaissancede

documentset n’avoir pastrouvéderéponse,il estsansdoutepossibledecontacterun copain,uneconnais-

sance,voire mêmeun ”guru” localqui accepteraitd’éclairerunelanterne.

Enfin, sachantque le supportestun critèredéterminantpour de nombreusessociétés,il existe encorela

possibilitédesouscrireà uneformuledesupport/helpdeskauprèsd’unesociété.LesdistributeursLinux le

font deplusenplus,commeRedHat,Mandrake ou SuSE,qui proposentuneaidepartéléphoneoumail.

Bienentendu,cesupportestsouventpayant.Maiscen’estpaschoquantdansle mondedu logiciel libre, au

contraire.Les servicessontunedesmanièresde gagnerde l’argentgrâceaux logiciels libres,en fournis-

santdesélémentsde valeurajoutée.D’autresmoyenssontla ventede documentation,de livresreliés,les

formations,lescertifications,etc.

Page 15: New Cours Linux

CoursLinux - Namur-LUG 15

1.8.3 Sur Inter net

Linux estnéenmêmetempsqu’Internet,ets’estdéveloppéparallèlement.Lessitesle concernantsontdonc

nombreux; parmilesplusintéressants,citons:

– linuxdoc.org : le sitederéférencepourrechercherdela documentation;

– freshmeat.net : siteréférençantlesapplicationssousLinux ;

– lealinux.free.f r : desdocumentationsdiverses,enfrançais;

– linuxprinting.o rg : siteconsacréà l’impressionsousLinux ;

– linuxfr.org : pourconnaîtrelesdernièresnouvellessousLinux, enfrançais;

– traduc.org : traductiondedocumentation;

Nousvousinvitonségalementàprofiterdesservicesofferts: mailing-lists,forums,IRC,...Vousy trouverez

généralementles réponsesà vos questions.Néanmoins,avant de vousy aventurer, apprenezles règlesde

basede la netiquette,souspeinede recevoir desrépliquesassezpeuobligeantes.En particulier, évitezde

poserunequestiondontla réponsesetrouve déjàdansuneFAQ.

Page 16: New Cours Linux

Chapitr e 2

Lescommandesutiles

2.1 Un peude théorie...

2.1.1 Notion desystèmede fichiers

Avantd’aborderlescommandesutiles,nousallonsexpliquer lesnotionsdesystèmedefichiers,defichiers

etderépertoiresparfoismalcompriseparlesdébutants.Si vousmaîtrisezdéjàbiencesnotions,vouspouvez

passercettesection.

Lorquevousenregistrezdesdonnéessur un support(par exemple,le disquedur), ellessontrangéesdans

unestructurequel’on appellesystèmede fichiers. Le systèmede fichiers estdoncun objet sur le support

permettantd’y structurer, d’y rangerdesdonnées.Le systèmedefichiersutilisé parLinux estl’ ext2, sous

Windows9x le systèmedefichierestdu typeFAT16 ouencoreFAT32. Il existeplusieurstypesdesystèmes

defichiers: chacunétantcaractèriséparsapropremanièrederanger, d’organiserlesfichierssurunsupport.

Avantdepouvoir mettredesdonnéessurunsupport,vousdevezaupréalablele formater. Formater unsup-

portsignifiele découper, le partagerafinquel’ordinateurpuissey repérersaposition,savoir où il setrouve.

Mais cen’estpasparcequel’ordinateursait serepérerqu’il sait commentil doit écrirelesdonnéessur le

support,ni commentlesrangerefficacement.C’estpourquoiaprèsavoir formaterle supporton ’installe’ un

systèmedefichiersqui nouspermetterade rangeret, également,d’accéderauxdonnées.Lesdonnéesque

l’on écrit surle disqueou quel’on rangedansle systèmedefichierssontappeléesfichiers. On endistingue

plusieurstypesdontlesrépertoireset lesfichiers dedonnées. Lessystèmesdefichierspermettentderanger

lesfichiersgénéralementsousformed’arbreet ce,demanièrecomplexe. Un arbre(en informatique)peut

êtreconsidérécommeun arbrehabitueldont les intersectionsentrelesbranchess’appellentlesnoeuds, les

feuillesdesfeuilleset lesbranchesdesbranches. Dansunsystèmedefichierslesnoeudssontlesrépertoires

et les feuilles,desfichiers.Chaquenoeud(répertoire)estpère(contient)de feuilles(desfichiers).Les ré-pertoires peuvent être considérés comme des tiroirs dans lesquels on range des fichiers. Parabus

delangage– je devrai plutôtdire : pardéfinition– lesrépertoirescommelesfichiersdedonnéessontappe-

lésfichiers. Un répertoireestun fichier particulierpossédantdescaractèristiquespropres.Par conséquent,

quandnousutiliseronsle termefichier, nousparleronsdesfichiersdedonnéeset desrépertoires.

Notes: pourlesgensqui connaissentdéjàle systèmeZindow$ deMicrosoft,nouspouvonsdirequ’unrépertoireestundossierdans

lequelon y rangedesfichiers.

16

Page 17: New Cours Linux

CoursLinux - Namur-LUG 17

2.1.2 Quelquesremarquespréliminiair es

Quelquesrèglessontà respecterlorsquevousintroduisezvoscommande:

1. Séparerlesdifférentsmotspardesespaces.Ainsi lorsdela saisiedecd.. pourdescendredansl’arbo-

rescencederépertoire,il estimpératifquevousmettiezun espaceentrecd et ..

2. Le shellestsensibleà la casse.Vérifier doncbienà tapezvoscommandesendistinguantminuscules

et majuscules.

3. Lesautresmotsfaisantpartiede la commandesontdesparamètres. Un paramètreestunechainede

caractèrespasséeà unecommandedansle but d’obtenirun résultatspécifique.Cesdernierspeuvent

commencerparun tiret (-), on parlealorsd’options,sinon,il s’agit d’arguments.On distinguedeux

typesd’options: les optionscourteset les optionslongues. Les optionscourtessont les chainesde

caractèrescommençantpar un tiret (- ) et les optionslonguessont cellesqui commencentpar un

doubletiret (-- ). Lesoptionssontutiliséespourdiriger le résultatdela requête.Lesargumentsquant

à eux sonten généralles nomsde fichierspassésen paramètrede la commande.Généralement,les

commandesadmettentquel’on utilise plusieursoptionset plusieursargumentssurunemêmeligne.

Signalonsquelesoptionscourtespeuvent êtreregroupéesentreelles.Par exemple,la commandelsquenousverronsplustardadmetentreautrelesoptions-a , -l et -h . Ainsi aulieu d’écrire ls -a

-l -h , le regroupementvouspermetd’écrire ls -alh .

2.2 Plusd’aide !

Unebonneutilisationd’un systèmeLinux passetout d’abordparunebonneconnaissancedescommandes

console.Certes,toutesles commandesne serontpasdécritesvu leur nombre.Nous vous présentonsci-

dessouslescommandeslesplusutiliséesaveclesparamètresprincipaux.Toutefois,si celanevoussatisfait

pas,vouspouvezconsulterdela documentationdirectementintégréeausystèmeLinux par l’intermédiaire

del’outil d’aideman(pourmanual). Nombred’utilitairesdeLinux sevoientassocieruneouplusieurspages

dedocumentationconsultablesdirectementvia cettecommande.

Sasyntaxe est:

man <options> <nom_de_commande>

man attendcommeargumentle nom de la commandepour laquellevous désirezdesexplications.Par

exemple:

$ man ps

vous donneratous les renseignementsconcernantla commandeps. Il existe sousman destouchespour

circulerà traversdespagesdemanuel; cesontlessuivantes:

Page 18: New Cours Linux

CoursLinux - Namur-LUG 18

Touche Effet

PgUP Pageprécédente

PgDwn Pagesuivante

Enter Lignesuivante

Space Pagesuivante

b Pageprécédente

q Quit

Á la commandemanpeutêtreégalementassociédesoptions,nousenprésentonsunrésumé:

-P pager : Spécifieunpagerpourafficherla docconcernantla commande.Pardéfaut,manutilise less;

-a : Par défaut, man quittera aprèsavoir affiché la premièrepagede manuelqu’il aura trouvée.En

utilisant cette options vous forcez man à afficher toutesles pagesde manuelqui matchentavec

<nom_de_commande>, passimplementla première;

-h : Afficheun résumédesoptionsdeman.Pasde<nom_de_commande> àspécifier;

-k string : Rechercheaprèsstring dansTOUTES lespagesdemanuel.Pasde<nom_de_commande> à

spécifier;

-t : Fait dela pagedemanuelunfichier imprimable.Uneredirectionversunfichierestnécessairecarpar

défaut le fichier résultatestaffichéà l’écran;

Chaquesujeteststructurédela mêmemanière,nousdistinguonsdemanièregénérale8 parties:

NAME Nom dela commande;

SYNOPSIS Reprendla syntaxe de la commande(sous

formedela syntaxe BNFengénéral);

DESCRIPTION Explicationscondenséesdes résultatsde la

commande,servant plusd’aidemémoireque

dedescriptionsprécises;

FILES Indique les fichierssur lesquelsagit la com-

mande.

DIAGNOSTICS Explication des messagesd’erreurssuscep-

tiblesd’êtreaffichésparla commande;

BUGS Pour certainescommandes,deserreurssont

connueset répertoriées.Cela évite des sur-

prises;

EXAMPLES Desexemplesd’utilisationdela commande;

Vousconstaterezqu’au coursde l’utilisation de Linux certainescommandesne possédentpasde manuel.

Toutefois,vouspouvezgénéralementobtenirdela docsurcescommandesentapantenmodeconsolele nom

de la commandesuivie de - -help (parfois-h). Un résumésimple,clair et concisconcernantla commande

seraaffichéà l’écran.Souvent,lesexplicationsfourniesparlespagesdemanuelsonttellementcondensées

qu’ellesnesontplusclaires.Toutefois,il existeuneautrecommandepouvantvousfournir del’information.

C’estla commandeinfo. Sasyntaxe estla suivante:

info <nom_de_commande>

Page 19: New Cours Linux

CoursLinux - Namur-LUG 19

Cettecommandedonneengénéraldesinformationspluspréciseset,parfois,agrémentéesd’exemplessurla

commandedontvouscherchezdesexplications.Vouspouvezvousdéplacezdanslespagesaveclestouches

dedirection.Passezauxpagessuivantesavecla touchen, auxpagesprécédentesavecla touchep et enfin,

vouspouvezquitterenutilisantla toucheq.

Lors de la rédactiondecedocument,nousavonsveillé à respecterunesyntaxe encequi concernela défi-

nition descommandes.La syntaxe quenousavonschoisieestunsous-ensembledela syntaxe BNF(Backus

NausForm).Le tableau2.1présenteun résumédu fonctionnementdela syntaxe.

TAB. 2.1– La syntaxe BNF

Syntaxe Signification

[x] x optionnel

<quelquechose> paramètresouargumentsou options

x* 0, 1 ou plusieursoccurencesdex

x+ 1 ou plusieursoccurencesdex

Lescommandesdécritesci-dessousneprésententaucunementla totalitédescommandesmaisunesynthèse

descommandeslesplusutiliséesaveclesoptionslesplusutilisées.Si vousêtesassoiffésdeconnaissance,

n’hésitezpasà lire lespagesinfo ou demanuel;-)

2.3 Opérationssur lesrépertoir es

2.3.1 Lister lesfichiers d’un répertoire

Cettepremièrecommandeestutiliséetantpour lesfichiersdedonnéesquepourlesrépertoires.Pourlister

lesfichiersd’un répertoire,vouspouvezutiliser la commandels. Sasyntaxe estla suivante:

ls [<options>] [<fichiers>]

Si le nom de <fichiers> n’est passpécifié,la commandeliste les fichiersdu répertoirecourant.Á la

commandels peutêtreégalementassociédesoptions:

-a ou --all : Liste touslesfichiers,y comprisceuxcachés(avecun nomcommençantpar . ) ;

-A ou --almost-all : Identiqueà l’option -a maisometlesentrées. et .. ;

-B : Ne listepaslesbackups-fichiers(seterminantpar˜) ;

-c : Trie pardate.Agrémentédel’option -l c’estplusclair ;

-C : Liste parcolonne;

--color[=WHEN] : Utilise descouleurspour distinguerles fichiers. WHENpeut être égal à ’never’,

’always’, ’auto’ ;

-h ou --human-readabl e : Affichelestaillesdefichiersenformatlisible parl’homme(p.e.,1k,234M,

2G);

-l : Afficheuneliste long format;

-m : Rempli la largeurdela fenêtreenaffichantlesfichiersenlesséparantparunevirgule;

Page 20: New Cours Linux

CoursLinux - Namur-LUG 20

-F ou --classify : Ajoute undessymbolessuivantsaprèsle nomdefichier :@ : Pourleslienssymboliques;

* : Pourlesexécutables;

/ : Pourlesrépertoires;

-R : Liste lessous-répertoiresrécursivement;

-s : Affichela taille dechaquefichier (enblocks);

-x : Liste lesfichiersparlignesaulieu deparcolonnes;

-1 : Liste unfichierparligne;

2.3.2 Créer un répertoire

Pourcréerun répertoire,la commandeàutiliser estla suivante:

mkdir <nom_de_repertoire>+

où <nom_de_repert oir e>+ est une liste non vide de nomsde répertoireséparéspar un ou deses-

pace(s).

Exemple:

$ mkdir toto

$ mkdir lulu B212

2.3.3 Supprimer un répertoire

Poursupprimerun répertoire,la commandeàutiliser estla suivante:

rmdir <nom_de_repertoire>+

où <nom_de_repert oir e>+ est une liste non vide de nomsde répertoireséparéspar un ou deses-

pace(s).Si le répertoireestnonvide la commandeafficheunmessaged’erreur.

Exemple:

$ rmdir toto

$ rmdir lulu B212

2.3.4 Afficher le répertoire courant

Il existe une commandepour afficher au terminal le chemindu répertoirecourant.la commandeest la

suivante:

pwd

Cettecommandenerequiertni options,ni arguments.

Page 21: New Cours Linux

CoursLinux - Namur-LUG 21

2.3.5 Changerde répertoire

Pourchangerderépertoire,la commandeàutiliser estla suivante:

cd [<nom_de_repertoire>]

Le <nom_de_repert oi re > est ici optionnel.Dansle casoù le nom de répertoireestabsent,la com-

mandecd vousdirige versvotrerépertoireutilisateur, sinon,dansle répertoireducheminspécifié.

Desastuces:

cd .. Permetdepasserdansle répertoireparent

cd - Revient dansle répertoireprécédentle dernierchangementderépertoire

Exemple:

$ cd /bin

$ pwd

/bin

$ cd

$ pwd

/home/fabian

$ cd - ; pwd

/bin

2.3.6 Espaceoccupépar un répertoire

La commandels contrairementàla commandedir sousMS-DOSn’indiquepasla taille desfichiers,ni celle

desrépertoires(saufsi l’option -l estspécifiée).Il existe unecommandepour connaîtrel’espacedisque

occupéparun répertoireet sesfichiers.Cettecommandeestla commandedu. Sasyntaxe estla suivante:

du <options>* <nom_de_rep_ou_de_fich>*

En fait la commandedu à elle seuledonnela taille du répertoirecourantainsi quedessous-répertoires

decedernieret celarécursivement.La liste peutparfoisêtrelongueet illisible. Toutefoiscettecommande

agrémentéedequelquesoptionspeuts’avérerbienutile :

-a ou --all : Affichela taille pourtouslesfichiers,passimplementlesrépertoires;

-c ou --total : Afficheuntotaldela taille detouslesargumentsaprèsquecesderniersaientétévisité;

-h ou --human-readable : Afficheles taillesdestellessortesqu’ellessoientlisiblespour l’homme,

c’est-à-dire,ajouteunM pourMégaByte,G pourGigaByte,k pourkiloByte (enpuissancede1024).

--max-depth=DEPTH : Montre le total pour chaquerépertoire(et fichier si --all ) qui sontsituésà

maximumDEPTHniveau(x)“en dessous”du répertoirecourant;

-s : Affichesimplementun totalpourchaqueargument;

-S ou --separate-dirs : Donnela taille dechaquerépertoireséparément,excluantla taille dessous-

répertoires;

-X fichier : Excluslesfichiersdontle nomcorrespondàfichier.

Page 22: New Cours Linux

CoursLinux - Namur-LUG 22

Exemple:

Si vousvoulezconnaîtrela taille dechacundesrépertoireset fichierssituésdansvotrerépertoirehome:

$ du -a -h --max-depth=1 ˜/

Note:

~/ estun raccourcipourdésignervotre répertoirehome. Par exemplesi vousêtesun utilisateurportantle

nomfabian, ~/ désignerale répertoire/home/fabian . Le répertoirehomeestvotrerépertoirepersonnel,

il contientvotreprofil (ensembledesfichiersdeconfigurationdesapplicationsquevousutilisez),vosfichiers

personnels,. . . C’estégalementle répertoirepardéfautdanslequelvousentrezquandvousvouslogguez.

2.4 Opérationssur lesfichiers

2.4.1 La copiede fichiers

La commandepermettantla copiedefichiersestla commandecp. Sasyntaxe estla suivante:

cp <options>* <source>+ <destination>

Cettecommandecopiela sourceversunedestinationqui peut-êtreun fichier, si la sourceestun fichier, un

répertoiresi la sourceestuneliste defichiers.Par défaut,cettecommandeécraselesfichiersdedestination

sansdemandedeconfirmation.Á cettecommandepeutêtreassociédesoptions:

-a ou --archive : Préserve tantquepossiblelesattributset la structuredesfichiersoriginale;

-b ou --backup : Fait un backupdechaquefichiersqui pourraientêtreécrasésou déplacés;

-f ou --force : Enlève lesfichiersdedestinationsexistants;

-i ou --interactive : Modeinteractif,demandesi un fichier dedestinationexistantdoit êtreécrasé

ou non.Il estfortementconseillédemettrecetteoptiondanslesaliasdevotre .bashrc ;

-R ou --recursive : Copielesrépertoiresrécursivement;

-u ou --update : Ne pascopierlesfichiersdont la destinationexistanteestidentiqueou plusnouvelle

quela source;

Exemple-1: Copierlesfichiers˜/.bashrc et ˜/.bash_profile dansle répertoire/tmp

$ cp ˜/.bashrc ˜/.bash_profile /tmp

Exemple-2: Copierle contenudu répertoire /.gnomedansle répertoire/tmp

$ cp ˜/.gnome/ /tmp

Exemple-3: Avecl’option -R , le répertoireet lessous-répertoiressontcopiésrécursivement

$ cp -R ˜/.gnome/ /tmp

Exemple-4: Copierun fichier sousun autrenom

$ cp .bashrc toto

Notezla différenceentrel’exemple2 et l’exemple3.

Page 23: New Cours Linux

CoursLinux - Namur-LUG 23

2.4.2 Déplacement/Renomagede fichiers

La commandepermettantle déplacementet/oule renomagedefichiersestla commandemv. Sasyntaxe est

la suivante:

mv <options>* <source>+ <destination>

Si le dernierargumentde cettecommandeestun répertoire,alorsmv déplacetousles fichierslistésavec

le mêmenomdanscerépertoire.Sinon,si seulementdeuxnomsfichiers(ou derépertoires)sontdonnés,il

renommele premierpar le second.Par défaut, la commandemv écrasele fichier destinationsansdemande

deconfirmation.Á cettecommandepeutêtreassociédesoptions:

-b ou --backup : Fait un backupdechaquefichierqui pourraitêtreécraséoudéplacé;

-f ou --force : Enlève lesfichiersdedestinationexistantset n’averti jamaisl’utilisateur;

-i ou --interactive : Modeinteractif,demandesi un fichier dedestinationexistantdoit êtreécrasé

ou nonsansregarderauxpermissions.Il estfortementconseillédemettrecetteoptiondanslesalias

devotre .bashrc ;

-u ou --update : Nepasdéplacerlesfichiersdontla destinationexistanteestidentiqueouplusnouvelle

quela source;

Exemple-1: Renomele fichiercours.htmlenchapitre1.html

$ mv cours.html chapitre1.html

Exemple-2: Déplacelesfichierspage1.htmlet page2.htmldansle répertoirehttp-pub/

$ mv page1.html page2.html http-pub/

2.4.3 Effacementdefichiers

La commandepermettantl’effacementdefichiersestla commanderm . Sasyntaxe estla suivante:

rm <options>* <fichier>+

Cettecommandeeffaceles fichiersspécifiésen arguments.Par défaut,cettecommandeeffaceles fichiers

sansdemandedeconfirmation.Á cettecommandepeut-êtreassociéesdesoptions:

-d ou --directory : Effacelesrépertoires,mêmesi ils nesontpasvides(ensuper-userseulement);

-f ou --force : Ignorelesfichiersnonexistantset n’avertit pasl’utilisateurdela suppression;

-i ou --interactive : Mode interactif,demandesi un fichier existantdoit êtreeffacéou non.Il est

fortementconseillédemettrecetteoptiondanslesaliasdevotre .bashrc ;

-r ou -R ou --recursive : Enlève le contenudesrépertoiresrécursivement;

Pour indiquer que les argumentsqui suivent la commandene sont pasdesoptions,vous devez utiliser

l’option -- . Ainsi pour effacerun fichier dont le nom serait-f dansle répertoirecourant,vous pouvez

taper:

$ rm - -f

Page 24: New Cours Linux

CoursLinux - Namur-LUG 24

Exemple: Suppressionavecdemandedeconfirmation.Danscecas-cion refusepuisque.bashrc estun de

nosfichiersdeconfiguration;-)

$ rm -i .bashrc

rm : remove ‘.bashrc’ ? n

2.5 Commandesplus complexe

2.5.1 Comparer le contenude deuxfichiers

Pourcomparerle contenudedeuxfichiers,il existela commandediff . Sasyntaxe estla suivante:

diff <options>* <de_fichier> <a_fichier>

Plusieursoptionssontégalementdisponibles.Pourplus d’informationsconcernantcesdernières,veuillez

consulterlespagesinfo ouexécuterdiff avecl’option --help .

2.5.2 Concaténationdefichiers

Pourconcaténerdeuxfichiersl’un à la suitedel’autre et afficherle résultatà l’écranil existela commande

cat. Sasyntaxe estla suivante:

cat <options> <fichier>+

Vouspouvezredirigerversunfichier le résultatdela concaténationenutilisantuneredirection(voir section

3.3).Ceprogrammeacceptelesoptionssuivantes:

-b ou --number-nonblank : Leslignesdesortiesnonblanchessontnumérotées;

-E ou --show-ends : Affichele caractère$ à la fin dechaqueligne;

-n ou --number : Numérotetoutesleslignesdesorties;

-T ou --show-tabs : Affichele caractèredetabulationcomme I ;

-v : N’affichepaslescaractèresnonimprimables

2.5.3 Chercher un fichier

Il existeplusieursméthodespourtrouverunfichierdansl’immensearborescencedusytèmedefichier. Nous

verronsdanscettesectiontroiscommandes: find, which et type

find

La commandefind esttrèsutile, elleoffre plusieurscritèresderecherche: typedefichier, le propriétaire,la

taille, lespermissions,.. .

Cettecommandepossédela syntaxe suivante:

Page 25: New Cours Linux

CoursLinux - Namur-LUG 25

find <repertoire_de_depart> <option>* <action>*

find acceptelesoptionssuivantes:

-name <nom_de_fichier> : Tous les fichiers dont le nom correspondau <nom_de_fichier >

sontsélectionnés;

-iname <nom_de_fichier> : Idemquel’option précitéemaisignorela distinctionentremajuscule

et minuscule;

-type <lettre> : Permetde sélectionnerdesfichiersou desrépertoiresselonleur type.Le type est

spécifiéparla lettred pourrépertoire,f pourfichieret l pourlien symbolique;

-size [+|-] <taille> : Limite la rechercheaux fichiersd’une certainetaille. Un signe � ou �peutêtreutiliséenpréfixe poursélectionnerlesfichiersdontla taille estrespectivementinférieureou

supérieureà la <taille> donnée(pardéfaut la taille estcomptéeenbloc de512octets).Pourplus

defacilitésvouspouvezpréciseruneunitédemesurepourla taille. Pourcefaire,vousfaitessuivre le

chiffre parla lettrek pourdeskilo-octetsou la lettrec pourdesoctets;

-perm <mode> : Limite la rechercheenfonctiondespermissionsdesfichiers.

-user <username> : Cetteoptionpermetdesélectionnerdesfichiersselonleurpropriétaire;

Une fois quefind a trouvéles nomsdefichierscorrespondantauxcritèresde recherche,il estpossiblede

définirdesactionsàexécuterpourchaqueentrée.Cesactionssontutiliséescommedesoptions:

-exec <commande> : Exécuteunecommandepourchaquefichier. La chaîne{} seraremplacéeparle

nom de fichier en cours.Notezqu’en bash, le point-virgule qui suit la commandedoit êtreprécédé

d’un anti-slash( � ) pourqu’il neremarquepasla fin dela commandefind elle-même.

-ok : Identiqueà l’option -exec maisdemandeconfirmationavantd’exécuterchaquecommande.

-print : Affichele nomdechaquefichier. C’estl’action pardéfaut.

L’exempled’utilisation ci-dessousrecherchedepuisle répertoireracinetouslesfichiersdontle propriétaire

est fabian et qui sontdesfichiersPostScriptet nousallonsexécuterla commandels sur chacund’entre

eux:

$ find / -type f -user fabian -iname ’*.ps’ -exec ls {} � ; 2>

/dev/null

Nous faisonsuneredirectiondeserreursversun fichier spécial(/dev/null ). Ce fichier réagitcomme

un trou noir quandon lui envoie desdonnées; il absorbecesdernièresdèsleur réception.Nous faisons

cetteredirectionà causedespermissionssurcertainsrépertoires.En effet, certainsd’entreeuxnesontpas

accessiblespar l’utilisateur et si cetteredirectionn’estpasfaite, le fichier trouvérisquedepassersousnos

yeuxsansquel’on nes’enaperçoive.

which

Montre le chemind’accèsà unecommande.Ceprogrammeseréféreà la variabled’environnementPATH.

Si le fichier ne se trouve pasdansun descheminsdéfinisdansPATH, alorscettecommanderenvoie un

messaged’erreur. Sasyntaxe estla suivante:

Page 26: New Cours Linux

CoursLinux - Namur-LUG 26

which <nom_de_programme>*

Exemple:

$ which ping ls

/bin/ping

/bin/ls

type

type estunecommandeinterneau systèmequi permetde localiserdesfichiersbinaires.Sasyntaxe estla

suivante:

type <nom_de_programme>*

Exemple:

$ type ls ping

ls is aliased to ’ls --color=always -FA’

ping is /bin/ping

2.5.4 Chercher uneexpressiondansun fichier

La commandepermettantde rechercheruneexpressiondansun fichier estla commandegrep. La syntaxe

estla suivante:

grep <options>* <pattern> <fichier>*

La commandegrep recherchetouteoccurencedu<pattern> dansla listedefichiers.Si la listedefichiers

estvide,la commandeaffichetouteoccurencedupatternprovenantdel’entréestandard.Decefait, lesdeux

commandessuivantessontéquivalentes1 :

cat toto | grep ’lulu’ � grep ’lulu’ toto

Le patternà identifierdoit impérativementsetrouver entrecote(’’). La commandegrep acceptelesoptions

suivantes:

-A <NUM> ou --after-context=<NUM> : Affiche<NUM>lignesdecontexte aprèsavoir affiché la

ligne decorrespondance;

-B <NUM> ou --before-context=<NUM> : Affiche<NUM>lignesdecontexte avantd’avoir affiché

la lignedecorrespondance;

-C ou --context[=<NUM>] : Affiche<NUM>lignes(défault=2)decontexte;

-c ou --count : Affichele nombred’occurencesdupatterndanschaquefichier;

-i ou --ignore-case : Ignorela cassedansle patternetdansle fichierd’entrée;

-n ou --line-number : Préfixechaquelignedesortieavecle numérodela lignedu fichierd’entrée;1Voir chapitre3 section3.3.8pourplusdedétails

Page 27: New Cours Linux

CoursLinux - Namur-LUG 27

Exemple: Recherchertoutesles lignesqui ont au moinsuneoccurencedu pattern’http’ dansle fichier

/etc/services

$ grep -i ’http’ /etc/services

www 80/tcp http # WorldWideWeb HTTP

https 443/tcp # MCom

https 443/udp # MCom

2.6 Lespagers

Un pager estunprogrammequi permetd’afficherà l’écranle contenud’un fichier texte.Nousvousprésen-

tonsdanscettesectionplusieurspagers.

2.6.1 less

Le pagerlessestundespagerslespluscompletsetcomplexes.Nousallonsvousprésenterdanscettesection

qu’unepartieinfime desfonctionnalitésde less. Vouspouveztoutefoisapprofondirla questionenlisant les

pagesdemanuelconcernantcettecommande.Vouspouvezégalementobtenirunedescriptioncomplètede

sonutilisationentapanth lorsdesonexécution.Sasyntaxe estla suivante:

less <options>* <nom_de_fichier>+

Nousneparleronspasdesoptionsici. Notezquevouspouvezouvrir plusieursfichiersà la fois. Lestouches

pour sedéplacerdansle documentsontcellesde la commandeman puisqueman utilise par défaut lesspourafficherlespagesdemanuel(voir section2.2page17).Si vousavezspécifiéplusieursfichiersà la fois,

vouspouvezconsulterle suivantentapant :n et le précédententapant :p . Uneautrefonctionutile estla

recherchedemots.Cettedernièrepeutêtreinvoquéeen tapantla touche/ suivie du mot à rechercher. La

touchen permetdetrouver l’occurencesuivantetandisquela toucheNpermetd’en trouver la précédente.

2.6.2 more

Le pagermorepossédemoinsdefonctionnalitéqueless. Vouspouvezutilisercellesquenousavonsdécrites

pour less. Pourplusd’informationconcernantcettecommandevouspouvezconsulterlespagesdemanuel

ou bientaperh lorsdesonutilisation.Sasyntaxe estsimilaireàcellede less.

2.7 Accèsà d’autr esdisques

2.7.1 Monter un systèmede fichier

Danstout systèmeUnix, chaquepériphérique(ou nomdepartition)estidentifiéparun fichier. Lesdisques

durs,les lecteursdedisquetteset CD-ROM nesontpasidentifiésparC: , A: ou D: . Pourpouvoir accéder

à un périphériqueou une partition, on dit qu’il faut monter(ou encoreattacher)son systèmede fichier

sur un point de montage(un répertoire)situé dansl’arborescencedesrépertoires.Typiquement,chaque

périphériqueou nomdepartitionestidentifiécommesuit :

Page 28: New Cours Linux

CoursLinux - Namur-LUG 28

� /dev/fd0 pourunedisquette;� /dev/cdromqui estun lien symboliqueversunfichierdepériphérique;� /dev/hdb1 pourle second(b) disquedur (hd)premièrepartition(1) ;� /dev/sd0pourundisquedurou un autrepériphériquedestockageSCSI.

La commandepour monterun systèmede fichier est la commandemount. Cettecommandepossédela

syntaxe suivante:

mount <options>* [<nom_de_partition>] <point_de_montage>

L’option la pluscourammentutiliséeestl’option -t qui permetdespécifierle typedesystèmedefichier.

Lesdifférentssystèmesdefichierssontnombreux.Lespluscourantssontmsdos, ext2 , vfat , iso9660 ,

autofs , smbfs , . . .

Remarque: msdos correspondà un systèmedefichier FAT16 uniquementavecdesnomscourtsalorsque

le vfat gèrele FAT16et le FAT32avecdesnomslongs.

Pourmonterunedisquetteformatéemsdos,la lignedecommandeseraitla suivante:

$ mount -t vfat /dev/fd0 /mnt/floppy

où vfat désigneun systèmede fichier utilisant les nomslongs, /dev/fd0 désignele premierlecteur

de disquetteet /mnt/floppy l’endroit dansl’arborescencedesrépertoiresoù le systèmede fichier de

la disquettedoit être monté.Pour accéderau contenude la disquette,il vous suffit donc d’aller dans

/mnt/floppy . Vouspouvezy copier, renommer, déplacer, créerou détruiredesfichiersou répertoires.

La possiblitéde monter un systèmede fichier par un utilisateur dépendde la configurationdu fichier

/etc/fstab(voir pagesdemanuelpourplusdedétail).

2.7.2 Démonterun systèmede fichier

Aprèsavoir montéunpériphérique(ouunepartition),il estIMPÉRATIF quevousle (oula) démontiez(essen-

tiellementpour lesdisquetteset CD-ROM avantdepouvoir lire le contenud’un autresupport).D’ailleurs,

encequi concernele CD-ROM, le bouton’Eject’ du lecteurestdésactivé lorsdu montage.Vousnepouvez

passortir le CD tantquele lecteurn’estpasdémonté.

La commandepourdémonterunpériphérique(ouunepartition)estumount. La syntaxedecettecommande

estla suivante:

umount <nom_de_partition>

Si vousobtenezunmessagecommequoile périphériqueestoccupé,vérifiezquevousn’êtespassimplement

dansun desrépertoiresdu périphériquemonté.

Pourdémonterunedisquettequelquesoit sonformat,la ligne decommandeestla suivante:

$ umount /dev/fd0

Page 29: New Cours Linux

CoursLinux - Namur-LUG 29

2.7.3 Espaceoccupéd’une partition

La commandepourvoir l’espaceoccupé(ou libre) surchacunedespartitionsmontéesestdf. Sasyntaxe est

la suivante:

df <options>* <fichier>*

En fait, la commandedf affichel’espacedisquedisponiblesur le systèmedefichier qui contientle nomde

<fichier> (avec chemincomplet)enargument.Si aucunnomdefichier estdonné,l’espacedisponible

sur tous les systèmesde fichiers montésest affiché. L’espacepar défaut est donnépar blocs de 1k. Les

optionssuivantessontdisponibles:

--block-size=<SIZE> : Utilise desblocsdetaille <SIZE> ;

-h ou --human readable : Affichelestaillesenformatlisible pourl’homme;

-l ou --local : Limite le listing auxsystèmesdefichierslocaux;

-t ou -type=<TYPE> : Limite le listing auxsystèmesdefichiersdetype<TYPE>;

Exemple: Déterminerl’espaceoccupéparchacunedespartitionsmontées

$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hda1 2.6G 1.3G 1.2G 53% /

/dev/hda2 2.8G 1.5G 1.1G 57% /home

2.8 Divers

Quelquespetitescommandessupplémentaires:

Nom decommande Description

clear Effacel’écran;

set Défini unevariabled’environnement;

stty Changeet imprimelesdifférentsparamètresdu modeconsole;

cal Afficheuncalendrierdu moiscourant;

date Permetd’afficheretdemodifierle dateet l’heuredesystème;

reset Réinitialisel’affichagedela console;

2.9 L’arbor escencedu systèmeLinux

Quelquesoit la distribution quevousinstallez,vousremarquezqu’il n’y apasoupeudedifférenceentreles

arborescencesdessystèmesLinux. En fait chaquedistributeurdeLinux essaiederespecterla normeFHS(File Hierarchy Standard). Nousallonsvousprésenterd’une manièregénéraleà quoi correspondchacun

desrépertoires.

Page 30: New Cours Linux

CoursLinux - Namur-LUG 30

/ C’est le réperoireracine.C’est de lui quepartenttous les autresrépertoires,c’est la basedu

systèmedefichiers;

/bin C’est ici quedoivent setrouver tousles fichiersbinairesutilisablespar l’administrateurd’une

part,et,parlesutilisteursd’autrepart;

/sbin C’estle répertoirequi contientlesbinairesréservésà l’administrateur;

/etc Il contientlesfichiersdeconfigurationpropresausytèmelocal;

/boot Cerépertoirecontientlesfichiersstatiquesdu chargeurdedémarrage;

/dev Il contientlesfichiersdepériphériques.Parexemple,noustrouverons/dev/psauxpourlessouris

ps2;

/home Il contientles fichierspersonnelsdesutilisateurs.Cesfichierssont triés selonunehiérarchie

telleque/home/fabianestle répertoirespécifiquepourl’utilisateur fabian;

/lib Cerépertoirecontientlesbibliothèquespartagéesessentiellesausystèmelorsdudémarrage.Un

sous-répertoiremodules/contientlesmodulesdu noyau;

/root Répertoirepropreà l’administrateursystème;

/tmp Réperoireutilisépardesapplicationsqui ontbesoindecréerdesfichierstemporaires;

/var Ici figurentdesdonnéesvariables.On y trouve tracesdelogs,d’impressions,demails,.. . ;

/mnt Répertoirecontenantles pointsde montaged’autressystèmesdefichiers.Tout répertoirevide

convient pourêtreun point demontage;

/usr Répertoireoù vont seplacerlesapplicationssecondaires.

Page 31: New Cours Linux

Chapitr e 3

L’inter prèteur decommande: BASH

3.1 Intr oduction

SousLinux, vousavez le choix entreunemultituded’interpréteurde commande(sh, csh, ksh, tcsh, . . .).

Danscettepartienousallonsexpliquer BASH (BourneAgain SHell) : l’interprèteurde commandesous

Linux. L’invite deBASH sousLinux seprésentegénéralementcommesuit1 :

[<nom_utilisateur>@<ordinateur> <répertoire>]$

ou

[root@<ordinateur> <répertoire>]#

Notezquel’invite peutêtrepersonnalisée.

Entrecrochetsfigurentquelquesinformationssur l’état actueldu shell (ou invite BASH). Au début, vous

trouvez le nomde l’utilisateur qui estici soit <nom_utilisate ur >, soit root . Aprèsle caractère@,

vousvoyez le nom abrégéde l’ordinateurqui a étédéfini à la configurationdu réseau: un nom du type

machine.quelque.part.bedeviendramachine simplement.Après l’espace,vous lisez le nom du répertoire

actuel,et non le chemincomplet: si vousvoustrouvez dansle répertoire/home/Fabian/documents, seul

s’afficheradocuments.

Le caractèrequi suit le crochetfermant,$ ou #, précisevosprivilègesd’accès: dansle casd’un utilisateur

classiquefigurerale signe$, l’administrateurroot recevra undièse#.

Attention,connectez-vous seulementen tant queroot quelorsquevousêtessûr et certainde ce quevous

voulezfaire.Le rootestla personneprivilégiée,qui,dansunsystèmeUnix, peutréalisertoutcequ’elleveut,

sanscontrôled’accès! Jecroisquenousle répèteronsjamaisassez.

Si un utilisateurclassiqueveutexécuterunecommandepour laquelleil nepossèdepasdedroit d’accès,le

systèmelui répondraparun messagedu style: Only root cando that ouPermissiondenied.

BASH offre plusieursservicesàl’utilisateurpermettantàcedernierd’êtreplusefficacedanssontravail. En-

coreunefois, nousnepouvonsabordertouslesaspectsdeBASH tantsesfonctionnalitéssontnombreuses.1Celavaried’uneconfigurationà l’autre.

31

Page 32: New Cours Linux

CoursLinux - Namur-LUG 32

Ainsi, danscechapitre,nousavonschoisideparlerdu mécanismedesalias qui estun mécanismepermet-

tant de définir desraccourcisaux appelsde commandes; du mécanismedesredirectionset desfiltresqui

permettentdecontrôlerdesflux dedonnées; du regroupementdecommandeset,enfin,dela substitutionde

commandes.

3.2 Le mécanismedesalias

Un aliasestuneabréviationpourunecommande,voire pourplusieursmotsdela lignedecommande.

Un aliasestdéfini parla commandealias (qui l’eut cru! ! !) :

alias <nom>=’<texte>’

Le nom d’un aliaspeutcommencerpar un caractèrespécial.Vousne devez pasmettred’espaceavant et

aprèsle signeégal.

Exemple:

$ alias ls=’ls --color -Fa’

$ alias rm=’rm -i’

Pourqu’unaliassoitprisencompteàchaqueouverturedesession,vousdevezmodifierle fichier .bashrc

setrouvantdansvotrerépertoireutilisateur. Si vousappelezla commandealias sansaucunparamètre,vous

obtenezla liste desaliasdéjàdéfinis.La commandeunalias supprimelesaliasquevousavezdéfinis.Vous

devezspécifierenargumentle nomd’un aliaspourquecetaliassoit supprimé.

Exemple:

$ alias

alias ls=’ls --color -Fa’

alias rm=’rm -i’

$ unalias ls

$ alias

alias rm=’rm -i’

3.3 Redirection et filtr e

La redirectiondesentrées-sortiesest unedesprincipalescaractéristiquesdu shell, dont la puissancen’a

d’égalequela simplicité.La réputationdeLinux entantquesystèmed’exploitationsoupleetperformantest

dueengrandepartieauxpossibilitésoffertesderediriger, directementou indirectement,lesentrées-sorties.

Lorsquequelquechoseesttapéauclavier, la machineinterceptele signalet envoie cesignalversun canal

particulierappeléle canal d’entréestandard. Ce signalestalors "aiguillé" sur un autrecanalafin d’être

affichéàl’écran.Cecanals’appellele canaldesortiestandard. Cecanalestaussiutiliséparlescommandes

afind’afficherleur résultat.Parfois,lescommandesfournissentdeserreurscommerésultat,ceserreurssont

envoyéesvers l’écran par un autrecanalque l’on appelele canal d’erreur. Le canald’entrée,de sortie

standardetd’erreursontrespectivementnumérotés0,1et2.

Page 33: New Cours Linux

CoursLinux - Namur-LUG 33

Le principede la redirectionesten généralde redirigerdesinformationsenvoyéesà l’écran (ce qui sort

du canaldesortiestandardou d’erreur)dansun fichier, un fichier qui seraultérieurementconsultableet/ou

modifiable.

3.3.1 Redirection de la sortie standard

La syntaxe estla suivante:

<commande> > <fichier_de_sortie>

Tout ce que la commande<commande> transmetteraseraautomatiquementplacédansle fichier <fi-

chier_de_sortie > enquestion.Cettesyntaxe estéquivalenteà la suivante:

<commande> 1> <fichier_de_sortie>

Le chiffre 1 étantlà pournousrappelerquenousredirigeonsla sortiestandard,cellequi correspondaucanal

numéro1. Lesmessagesd’erreurspassantpar le canald’erreur, numéroté2, serontquantà euxaffichésà

l’écran.

En fait, deuxsituationssontà envisager. Dansla première,le fichier <fichier_de_so rt ie> n’existe

pasencore.Danscecas,il seracréé.Dansla seconde,unfichierdemêmenomexistedéjàetdanscecasson

contenuseraécraséparlesdonnéestransmisesparla commande.

Exemple: Redirectiondu résultatdela commandels -l

$ ls -l > toto

Pourvisualiserle résultatde la commandecontenudansle fichier toto, il voussuffit deprendresoit votre

éditeurpréféréou bienutiliser less.

3.3.2 Double redirection desortie

Il n’estpastoujoursjudicieuxd’écraserl’ancienfichierpardesdonnéesdela commande.Danscecas,vous

pourrezutiliser le signe>> (> doublé).Si le fichierdesortien’existepas,il estcréésinon,aufichierexistant

estajoutéla sortiedela commande.

3.3.3 Redirection d’entrée

Certainescommandesattendentleursdonnéesdepuisle clavier. Mais il estpossiblede les lire depuisun

fichierenutilisantle signe< suivi dunomdefichier. La syntaxe estla suivante:

<commande> < <fichier_d’_entrée>

Le signe"plus petit" (<) indiqueque l’on fournit le fichier <fichier_d’_en tr ée> à la commande.

Cettesyntaxe estéquivalenteà la suivante:

<commande> 0< <fichier_d’_entrée>

Page 34: New Cours Linux

CoursLinux - Namur-LUG 34

Uneexceptionexistecependantpourl’éditeur. Il n’estpaspossibledelui affecteruneredirectiond’entrée-

sortiesansprovoquerd’importantsproblèmes.

Exemple: La commandetr prendcommeargumentsdeuxchainesde caractères.Elle a pour but de rem-

placerdansun fichier touteoccurrencede la premièrepar la seconde.Par défaut cettecommandeattend

desentréesvenantdu clavier. Ainsi si voustapeztr ’r’ ’g’ suivi de [entrée],cettecommandeatten-

dra desinformationsvenantdu clavier2. Nouspouvonsredirigerl’entréestandard,c’est-à-diredonnerles

informationsnonplusàpartir du clavier maisd’un fichierenfaisant:

$ tr ’r’ ’g’ < toto

Cettecommandeaurapoureffet deremplacertouteoccurrencedu caractère"r" apparaissantdansle fichier

totoparle caratère"g" etd’afficherle résultatà la sortiestandard(ici l’écran).

3.3.4 Combinaisonde redirections

Il estpossibledecombinerlesredirections,c’est-à-dire,prendreun fichier enentréeet demettrele résultat

dansun fichierdesortie; nousobtenonsunesyntaxe du genre:

<commande> < <fichier_d’_entrée> > <fichier_de_sortie>

Exemple: Reprenonsl’exempledela commandetr . Pourobtenirle résultatdela commandedansun autre

fichier, il suffit defaireuneredirectiondela sortiestandard:

$ tr ’r’ ’g’ < toto > lulu

La commandetr prendsenentréele contenudufichiertotogrâceàuneredirectiond’entréeetfournit comme

résultatun fichier lulu grâceàuneredirectiondesortie.

3.3.5 Redirection deserreurs

Parallèlementauxcanauxd’entréeetdesortiestandard,chaqueprogrammedisposeencoredela possibilité

d’envoyer à l’écran desmessagesd’erreurspar un canalde sortieséparé.C’est d’ailleurs la raisonpour

laquelledesmessagesd’erreursontenvoyésà l’écranalorsqu’uneredirectiondesortiea étéspécifiéedans

la ligne decommande.Pourredirigerle canalstandardd’erreur, vousutiliserezpourcelala commande:

<commande> 2> <fichier_sortie_erreur>

3.3.6 Redirection de la sortie standard et d’err eur

Notezquevouspouvez redirigerà la fois la sortiestandardet la sortied’erreurversun mêmefichier. Il

existedeuxformatsdesyntaxe :

<commande> &> <fichier_de_sortie>

ou

<commande> >& <fichier_de_sortie>

2Poursortir dela commandefaites[Ctrl]-[D]

Page 35: New Cours Linux

CoursLinux - Namur-LUG 35

Lesdeuxcommandesprécitéessontéquivalentesà la suivante:

<commande> > <fichier_de_sortie> 2>&1

Attention, <commande> 2>&1 1> <fichier_de_sor ti e> ne donnepasle mêmerésultat,pour-

quoi?3

3.3.7 Lesfiltr es

Un filtre (ou une commandefiltre) est un programmesachantécrire et lire desdonnéespar les canaux

d’entréeetdesortiestandard.

3.3.8 Relier lescommandespar un tube

Pourétabliruneliaisondirecteentele canaldesortiestandardd’unecommandeet le canald’entréestandard

d’uneautre,il existele signe| (le tube,enanglaispipeline). Touteslesdonnéesrenvoyéesparla commande

placéeà la gauchedecesigneà traversle canaldesortiestandardsontrenvoyéesaucanald’entréestandard

dela commandeplacéeà droite.Voici ci-dessousquelquesinformationssupplémentairessurlestubes:

� Le signetube(|) peutêtreplacéà plusieursreprisesdansunemêmeligne decommande.Il n’y a aucune

limite àdépasser;� La premièrecommanded’un tubenedoit pasobligatoirementêtreun filtre ;� La dernièrecommanded’un tubenedoit pasnonplusforcémentêtreunfiltre ;� A la fin d’un tube,la dernièrecommandepeutégalementêtredotéed’uneredirectiondesortiesi le résultat

nedoit pasapparaîtreà l’écranmaisêtrestockédansunfichier;

3.3.9 Principalescommandesde filtr e

Lescommandesprésentéesdanscettesectionont commecaractèristiquesqu’ellespeuventlire desdonnées

autrementqueparle canald’entréestandard.Si vousajoutezle nomd’un fichier commeparamètreà l’une

decescommandes,ellesliront lesdonnéesdanscefichier et nonpaspar l’intermédiairedu canald’entrée

standard.

� Trier le contenud’un fichier : sortLa commandesort lit lesdonnéesligne par ligne par le canald’entréestandardet retournecesdonnées

trièesparle canaldesortiestandard.� Compterle nombredelignes,demotsetdecaractèresdansun fichier : wcLa commandewc lit lesdonnéesligneparligneparla canald’entréestandardet retournecommerésultat

troisnombresentiersdésignantrespectivementle nombredelignes,demotsetdecaractèreslus.3Solution: En effet, la premièrecommandefait tout d’abordun redirectionde la sortiestandardversun fichier. Le symboleà

la fin de la commande,indiquequ’il faut redirigerla sortied’erreurversla sortiestandard.Commecettedernièrea étéredirigéeversun fichier, leserreursy serontredirigéeségalement.Dansle secondcas,la premièrechosequel’on fait, c’estderedirigerleserreursversla sortiestandard,qui estinitialementl’écranavantderedirigerla sortiestandard.Par conséquenttout cequi estsortiestandarduniquementseraredirigéversle fichier.

Page 36: New Cours Linux

CoursLinux - Namur-LUG 36

� Paginerl’affichaged’un fichier : moreLa commandemore lit du texte par le canald’entréestandardet retournecesdonnéespageà pageà

l’écran.Cettecommandeestexpliquéeplusendétaildansle chapitre2, section2.6.� Recherched’uneligne précisedansun fichier : grepLa commandegrepcontientcommepremierparamètreuncritèrederecherche.Cettecommandecherche,

parmi toutesles lignesd’un fichier ou d’un canald’entréestandard,cellesqui contiennentle critèreet

retourneceslignespar le canalde sortiestandard.Le critèredoit êtreplacéentreapostrophe(’). Cette

commandeestexpliquéeplusendétaildansle chapitre2, section2.5.4.

Exemple-1: La commandeps (voir chapitre5) fournit tous les processustournantsur unemachine.Ces

processussont nombreuxce qui compliquela rechercheà l’écran. Grâceaux filtres, on peut limiter le

résultatdela recherche.La ligne suivantepermetderécupererdansle résultatfournit par la commandepsleslignesqui contiennentaumoinsuneoccurrencedu mot ’bash’ :

$ ps aux | grep ’bash’

Exemple-2: Nouspouvonsétendrela rechercheprécédenteaumot ’getty’ enajoutantun tubesupplémen-

taire:

$ ps aux | grep ’bash’ | grep ’getty’

Exemple-3: Commenousvoulonsgardercerésultatdansunfichier, nousfaisonsuneredirectiondela sortie

standardversunfichierdu nomresultat:

$ ps aux | grep ’bash’ | grep ’getty’ > resultat

3.4 Regroupementdecommandes

Danscettesection,il s’agit delancerun groupedecommandes.

L’utilisation deparenthèsesenligne decommandepermetdecréerun sous-shellqui va prendreencharge

l’exécutiondescommandesplacéesentrecesparenthèses.Lesdifférentescommandessontséparéespardes

points-virgules,cequi garantitleurordredetraitement.Touteslescommandessonttraitéesentâchedefond.

Lesparenthèsespermettentparconséquentdegrouperdescommandesdansla mesureoù un traitementen

arrièrerplanestpossiblepourl’ensemble.

Le regoupementdecommandesestégalementpossibleavecdesaccolades{}. Deuxdifférencesfondamen-

talessontcependantàprendreencompte:

1. L’accoladed’ouverturedoit toujoursêtreplacée,tout commeunecommande,en premièreposition

d’uneligne oucommepremiermotaprèsunpoint-virgule;

2. Pour le traitementde commandesplacéesentreaccolades,aucunsous-shelln’est lancé.Les com-

mandesinternesplacéesentrelesaccoladesagissentsurle shellactif et nonsurunsous-shell.

Exemple-1: L’utilisation desparenthèseslanceun sous-shell

$ cd ; pwd

/home/linus

$ ( cd .. ; pwd )

/home

Page 37: New Cours Linux

CoursLinux - Namur-LUG 37

$ pwd

/home/linus

Exemple-2: L’utilisation d’accoladesagit surle shellactif

$ cd ; pwd

/home/linus

$ { cd .. ; pwd ; }

/home

$ pwd

/home

3.5 Lessubstitutions

Il existedeuxtypesdesubstitution: la substitutiondecaractèreset la substitutiondecommandes.

3.5.1 La substitution decaractères

La substitutiondecaractèresestréaliséeparl’intermédiairedecaractèresspéciaux.Il enexistetrois :

* L’étoile estle caractèrequi peutremplacern’importequellechaînedecaractère,ainsif*n peutreprésen-

ter aussibienla chaînedecaractères’f abian’que’fzzzzzzzn’.

? Le point d’interrogationreprésentequantà lui, un et un seulcaractère.Ainsi f ?n peutreprésenteraussi

bienla chaînedecaractère’f an’ que’fzn’.

[ ] Lescrochetssontdesdélimiteursreprésentantl’un desquelconquescaractèresqu’ils contiennent.Ainsi

[bar] estla représentationsoit du caractère’b’, soit du caractère’a’, soit du caractère’r’. Un tiret

peutêtreutilisé pour spécifieruneplageentièrede caractères.Par exemple,[d-m] représentel’un

descaractèrescomprisentrela lettre’d’ et la lettre’m’.

3.5.2 La substitution decommande

Lorsquevousexécuterunecommande,il vousestpossibled’indiqueraushelld’exécuterdansun permier

tempscertainessous-commandeset de les remplacer, dansle texte de votre commande,par leur sortie

standard.Unefois la sous-commandeeffectuée,le shellexécutevotrecommande: vouspouvezdoncutiliser

la sortiestandardd’unecommandecommeargumentd’uneautrecommande.La substitutiondecommande

s’effectuegrâceauxdélimiteurs` ` (desquotesinversées)ou encore,enencadrantla commandeconcernée

par$().

Le petit exempleci-dessousafficheà l’écranle nombredefichierqu’il y a dansle répertoirecourant:

$ echo "Nombre de fichiers dans le repertoire `ls |wc -l`"

elleestidentiqueà la commande:

$ echo "Nombre de fichiers dans le repertoire $(ls |wc -l)"

Page 38: New Cours Linux

CoursLinux - Namur-LUG 38

Autreexemple: Cettelignedecommandepermetdefaireun ls -l surle binairecp decopiedefichieret

ce,sanssedéplacerdansle répertoirecontenantcp .

$ ls -l `which cp`

-rwxr-xr-x 1 root root 32272 Jul 18 21 :49 /bin/cp*

Enfait le résultatdela commandewhich cp est/bin/cp . Cerésultatremplacela commandesetrouvant

entrelesquotesinverséespour fournir la commandels -l /bin/cp qui, elle-même,fournit le résultat

qui ensuit.

3.5.3 Lescaractèresd’échappement

Bien sur, qui dit caractères de substitution, dit caractères d’échappement. Les caractèresd’échappement

permettentdeconsidérerlescaractèresdesubsitutioncommedescaractèresentantquetelset noncomme

descaractèresdesubsitutions.Lescaractèresd’échappementsontaunombredetrois :

� le backslashpermetde protègerun et un seul caractère.Ainsi � * permetde considérerle caractère*

commeuneétoile;

’’ Lessimplesquotes,quantà elles,protègenttouslescaractèresqu’ellesencadrent.Ainsi echo ’*.*’

afficheraà l’écran*.* (lescaractèresdesubstitutionsnesontpasinterprétés).Contrairementàecho

*.* qui afficheraitouslesfichiersdu répertoirecourant;

"" Les doublesquotesprotègenttous les caractèresqu’elles encadrentà l’exceptiondu dollard ($), du

backslash( � ) et desquotesinversées(`). Voyezl’exemplesuivant: echo “*.*$(ls)”

Page 39: New Cours Linux

Chapitr e 4

Leséditeurs : Emacset vi

Intr oduction

Danscechapitre,nousallonsvousprésenterdeuxéditeursdetexte parmi lespluscourammentutiliséssur

lessystèmesUnix.

Dansun premiertemps,nousvousprésenteronsvi : un éditeurde texte qui seveut simple,compactet

efficace.

Dansun secondtemps,nousvousprésenteronsemacs (développépar Richard Stallman, fondateurde la

FreeSoftwareFoundation).Cetéditeurestplus lourd quesonpetit frèrepré-citémaispossèdeégalement

l’avantaged’êtresimpleet efficace.

Nousferonsremarquerà noscherslecteursqueceséditeursnesontpasfacileà utiliser aupremierabord,

maisqu’ils offrent descommandesrapides,courtes,puissanteset trèsappréciablesunefois assimilées.

A proposdecetarticle

Cetarticleaétérédigépourservirauplusgrandnombre,maisil estorientéversun publicd’informaticiens

ou d’étudiantseninformatiqueplutôt qu’augrandpublic. Il devrait êtreplusadaptéauxnovicesenmatière

deUnix/Linux, avecévidemmentuneforteorientationversLinux.

39

Page 40: New Cours Linux

CoursLinux - Namur-LUG 40

I L’éditeur viCettepartie du cours présentel’éditeur par excellencedu mondeUnix/Linux,à savoirvi. Rapide, puissant

et compact,vi est l’éditeur de tout administrateur qui se respecte. Sonutilisation n’étant pas vraiment

naturelle, il faut apprendre à le dompter. Unefois ceteffort accompli,il devientdifficile des’enpasser. Cet

article vousapprendra lespartiesqui meparaissentlesplusutiles.

4.1 Édition de textessousLinux

Une destous premiersutilitaires nécessairesur tout systèmed’exploitation est un éditeurde texte. Par

”texte”, j’entendsbiensûrlestextes”bruts”, sansformatage.

Sur lessystèmesde typeUnix, on estcertaindetrouver le célèbreéditeurvi , mêmesur lessystèmestrès

anciens: vi estlivré enstandardsur touslesUnix, cequi enfait l’éditeur le plusutilisé à baseinstalléela

pluslarge.

Il en existe un autre,GNU/Emacs, trèsperformantet trèsversatile.Écrit par RichardStallmanlui-même

(aliasRMS),Emacs saitéditerdestextes,lire desmailsou desnews, lancerun shell,etc.Mais il n’estpas

toujoursinstallé,caril occupebeaucoupplusd’espacedisque.

4.1.1 Qu’est-cequevi ?

vi , estuneabréviationpour ”VIsual editor”. C’estuneextensiondeed et ex , deuxéditeursplusanciens

nepouvantéditerlesfichiersqueligneparligne.Mais vi esttout demêmeun éditeurpleinécran.

vi est rapide,puissantet compact: il tient sur une disquettede boot, capacitéque lui envient pasmal

d’autreséditeurs.SousLinux existeuneversionamélioréedevi . Il s’agit devim , pour”VI iMproved”.

Il esttout demêmenettementconseilléd’utiliser vim plutôt quevi , car il disposed’un certainnombrede

fonctionnalitéssupplémentairesqued’aucunjugeraitindispensabled’un point devueconfort.Néanmoins,

en casde grosproblèmenécessitantde rebootersur disquette,il vaut mieux savoir utiliser vi pur, étant

donnéqueplusriend’autren’estpossibledanscecas.

4.1.2 Fonctionnalitésde vi

Dansla suite,le terme”vi” référeraà ”vim”, par facilité et abusde langage.Lesfonctionnalitésdevi sont

bien plus élevéesquecellesattenduesd’un éditeurtexte par les utilisateursde systèmesnon Unix/Linux.

Parmicelles-ci,on trouve notamment

– Editionenmode(texte)plein écran,pasligne parligne

– Indépendanceparrapportauterminal(via stty)

– Editiondefichier : insertion,modification,etc

– Editiondefichiersmultiples

– Recherche/Remplacementavecdesexpressionsrégulières

– Colorationsyntaxiqueautomatique,enfonctiondutypedefichierédité(codesourceenC,fichierHTML,

PHP, SGML, etc)

– Lancementdecommandesshell

Page 41: New Cours Linux

CoursLinux - Namur-LUG 41

– Macros,abréviations

– Répétitiondecommandes

– Undoinfini

– Insertionducontenud’un fichierexterneàpartir dela positionducurseur

– Fenêtragemultiple (oui, enmodetexte!)

4.1.3 Casoù vi estparticulièr ementadapté

L’administrationsousLinux consistesouvent à éditerdesfichiersdeconfigurationen modetexte. C’est à

ceniveauquel’on a un contrôlemaximalsurcequi peutsepassersursonsystème: il n’y apasd’interface

graphiquequi cachelesdétails.

L’outil idéaldemodificationdesfichiersdeconfigurationenmodetexteestincontestablementvi . Unefois

qu’il estsuffisammentmaîtrisé,il n’est pasimpossibled’avoir terminéuneédition avec vi alorsque la

mêmeéditionsousEmacs enestencoreaustadedu chargementdel’éditeur.

Pourl’édition descripts,vi estaussiunmaître-achat.Il existed’ailleursunnombreconsidérabledeformats

defichierstextespourlesquelsvi utiliseunecolorationsyntaxiqueappropriée.

Lesseulscasoùl’on pourraitsedirequevi n’estpasl’éditeuridéal,c’estsansdoutedansle cadredeprojets

plus importants.Éditerplusd’unevingtainedefichierssimultanémentdevient vite lourd. Danscescas,le

besoindepluginssefait sentir, et Emacs, l’éditeur le pluspersonnalisableaumonde,remplit parfaitement

cettetâche.

4.2 Conceptsde basesousvim

Avantdecommenceràexpliquerlescommandesutiliséessousvi , il estindispensabled’avoir biencompris

lesquelquesprincipesdebasedevi . Ils surprennentsouventle débutantparleur caractèrepeurépandu.

4.2.1 Edition de fichiers

Pourlancervim, riendeplussimple.Il suffit detapersonnom:

vim

Pouréditerun fichier, il suffit depassersonnomenparamètre:

vim monfichier.txt

L’édition sepassecommel’on peuts’y attendre.Le fichier à éditerestchargé en mémoire.vim utilise le

terme”buffer” pourseréférerauxfichiersédités,carils sontplacésenmémoiredansdes”buffers”. Ensuite,

aprèsavoir apportétoutesles modificationsvouluesau buffer, on peut l’écrire sur disque(sansquoi elles

sontbiensûrperdues).L’écriturepeutbiensûrsefairesousun autrenom,afin degarderintactela version

originaledu fichier. Toutceciestun fonctionnementclassiquebienconnu.

4.2.2 Modesutiliséspar vim

Les modesde travail utilisés par vi sont nettementmoins naturels.Ils rebutent souvent le débutant au

premierabord.Maisunefois le pasfranchi,cesystèmes’avèrediablementefficace.

Page 42: New Cours Linux

CoursLinux - Namur-LUG 42

vi possèdetrois grandsmodes,entrelesquelsonswitchesouvent:

1. Le modesaisieou insertion. C’estle modequetoutle mondeconnaît: lorsquel’on frappedestouches

auclavier, leslettressontinséréestellesquellesdansle fichiertexte.C’estle fonctionnementclassique

desautreséditeurs.

2. Le modecommandeestplusinhabituel.C’estle modedanslequelondonnedescommandessimples

àeffectuersurle texte : déplacementdansle buffer, suppressiond’éléments,remplacementd’un mot,

etc.Danscemode,chaquelettretapéelancela commandecorrespondante!

3. Le modeex, ou ligne de commandes. Mode similaire au précédent,il permetd’entrer descom-

mandes,mais plus complexes cette fois. Dansce mode,on tapeune commandecomplexe après

l’invite ��� , et on la valide par la touche[Entrée] . Cescommandesgroupentnotammentles re-

cherches/remlacementpar expressionrégulière,l’écriture desbuffers dansdesfichiers, la sortiede

vim, etc.

4.2.3 Changerdemode

Lesdeuxpremiersmodessontlesplusutilisésaudébut. Au lancementdevi , on setrouve enmodecom-

mande.Pourpouvoir entrerdu texte, il fautdoncpasserenmodeinsertion.

Pourpasseren modeinsertionlorsquel’on esten modecommande,il suffit d’introduire la commandei

(insert)pourpasserenmodeinsertionet insérerdescaractèresà partir de la positionsousle curseur. Une

alternative estdedonnerla commandea (append)pourpasserenmodeinsertionet insérerdescaractèresà

partir dela positionqui suit cellesousle curseur.

Aprèsavoir entréle texte souhaité,il fautrevenir aumodecommande,y comprissi la commandequel’on

veutentrerestun simpledéplacementdansle texte! Poursortir du modeinsertion,il suffit d’appuyersurla

touche[Escape] . On peutalorsentrerdescommandessimples(déplacementdansle texte, suppression

dela lignecourante,etc).

Le troisièmemodedevient vite indispensablepourprofiterdela puissancedevi . Poury entrer(à partir du

modecommande),ontapele caractèred’invite ��� . vi passealorsenmodelignedecommande.Il attendque

l’utilisateur tapesacommandecomplexe validéeparla touche[Entrée] . vi exécutealorsla commande

complexe (recherche,remplacement,etc),puisrevient tout seulenmodeprincipal,le modecommande.

Il faut évidemmentconstammentpasserdu modecommandeau modeinsertion,ce qui paraîtabomina-

blementlourd, a priori. Cependant,les avantagescontrebalancentlargementcesinconvénients.Une fois

l’habitudeprise,cesontlesmodesplusclassiquesd’éditiondetexte qui paraissentcontre-naturels!

Commed’habitudesousLinux, il fautmettrelesmainsdansle cambouis: lancervim , essayerlesquelques

commandes,chipoterunpeupourbienassimilerle concept,etc.Cen’estqu’aufil dutempspasséàs’exercer

quel’investissementconsentidevient extrêmementrentable.

4.2.4 Commentsortir de vim ?

Une questionangoissanteest : commentsortir de vim ? La manièreclassiqueestcelle du modeligne de

commande(ex). Celaconsisteà taperla ligne suivante,envalidantpar [Entrée] :

:q!

Page 43: New Cours Linux

CoursLinux - Namur-LUG 43

Cettecommande”complexe” ��� fait sortir devi (q), sansenregistrerlesmodifications( ! ).

Uneautremanièreclassiqueestd’utiliser la commandesimple

ZZ

Cettecommande(enmodecommande,naturellement)fait sortir devi , maisenenregistrantleséventuelles

modifications.

4.2.5 Principesgénérauxde vim

Dansle modeligne decommande(ex), vi utilise un certainnombredeconventionsqu’il esttrèsutile de

connaître.

Unepremièreconventionestl’utilisation ducaractère! . Enajoutantcecaractèredirectementaprèsla com-

mande,onobtientuneversionlégèrementmodifiéedela commande.Ainsi, :q sortdevi , saufsi le buffer

aétémodifié,tandisque :q ! sortdevi mêmesi le buffer aétémodifié(càdavecpertedesmodifications,

danscecas).

UnesecondeconventionestsimilaireàsonéquivalentsousEmacs: c’estla notionderépétition.Enpréfixant

unecommandeparun nombreX (dansle modecommandeou ligne decommande/ex), on obtientle même

effet quesi on avait entréX fois la commandesanscenombre.Ainsi, pour la commandedd qui supprime

la ligne courante,la commande5dd a pour effet de supprimer5 lignes(commesi on avait tapé5 fois la

commandedd).

Après avoir rapidementpasséen revue cesdifférentsprincipes,on peut raisonnablementse lancerdans

l’explorationde vi . Il suffira de donneruneliste descommandesles plus utilisées,et de faire desessais

sur machinepour voir si l’on a bien compris.SousLinux, la meilleurefaçonde faire est bien souvent

l’auto-formationparl’action (depréférenceaprèsprésentationdesconceptsparunepersonnecompétente).

4.3 Utilisation basiquede vim

Il esttempsdepasserà la pratique,enappliquantlesprincipesvusci-dessus.Unepremièrefaçondefaire

estdelancerle tutoriel devim. Pourcefaire,lancer, auniveaudu shell,la commande

vimtutor

Si cettecommanden’estpasdisponible,cen’estpastrèsgrave. Il suffit decopierle fichier texte

/usr/share/vim/tutor/tutor

danssonrépertoirepersonnel,puisdelancervim enlui passantl’emplacementdela copiecommefichier à

éditer(premierparamètredela commandevim).

Une autrefaçonestde lire la documentationsystème(un peulongue),et de semettreà la tâche.Pource

genredesolution,autantlire d’abordcequi suit avantderevenir à la doccomplète: cesontlesformesles

plusutiliséesdevim.

4.3.1 Commandesde déplacement

Les premièreschosesà connaîtresontles commandesde déplacementau seind’un fichier. Parmi les très

nombreuses,voici lesplusutilisées.Il enexisteencored’autres,maisellesnesontpasvraiementindispen-

Page 44: New Cours Linux

CoursLinux - Namur-LUG 44

sablesdansuneutilisationstandard(saufpourlesutilisateurstrèsavancés).

Déplacementd’une unité

Poursedéplacerd’un caractère(enmodecommande),lescommandessuivantessontdisponibles:

– h pouralleraucaractèreàgauche(flèchegauche)

– j pourdescendreà la lignesuivante(flèchebas)

– k pourremonterà la ligneprécédente(flèchehaut)

– l pouraller aucaractèreàdroite(flèchedroite)

Cecia l’air fort primitif, maisestindispensablesur lesclaviersqui nedisposentpasdestouchesfléchées!

Pourlesautresclaviers,l’utilisation destouchesfléchéesestpossible.

Déplacementau seind’une ligne

Voici commentsedéplacerà l’intérieur dela ligne courante:

– 0 (zéro), ou la touche”home” pourallerendébut deligne

– $ ou la touche”end” pouraller enfin deligne

– w (word)pouralleraumotsuivant

– b (back)pouraller aumotprécédent

– fx (forwardx) pourallerauprochaincaractèrex

– Fx fait la mêmechosequefx, maisenreculantversla gauchepourtrouver le caractèrex

– tx (to x) pouralleraucaractèreprécédantle prochaincaractèrex

– Tx fait la mêmechosequetx, maisversla gauche

Lescommandesf et t sontunpeuspéciales.Ellesacceptentcommeargumentuncaractère.Parexemple: fpdéplacele curseursousle prochaincaractère’p’ dela ligne.C’estpratiquepourundéplacementplusrapide

auseind’une ligne, maissurtoutenassociationavec la commande’d’ desuppression.Ainsi, df. supprime

(d) tout depuisla positiondu curseurjusqu’aupremiercaractère’.’ de la ligne (f.). Ceci correspondà la

suppressiondela fin dephrasecourante.

La commandet est utile aussi.Lorsqu’on édite du HTML, il est souvent utile de supprimerle texte du

curseurjusqu’auprochaindébut detag,noninclusif.Pourréalisercela,la commandeestdt , cequi signifie

supprimerlescaractèresàpartir du curseurjusqu’auprochaincaractère’ ’ dela ligne,noninclusivement.

Déplacementsentre lignes

– G sertàsedéplacerà la dernièrelignedu fichier

– xG sertà sedéplacerà la ligne x (paramètrenumériquex) Exemple: 1G sertà sedéplacerà la ligne 1,

càdendébut defichier

– :x poursedéplacerà la ligne x (paramètrenumériquex)

– [CTRL] +F (forward)poursedéplacerd’un écranversle bas

– [CTRL] +B (backward)poursedéplacerd’un écranversle haut

– % (suruneparenthèse)poursedéplacersurla parenthèsecorrespondantà la paire(ouverture-fermeture).

Trèsutile pourla programmationenC, et surtoutdansdeslangagesfonctionnels,connuspourleur utili-

sationmassive desparenthèses.

Page 45: New Cours Linux

CoursLinux - Namur-LUG 45

– { ou } poursedéplaceraublocprécédentousuivant.La notiondeblocvarieselonle typedefichierédité.

C’estparexempleun paragrapheenHTML, ou le corpsd’unefonctionenlangageC.

4.3.2 Commandesde changementde mode

En modecommande,lorsquel’on setrouve surun caractèredonné,on peutpasserenmodeinsertionavec,

principalement:

– a pourinsertionaprèsle curseur

– i pourinsertionavantle curseur

– I pourinsertionendébut deligne

– A pourinsertionenfin deligne

– o pourinsertionsurla lignesuivante

– O pourinsertionà la ligne précédente

4.3.3 Commandesde suppression

Toujoursenmodecommande,voici quelquescommandesutilesdesuppression.

– x poursupprimerle caractèresousle curseur

– X poursupprimerle caractèreavantle curseur(backspace)

– dw (deleteword)poursupprimerla fin du motcourant

– dd poursupprimerla lignecourante

– xdd poursupprimerx lignes.Ex : 5dd poursupprimer5 lignes

– dG (delete,EOF)poursupprimerdu curseurjusqu’àla fin dufichier

– dfx (deleteforwardparamx) poursupprimerdu curseurjusqu’auprochaincaractèrex (paramètre)dela

lignecourante(cecaractèrex inclus)

– dtx (deleteto x) poursupprimerducurseurjusqu’auprochaincaractèrex (paramètre)dela lignecourante

(cecaractèrex exclus)

4.3.4 Commandesde modification

En modecommande,voici lescommandesprincipalespoursubstituerdu texte :

– cw (changeword) pourchangerla fin du mot encours(suppressiondela fin du mot et passageenmode

insertion)

– ccpourchangerla ligneentière(suppressionet passageenmodeinsertion)

– s (substitute)poursubstituerle caractère(suppressionetentréeenmodeinsertion)

– xs (paramètrex) poursubstituerx caractères

– ˜ pourmettrela lettresousle curseurenmajuscule

– x˜ (paramètrex) pourmettrelesx caractèressuivantsenmajuscule

4.3.5 Commandes”Fichiers”

– ZZ ou :x pourquittervim etsauvegarderleschangementséventuels

– :w pourenregistrerle buffer courant(”write”)

– :w nom(paramètrenom) pourenregistrerle buffer sousunnouveaunom(”write as”)

Page 46: New Cours Linux

CoursLinux - Namur-LUG 46

– :w ! nom(paramètrenom) pourenregistrerle buffer sousun nouveaunom,et l’écrasers’il existait déjà.

– :q pourquitter(échouesi unbuffer aétémodifié)

– :q ! pourquittervi (changementsperdussi buffer modifié)

– :e nom(paramètrenom) pouréditerunfichier supplémentaire(engardantlesanciensenmémoire).

4.3.6 Commandescouper-copier-coller

– yy ouY pourcopierla ligne encoursdansle tampon

– p pourcoller le contenudu tamponaprèsle curseur

– P pourcoller le contenudu tamponavantle curseur

– dd pourcouperla ligneencoursdansle tampon

– " xyy (x paramètredetypecaractère)pourcopierla ligne encoursdansle tamponportantle nomx

– " xp pourcoller le contenudu tampondenomx (paramètre)

– " xP idem,maisjusteavantla positionactuelle,pasjusteaprès

– y + commandesde déplacementpourmettredansle tamponcequi suit le curseurjusqu’àl’endroit où

arrive la commandededéplacement.Exemple: yw poury placerle mot courant,y0 (zéro)poury placer

le début deligne jusqu’aucurseur.

4.4 Commandesplus avancées

vi possèdeaussiuncertainnombredefonctionnalitésbienplusavancées.Lesplusutilesparmicelles-cisont

présentéesci-dessous.

4.4.1 Rechercheset remplacement

Pourchercheruneoccurence,il suffit dedéfinir le termerecherché.

– /nompourrechercherla 1èreoccurencedenom, enparamètre.nompeutêtresimplementle textecherché,

ou uneexpressionrégulière.

– n pourchercherl’occurencesuivante

– N pourchercherl’occurenceprécédente

– :set ic pourignorerla casselorsdesrecherches(nepasdifférenciermajusculesetminuscules)

– setnoic pournepasignorerla casselorsdesrecherches(recherchecase-sensitive, cellepardéfaut)

Pourremplaceruneoccurence,onpréciseenplusle termederemplacementlorsquel’occurenceesttrouvée:

– :s/avant/aprèspourremplacerla premièreoccurenceavantdansla ligne couranteparaprès

– :s/avant/après/g pourremplacertouteslesoccurencesavantdela lignecouranteparaprès

– :%s/avant/après/g pour faire un rechercher/remplacerglobal,sur tout le fichier. ”%” signifie toutesles

lignes.Onpeutspécifierd’autresétendues(blocencours,dela ligne x à la ligne y, . . .).

4.4.2 Sélection

Il estpossiblededéfinir un bloc sur lequeleffectuerdesactionsplustard.C’est la sélectiontelle quenous

la connaissonshabituellement:

Page 47: New Cours Linux

CoursLinux - Namur-LUG 47

– v pourdéfinirunblocqui commencesousle curseurets’étendjusqu’àl’endroit oùl’on déplacele curseur

aveclescommandesdedéplacement.

– V pourpasseren”modevisuel”, c-à-ddéfinirun bloccomposédelignesentières,commençantà la ligne

couranteets’étendantjusqu’àla ligne où l’on sedéplace.

Unefois la sélectioneffectuée,on peuteffectuerdesactionssimilairesà cellesdu couper-coller, ainsique

entreautres:

– d pourcouperla sélectiondansun tampon

– y pourcopierla sélectiondansun tampon

– p pourcoller la sélectionaprèsle curseur

– P pourcoller la sélectionavantle curseur

– :s poureffectuerdesrechercher/remplacerlimitésaubloc (voir ci-dessus).

4.4.3 Coloration syntaxique

– :syntax on pouractiver la colorationsyntaxique

– :syntax off pourla désactiver

– :set background=dark pourquela colorationchoisissedescouleursadaptéesà un fond sombre(casde

la consoletexte)

– :set background=light pourquela colorationchoisissedescouleursadaptéesà un fond clair (casd’un

xtermparexemple)

4.4.4 Insertion d’un autre fichier texte

:r filenamepourinclurele contenudufichierfilenameàpartir dela positionducurseur.

4.4.5 Lancer un sous-shell

Pourlancerunecommandeshell, taper: !commande, en remplaçantcommandepar la commandedésirée.

C’estpratiquedansdenombreuxcas.Exemples:

– : ! sgml2html -l fr -c latin1 -s 1 fichier.sgml pourgénérerlespageshtml corres-

pondantaufichier sourcelinuxdocquel’on édite

– : ! sort pourtrier les lignesdu fichier parordrealphabétique.Cetypedecommandepeutmêmeagir

surunbloc,s’il aétésélectionnéavant.

– [CTRL] +Z : mettrevi enarrière-plan.Celacorrespondà la combinaisonde touchesstandarddu shell

pourmettreunprocessusenarrière-plan.Pourle remettreaupremierplan,utiliser la commandefg ou les

raccourcisdu genre%n(oùn estle numérodu job).

4.4.6 Edition multi-fichiers

– :e filenamepouréditerfilenameenplus,engardantlesautresbuffers

– :b filenamepourpasseraubuffer filename(affichage)

– :b n pourpasseraubuffer numéron

– :ls pourlister lesbuffersouverts

– [CTRL] -ˆ pourswitcherentredeuxbuffers(dits ”alternate”).

Page 48: New Cours Linux

CoursLinux - Namur-LUG 48

II L’éditeur emacs

4.5 Description de la bête

Avant de commencerla descriptionde l’utilisation d’emacs, vous remarquerezquevouspouvez lancer

emacs tantà partir du modeconsolequed’unesessiongraphique.Lesprésentationssontlégèrementdif-

férentesmaisles fonctionnalitésrestentlesmêmes.VoustrouverezsurcertainssystèmesuneversionX de

emacs appeléexemacs . Cetteversionestbeaucoupplus lourde (elle utilise plus de ressources)que la

premièremaisestplus conviviale.. .Faitesvotre choix! Tout ce qui va êtreracontédanscettesectionest

valabletantpouremacs quepourxemacs .

Quelquespetitesnotationsavantd’entrerdansle vif dusujet:

C-x signifiequevousdevezappuyezsimultanémentsurlestouches[Ctrl] et [x] ;

M-p signifie quevous devez appuyersimultanémentsur les touches[Alt] et [p]. Attention, sur certains

systèmes,la touche[Alt] n’a aucuneffet, dèslors M-p signifiequevousdevezappuyersurla touche

[Esc] suivi dela touche[p]. M estuneabbréviationpourMeta-Key;

C-M-p signifiequevousdevezappuyersimultanémentsur les touches[Ctrl], [Alt] et [p]. Si votre touche

[Alt] n’a pasd’effet, appuyersurla touche[Esc] puisla relâcheréquivautà maintenirla touche[Alt]

enfoncée;

Pourtestersi c’estvotretouche[Alt] ou[Esc]qui estopérationnelle,pressezsimultanémentdansunpremier

temps[Alt] et [x] ; si M-x apparaîtdansle mini-buffer, c’estquela touche[Alt] estopérationnelle.Faites

suivre deC-g pourannulerl’action (C-g estla combinaisondetouchequi permetd’annuleruneinteraction

avecle mini-buffer). Si la premièrecombinaisonn’afficheriendansle mini-buffer, essayezenappuyantsur

la touche[Esc] suivie de [x] ; dansce cas,vousallez voir apparaîtredansle mini-buffer le messageM-x .

Faiteségalementsuivre deC-g pourannulerl’opération.

L’interfaced’emacs estdiviséeentrois parties(il existeunequatrièmepartie: la barredemenudontnous

n’aborderonspasl’utilisation dansle cadredececours).Unepremièredanslaquellevouspouvezmanipuler

du texte,unesecondeaufond del’écranappeléeligne d’état et,enfin,unetroisièmejusteen-dessousdela

précédenteappeléemini-buffer.

La ligne d’état indique le nom du fichier ainsi que le modedanslequel vous vous trouvez (ce modese

trouve entreparenthèsessur la ligne d’état).Vousy trouverezégalementle numérodela ligne sur laquelle

vousvoustrouvez (c’est le chiffre qui, dansla ligne d’état,suit immédiatementla lettre ’ l’ majuscule).A

l’extrêmedroiteapparaîtle mot Bot , qui voussignalequevousvoyezuniquementla fin du fichier. Sinon,

apparaîtle mot All qui signifie quevousvoyez tout ou Top qui signifie quevousvoyez uniquementle

début ou encore,un pourcentagequi augmenteaufur et àmesurequel’on ’déroule’le fichier.

Le mini-buffer estutilisé paremacs pourcommuniqueravec vous.Et c’està partir decemini-buffer que

vouscommuniquerezàemacs certainescommandeàexécuter.

Page 49: New Cours Linux

CoursLinux - Namur-LUG 49

4.6 Commandesd’édition élémentaire

Avantd’effecuterdeschangementsdansun texte, il fautsavoir s’y déplacer. A défautdestouchesfléchées,

vouspouvezutiliser lesraccourcisclavier suivants:

C-f avanced’un caractère(forward) ;

C-b reculed’un caractère(backward) ;

C-n passeà la ligne suivante(next) ;

C-p passeà la ligne précédente(previous) ;

Si vousmaintenezlestouchesenfoncées,le systèmerépéteral’action jusqu’àrelâchementdecesdernières.

A partir du momentoù vous insérezun ou plusieurscaractères,deuxastérisquessontaffichéesà gauche

dansla ligned’état, et ce,pourvousindiquerquevousavezmodifiéle fichier.

En plusdesquatrepremièresopérationssus-citéessurlescaractères,nouspouvonssignalerlessuivantes:

[Backspace] effacele caractèreprécédent;

[Delete] mêmeeffet que[Backspace];C-d effacele caractèresousle curseur;

C-t transposelesdeuxcaractèresprécédents;

Sur certainssystèmes,emacs estconfiguréde telle sortequela touche[Delete] ait le mêmeeffet quela

combinaisondetoucheC-d. C’estl’une desfacettesd’emacs : il estconfigurableàsouhait1

Vouspouvezégalementeffectuerdesopérationssurlesmots:

M-b sedéplaceendébut demot,celuidirectementàgauche(back) ;

M-f sedéplaceendébut demot,celuidirectementàdroite(forward) ;

M-[Backspace] effaceàgauchedumot;

M-d effaceàdroitedumot;

M-t transposedeuxmotsautourdu curseur;

M-u metun motenmajuscule;

M-l metun motenminuscule;

LescombinaisonsdestouchesC-a etC-edéplacentle curseurrespectivementaudébut età la fin dela ligne

courante.Vouspouvezvousrendreà uneligne spécifiqueentapantM-x goto-line suivi d’[Entrée] puisdu

numérodeligneà laquellevousvoulezvousrendre.J’ajouteraiégalementcespetitescommandesutilesqui

effectuentdesopérationssurleslignes:

C-o Ouvreuneligneau-dessusducurseurpourinsertiondetexte;

C-x C-o Ferme/Effacetoutesleslignesblanchespar-dessuset par-dessousle curseur;

C-k Effaceuneligneàpartir du curseurjusqu’àla fin decelle-ci;

Pouravancerd’unepage,pressezC-v. Si vousdevezreculerd’unepage,M-v . Vouspouvezbiensûrutiliser

lestouches[PageUp]et [PageDown] poureffectuercesactions.

Noustermineronscettepremièresectionpardepetitesopérationssurlespages:1Pourplusd’informationsurla configurationd’emacs référez-vousaudocumentécrit parFabianBastinsurle siteduNamur-

LUG ou bienlespagesd’aidesuremacs intégréeausystème.

Page 50: New Cours Linux

CoursLinux - Namur-LUG 50

C-x [ ou C-< Déplacementaudébut dufichier;

C-x ] ou C-> Déplacementà la fin du fichier;

C-x l Indiquele nombretotal delignesdu fichier;

Signalonsque les commandesde déplacementet d’édition élémentairespeuvent êtreégalementutilisées

sousbash.

4.7 Editer plusieursfichiers à la fois

Quandvous ouvrezun fichier avec emacs, ce dernier le charge en mémoire.Le contenudu fichier se

trouvantenmémoires’appelleunbuffer. Cequ’emacs vousafficheestle buffer, doncle contenudufichier

quevousavezouvert. Lorsquevousfaitesdesmodificationsdetexte, cen’estpasle fichier qui estmodifié

maisle buffer. Lesmodificationseffectuéesnesontprisesencomptequelorsquevousenregistrezle buffer.

Pourouvrir un secondfichier, employez le raccourciC-x C-f. Dansle mini-buffer vousverrezapparaître

un messagedu typeFind file : ˜/ . Pourspécifierun nomdefichier, la syntaxe estidentiqueà celle

employée par le shell et la complétionest active (utilisez la touche[Tab] ou encore[Space] ). Si le

fichier quevousspécifiezn’existepasil seracréé,sinonil estouvert dansun deuxièmebuffer. En d’autres

termes,si vousouvrezplusieursfichiersà la fois, le premierneserapasécraséparl’ouverturedusecond.

Pourpasserd’un buffer à l’autre vouspouvez utiliser la combinaisonde toucheC-x b. Quandvousfaites

cela,le mini-buffer vousdemandeversquelbuffer vousvoulez’switcher’.Pardéfaut,le buffer estle dernier

qui étaitactif avant l’ouverturedu nouveaufichier. Il voussuffit d’appuyersur la touche[Entrée] pour

mettreà exécutionle changement.Si vousavez oublié les fichiersqui sontactifs, pressezsimplementla

touche [Tab] etcesderniersvousserontlistésparemacs.

Si vousnevoulezpasenregistrerlesmodificationseffectuéesdansunbuffer, vouspouvezen’tuer’ l’édition

parC-x k suivi dela touche[Entrée].Attention,cettefonctionnalitén’a paspourbut d’effacerle fichierque

vouséditezmaissimplementd’arrêterl’édition dubuffer enle supprimantdela listedesbuffers.Quandvous

faitescela,emacs vavousdemanderquelestle buffer dontvousvoulezarrêterl’édition. Pardéfaut,c’estle

buffer courant.Si c’est le cas,pressezsimplementla touche[Entrée] . Ensuite,emacs vousdemandera

confirmation(la demandedeconfirmationsefait si le fichieraréellementétémodifié).Pourconfirmer, tapez

’yes’ et pressez[Entrée] .

Pourenregister les modificationsapportéesau buffer, utilisez simplementC-x C-s : emacs enregistre le

buffer actif.

4.8 Terminer unesession

Quandvousavezfini detravailler avecemacs, vérifiezquevousavezbienenregistrétouslesfichiers.Vous

pouvezquitteremacs avecC-x C-c. ParfoisC-x C-c vousposeraunequestion2 ou deuxvia le mini-buffer

avantdequitter, nepaniquezpas,répondez-yenfonction.2Les questionsconcernentuniquementl’enregistrementdesmodificationsau casoù desbuffers modifiésn’auraientpasété

engregistrés.

Page 51: New Cours Linux

CoursLinux - Namur-LUG 51

4.9 Copier, coller, supprimer desparties de texte

Commetout bonéditeur, emacs permetde fairedu copier-coller. Pourpouvoir réalisercetteaction,vous

devez définir le début et la fin du bloc concerné.Le début du bloc estappelémark et la fin de ce dernier

estappelépoint. Pourmarquerle début du bloc, placezle curseurau bon endroitpuis faitesC-[Espace].Vousverrezapparaîtredansle mini-buffer le messageMark set . Pardéfaut,il n’y pasdepoint lumineux

ou de surbrillancepour indiquer que le marquagea été fait à un endroit précis; de toute manièrevous

savez où vous avez déposéla mark . Vous pouvez toutefoisactiver la surbrillanceen faisantappelà la

fonctiontransient-mark3.Cettedernièrenefonctionnequ’enmodegraphique4. Unezonedetextepeut-être

égalementsélectionnéeà l’aide dela souris: trèspratique.

En ce qui concernele marquagede fin, c’est biensimple,ce derniercorrespondà la positioncourantedu

curseurdansle texte.Aprèsavoir poséla mark etdéplacéle curseurpourindiquerla fin dubloc,vousavez

déterminéle blocdetexte prêtàêtrecopier-coller.

Avant de coller le bloc séléctionné,vousdevez le copier. Vérifiez quevousavez bien délimité ce dernier,

puis,pourle copier, faitesM-w . Emacs enregistrele bloc enmémoire.Ensuite,pourle coller, placez-vous

justeà l’endroit désirépuisfaitesC-y.

Pourdéplacerun bloc de texte (couper-coller), d’un point à un autre,sélectionneztout d’abordla zonede

texte concernée,suivi de C-w. C-w coupela zonede texte qui doit êtredéplacée.Ensuiteplacez-vous à

l’endroit oùvousvoulezcoller le bloc,suivi deC-y.

4.10 Chercher et remplacerdesexpressions

4.10.1 Chercher uneexpression

Nousallonsvoir danscettesectiondeuxmanièresde rechercherdu texte avec emacs. Notezqu’il existe

d’autresmanièresquenousn’aborderonspasici.

La façonla plusfacilederechercherunechaînedecaractèresestd’utiliser la fonctionisearch (incrementale

search). Cetteméthodeprocède,commesonnoml’indique, à unerechercheincrémentale,i.e. qu’aufur et

à mesurequevousintroduisezla chaînede caractèresà chercher, emacs placele curseursur la première

occurencedela chaîneentrée.

Vouspouvezutiliser lesraccourcissuivantpourfaireappelàcettefonction:

C-s Poureffectuerunerechercheincrémentaleversl’avant;

C-r Poureffectuerunerechercheincrémentaleversl’arrière;

Nouspouvonsavoir dansuntexteplusieursoccurencesd’un mêmemot.Pouraccéderàl’occurencesuivante

du mot quevouscherchez,faitesà nouveauC-s. Si, lors devotrerecherche,vousarrivezà la fin du buffer,

emacs vousdiraFailing i-search : soit il n’a pastrouvéd’occurencedumotrecherchéoubien,soit

il està la fin dubuffer et il n’y aplusd’occurencedumot.Pourcontinuerla recherchefaitesànouveauC-s,emacs recommencerala rechercheàpartir du début du buffer. VouspouvezprocéderdemêmeavecC-r .

3Voir point 4.12pourplusdedétailsurl’appeldefonction.4Au momentdela rédactiondecedocument,la dernièreversiond’emacsEmacs21 sortait.Cetteversionsupportelescouleurs

enmodetexte.

Page 52: New Cours Linux

CoursLinux - Namur-LUG 52

4.10.2 Chercher et remplaceruneexpression

Il estparfoisutile dansun texte desavoir remplacerunechaînedecaractèresparuneautre(surtoutsi il y a

mille occurencesdela première!).

Pour effectuercetteaction faitesM-% . Emacs vous demanderatout d’abord la chaînede caractèresà

remplacer, ensuitela chaînedecaractèresderemplacement.Vouspourrez,lorsdel’exécutiondela fonction,

confirmerou infirmer le remplacementdela chaînedecaractèreentapantrespectivement’y’ ou ’n’.

4.11 Répéterunecommandeet annuler unecommande

Pourrépéterunecommande,vousdevezspécifierà emacs le nombrede fois quevousvoulezl’exécuter,

suivi dela commandeà répéter.

FaitesC-u, suivi du nombre,suivi de la commande(raccourciclavier) pour effectuerla répétitionde la

commandedésirée.

Exemple:

Si vousvoulezeffacer10 caractèresl’un à la suitedel’autre, faitesC-u 10 C-d.

Si vousvoulezdescendrede10 lignesdansle texte faitesC-u 10 C-n.

Si vousvoulezécrire100fois la lettre’s’, faitesC-u 100s.

Emacs offre, tout commevi , la possibilitéd’annulerl’effet desdernièrescommandeseffectuées(et ceà

l’infini). Pourannulerl’effet dela dernièrecommande,faitesC-_. Commentferiez-vouspourannulerles10

dernièresactionseffectués?

4.12 Lescommandesexplicites: M-x <commande-explicite>

Tousles raccourcisclavier étudiésjusqu’àprésentsontdesappelsà desfonctionsinternesà emacs. Par

exemple,C-p estunemanièrede dire à emacs que l’on veut exécuterla fonction interneprevious-

line . Toutescesfonctionsinternespeuvent être appeléespar leur nom en utilisant M-x . Si vous avez

oublié que previous-line est lié à C-p, vous pouvez tapersimplementM-x previous-line suivi de

[Entrée]. Cesontdeuxmanièresdefairequi ont le mêmeeffet.

Il existe beaucoupde fonctionsinternesà emacs. Toutesne peuvent êtreinvoquéesà l’aide de raccourci

clavier. Par contre,toutescesfonctionspeuvent êtreappeléesà l’aide de M-x . Notezquenousavons la

complétionsurlesfonctions.

4.13 Lesmodesen emacs

4.13.1 Le modefondamental

Lesbuffersd’emacs sontassociésà desmodes. La raisond’êtredecesmodesestdueaux lesdifférentes

manièresd’éditerun texte.Parexemple,on écrit pasun mail commeon pourraitécrireun programme.

Page 53: New Cours Linux

CoursLinux - Namur-LUG 53

Le modele plus basicest le mode fundamentalqui ne possèdeaucunecommandeparticulière.Lorsque

l’on tapeC-x b et qu’on spécifieque l’on veux ouvrir le buffer ’foo’, emacs en ouvreun nouveau.Le

modepardéfautestle modefundamental. Dansun cascontraitre,nouspouvonsl’invoquerenfaisantM-xfundamental-mode. Tousles modespeuvent êtreappelésvia la commandeM-x <nom-de-mode>-modequi fait basculerle buffer courantdanscemode.

Pourobtenirdel’aide surle mode,faitesC-h m.

4.13.2 Lesmodesde programmation

Si vousouvrezavecemacs unfichierdontl’extensionest.c, il passeraenmodeC (c-mode). Si vousouvrez

unfichierdontl’extensionest.for ou .f, vousserezenmodefortran(fortran-mode). Cenesontquequelques

exemplesparmistantd’autres.

Pourobtenirdel’aide surle modedeprogrammationdanslequelvousprogrammez,faitesC-h m.

4.14 L’aide en ligne : C-h

Où trouver de l’aide est l’éternellequestion! Si vousvoulezen apprendreplus sur emacs, vouspouvez

consulter la documentationdisponible sur votre système(man, info, /usr/doc/emacs /* ). Nous

trouvons,fournit avecemacs, un tutorial sur lequelvouspouvezagir. Pourfaireappelà ce tutorial, faites

C-h t.

Plusieurstypesd’aidesontdisponibles:

C-h f Pourobtenirdel’aide surunefonction;

C-h k Pourobtenirdel’aide surun raccourciclavier ;

C-h m Pourobtenirdel’aide surlesmodesd’éditions;

C-h C-h Pourobtenirdel’aide surl’aide;

Vous pouvez égalementétudier la configurationd’emacs en vous référant au document’Configurer

Emacs’ écritparFabianBastin.Cedocumentsetrouvesurle siteduNamurLUG (http://namurlug .

org ).

Page 54: New Cours Linux

Chapitr e 5

Administration

5.1 Intr oduction

Le systèmeLinux (commetoutsystèmeUnix) estunsystèmed’exploitationmulti-utilisateuretmulti-tâche.

Un systèmemulti-utilisateursignifiequeplusieursutilisateurspeuventemployer la mêmemachineenmême

temps.Un systèmemulti-tâcheestun systèmequi permetà chaqueutilisateurd’exécutersimultanément

plusieursprogrammes.

D’une part, lorsquel’on a plusieurspersonnesqui peuvent utiliser unemêmemachine,il est nécessaire

d’établir unepolitiquedegestiondecesutilisateurs. Cettepolitiquedegestionconcerneplusieursaspects

qui ferontl’objet decechapitre.

Tout d’abord,nousverronsquelquessimplescommandesconcernantla gestiondu systèmeen général.

Ensuite,nousverronscommentun utilisateurpeutgérersespropresfichierset lespartagerauxautresuti-

lisateurs.Cettenotiondepartagenousconduiraversla notiondegroupe.Nousparleronsdela manièrede

gérercesgroupes.

D’autre part, lorsquel’on a un utilisateurqui peutexécuterplusieursprogrammesen mêmetemps,il est

nécessaireégalementd’établir unepolitique de gestiondesprocessussous-jacentsà l’exécutiondespro-

grammes.Et c’estcettepolitiquedegestionquenousdétailleronsparla suite.

Finalement,nousexpliqueronscommentutiliser lesgestionnairesdepackagesrpm pourlesfichiers.rpm

et,dpkg pourlesfichiers.deb .

5.2 Commandesde gestiongénérale

5.2.1 Passeren superutilisateur

L’administrationdusystèmeestgénéralementdestinéeausuperutilisateur. Le superutilisateurou root est

la personnequi possèdetouslesdroitset privilègessurla machine.Pourvousconnecterentantqueroot,à

l’invite ”login” voustapezroot suivi de [Enter] . Ensuite,vousentrezle mot depassequi lui estréservé.

Il estgénéralementdéconseilléde seconnecteren tant queroot . La mèthodequenouspréfèronsestde

se connecteren tant que simple utilisateuret de faire la commandesu . Cettedernièrevous demandera

le mot de passedu root avant de vousaccorderles privilèges.Pourarrêterl’effet de la commandesu ,

54

Page 55: New Cours Linux

CoursLinux - Namur-LUG 55

vousappuierezsimultanémentsurlestouches[Ctrl] et [d] . Vouspouvezégalement,aveccettecommande,

possèderlesprivilègesroot le tempsd’exécutiond’unecommande.Poureffectuerunetelleaction,utilisez

la commandesu avec l’option -c suivie du nomdela commande.Par exemple,vouspouver arrêtervotre

systèmeentapant:

$ su -c halt

5.2.2 Redémarrer/arrêter le système

Appuyer sur le boutonpower pour arrêterune machineLinux n’est pas la meilleure idée. Si tel est le

cas,vousremarquerezque,lorsquevous la redémarrez,le systèmeexécuteau momentdu démarrageun

programmedu nom fsck . Celasignifiequele systèmen’a paspu démonterlesdisquescorrectement.1 De

plus, il estrisquéquevousperdiezou endommagiezdesfichiersdeconfiguration.Pourarrêterle système

proprement,vouspouvez utiliser la commandehalt. L’arrêt du systèmeconsistetout d’abordà tuer tous

les processusutilisateurspuis,d’arrêtertousles servicesqui ont étélancéau démarrage,de démonterles

disquespréalablementmonter, pourfinalementarrêterle noyau.

Parfois, il estnécessairede redémarrerunemachine,parceque l’on a, par exemple,installéun nouveau

noyau.Pourredémarrerle système,vouspouvezutiliser la commanderebootouencorela célèbreséquence

detouche[Ctrl]+[Alt]+[Delete] .

Surcertainesdistributionscescommandesnefonctionnentquequandvousêtesroot .

5.3 Gestiondesutilisateurs

5.3.1 Un peude théorie

Imaginonsle scénarioclassiqued’unemachinehébergeantplusieursutilisateurs.Chaqueutilisateurpossède

sonproprerépertoiresur la machinedanslequelleil peutstocker sesdonnéespersonnelles.On appellece

répertoirele homedirectoryou le répertoire homede l’utilisateur. Le répertoirecontenanttous les utili-

sateursestgénéralementle répertoire/home.2 Ainsi le homedirectoryde l’utilisateur Linus senommera

/home/Linus. C’estdanscerépertoirequ’estdéfini le profil del’utilisateur Linus. Le profil del’utilisateur

est l’ensembledesfichiersde configurationdesprogrammesquel’utilisateur utilise. De plus,seul l’utili-

sateurLinus estautoriséà entrerdanssonrépertoire,y copier, lire, déplacerdesfichiersou répertoires,à

l’exceptiondu super-utilisateur.

Un utilisateurestidentifié parun numéroquel’on appellel’UID (User IDentificator). L’utilisateur root

possèdetoujours l’UID 0. Ce numérosert au systèmeafin de contrôler les actionsd’un utilisateur. Ce

principe d’identification empêchepar exempleun simple utilisateurd’exécuterune commanderéservée

auroot uniquement.

L’utilisateurroot possèdequelquescommandesafindegérerlesutilisateurs: il peutenajouter, ensuppri-

mer, leurchangerleurmotdepasse.Cessontcespointsquenousallonsabordermaintenant.1Pourle montage/démontagevoir point2.7page27.2Cerépertoireestmodifiable.ParexemplesurFreeBSDc’estle répertoire/usr/local/home.

Page 56: New Cours Linux

CoursLinux - Namur-LUG 56

5.3.2 Ajouter un nouvel utilisateur

La commandeadduser apoureffet d’ajouterun nouvel utilisateurausystème,encréantsonhomedirec-

tory, enmodifiantle fichier /etc/passwd, en lui demandantsonmot depasseet quelquesdiversesinforma-

tions.Le fichier /etc/passwdestle fichier regroupanttouslesutilisateursdusystème.Unelignedecefichier

décritle nomdelogin del’utilisateur, sonUID, sonhomedirectoryet le shellà lanceraprèsla procédurede

login. La syntaxe decettecommandeestla suivante:

adduser <nom_d_utilisateur>

où <nom_d_utilisate ur > est le nom utilisé pour le login et le nom du homedirectory du nouvel

utilisateur.

5.3.3 Enlever un nouvel utilisateur

Pourenlever un utilisateurde votremachine,vousdevez utiliser la commandeuserdel . Elle a pour but

d’enlever dufichier /etc/passwdla ligne correspondantà l’utilisateurpasséenargument.Avecl’option -r ,

le homedirectorydecetutilisateurestégalementsupprimé.Sasyntaxe estla suivante:

userdel <nom_d_utilisateur>

5.3.4 Changer le mot de passe

Un utilisateurun peusoucieuxde la sécuritéde sesdonnéeschangerégulièrementsonmot de passe.La

commandepourchangerle motdepasseestpasswd . Sasyntaxe estla suivante:

passwd [<nom_d_utilisateur>]

Toututilisateurdoit exécutercettecommandesansnomd’utilisateurenargumentpourchangersonmot de

passe.Quantà l’utilisateur root , si il spécifieun nomd’utilisateurenargument,il pourraalorschangerle

motdepassedecetutilisateur.

5.4 Gestiondesgroupes

5.4.1 Un peude théorie.. .

Un groupeestun ensembled’utilisateurs.Lesgroupessontutiliséspourréunirdesutilisateursqui, soit tra-

vaillent surun mêmeprojet,soit ontbesoinsdepermissionsspécifiquesqued’autresutilisateursnedoivent

pasavoir ouencore,pourétablirunehiérarchieauseindesutilisateurs.Lesexemplessuivantsillustrenttrès

bienl’utilisation degroupe:

– NouspourrionstrèsbienimaginerlesutilisateursLinus etAlan dansunmêmegroupekernel destinéau

développementdukernel;

– Sur la DebianGNU/Linux (une distribution Linux), par mesurede sécurité,les utilisateursn’ont pas

accèsaupériphériqueaudio.Le périphériqueaudio(/dev/dsp) appartientaugroupeaudio. Pourqueles

utilisateurspuissentavoir accèsà cepériphiqueafin depouvoir écouterleursmorceauxpréférés,il faut

Page 57: New Cours Linux

CoursLinux - Namur-LUG 57

quecesutilisateurssoientajoutésau groupeaudio . (Voir section5.5 sur les permissionspour plusde

détail).

– Dansuneinstitutioncommeuneécole,si desprofesseurset desétudiantsont accèsà la mêmemachine,

mettrelesprofesseursdansun groupeprofesseurset lesétudiantsdansun groupeétudiants permetde

distinguerlesdifférentsutilisateurs.Deplus,cetechniquepermetauxpremiersdeprotègerleursdonnées

desseconds.

Un groupeest identifié par un numéro: le GID (Group IDentificator). Un groupepeut ne pascontenir

d’utilisateur.

5.4.2 Ajouter un groupe

La commandeaddgroup a poureffet d’ajouterun nouveaugroupe.Elle a poutbut de modifié le fichier

/etc/group. Le fichier /etc/group est le fichier regroupanttous les groupesdu système.Une ligne de ce

fichierdécrit le nomdu groupeet sonGID. La syntaxe decettecommandeestla suivante:

addgroup <nom_du_groupe>

où <nom_du_groupe > estle nomdu groupeàajouter.

5.4.3 Supprimer un groupe

Pourenleverunutilisateurdusystème,vousdevezutiliser la commandegroupdel . Elle apourbut d’enle-

verdufichier /etc/group la lignecorrespondantaugroupepasséenargument.La syntaxedecettecommande

estla suivante:

groupdel <nom_du_groupe>

5.4.4 Ajouter un utilisateur dansun groupe

Lacommandeadduser vueprécédemmentpermetd’ajouterunutilisateurexistantdansungroupeexistant.

Elle a pour effet de modifier le fichier /etc/group en ajoutantà fin de la ligne correspondantau groupe

l’utilisateurdevantêtreinscrit.La syntaxe decettecommandeestla suivante:

adduser <nom_d_utilisateur> <nom_de_groupe>

où <nom_d_utilisat eur > est le nom de l’utilisateur devant être ajouté au groupe

<nom_de_groupe> .

Signalonsquela commandegroups permetde savoir dansquel(s)groupe(s)vousêtesinscritset quela

commandeid endonneunedescriptionplusdétaillée.

5.4.5 Supprimer un utilisateur d’un groupe

Il n’existepasvraimentd’outil poursupprimerun utilisateurd’un groupemiseà part la bonnevieille mé-

thoded’édition de fichier! Le fichier à éditerest /etc/group. Chaqueligne débute par le nom du goupe

Page 58: New Cours Linux

CoursLinux - Namur-LUG 58

suivi denumérosetdesutilisateursinscritsdanscegroupe.Il suffit d’effacerle nomdel’utilisateurdonton

souhaitela désinscription.

5.5 Lespermissionsd’accès

5.5.1 Un peude théorie.. .

Lorsquevoustapezla commandesls avecl’option -l , celle-civousrenvoie uneligne du type:

-rw-r--r-- 1 linus users 4990 Sep 28 20:17 cours.html

Si nouscommençonsparla droite,nousvoyonsle nomdefichier (cours.html ), suivi dela dernièredate

demodification(Sep 28 20:17 ) etdela taille decefichierexpriméeenoctet(4990 ). Observonsmain-

tenantle restede la ligne encommençantpar la gauche.Tout d’abord,nousvoyonsunesériedesymboles

etdelettres(-rw-r--r-- ). Cettesériedesymbolesetdelettressontlespermissionsd’accèsauxfichiers.

Les permissionsd’accèssontdesautorisationsd’accèsen lecture,en écritureou encore,en exécutionsur

le fichier quele (ouun des)possesseur(s)du fichier peut(peuvent) imposer. Cettesériedesymbolesestim-

médiatementsuivie d’un chiffre. Cechiffre décrit le nombredeliensdur du fichier (ici 1) ou le nombrede

fichiersquecontientun répertoire(dansle casd’un répertoire).Ensuite,apparaissentle nomdel’utilisateur

(linus ) etdu groupe(users ) possédantle fichier.

Une conséquenceimmédiatequenouspouvonstirer de cettedescriptionestquesi un fichier n’appartient

pasà l’utilisateur ou augroupeindiqué,l’accésaufichier parun autreutilisateurseralimité. Par exemple,

si vousfaitesls -l /etc/inittab , vousobtenezunelignedu type(la taille et la datedufichiern’ont

pasbeaucoupd’importancepournotreexplication):

-rw-r--r-- 1 root root 1856 Jul 18 21:48 /etc/inittab

Cetteligne vousindiquequele fichier appartientà l’utilisateur et augrouperoot . Si vousêteslogguéen

tantquesimpleutilisateur(doncn’étantpasroot et n’appartenantpasaugrouperoot ), faireun rm -f

du fichiernedevrait pasl’effacer : celadépenddespermissionsd’accès3.

Lespermissionsd’accèssontstructuréesen trois groupedetrois lettresou symbolesplusune.Le premier

symbolesert à indiquerà l’utilisateur de quel type de fichier il s’agit. Si il s’agit d’un simplefichier de

données,nousauronsle symbole- , si il s’agitd’un répertoire,nousy trouveronsla lettred (pourdirectory).

Le premiergroupedetrois lettresindiquelespermissionsd’accèsdu propriétairedu fichier (le nomd’utili-

sateurindiquécommeétantle possesseur).Le secondindiquelespermissionsd’accèsdu groupepossédant

le fichier. Et le dernierindiquelespermissionsd’accèsdesutilisateursqui nesontni le nomd’utilisateur, ni

le nomdegroupeindiqués.Nouspouvonsattribuer à un fichier plusieurstypesdeméthoded’accès.Nous

verronsles trois principales: la lecturesymboliséepar la lettre r (pour read),l’écriture symboliséepar la

lettrew (pourwrite) et l’exécutionsymboliséepar la lettrex (pourexecute).Le signe- étantprésentpour

symboliserl’absencedel’une destroispremières.

- r w x� ��� �utilisateur

r - x� ��� �groupe

r - x� ��� �autres

3Si vousexécutezla commandeaveclesmêmepermissionsd’accès,le systèmerefuserad’effacerle fichier. Un messageper-

mission denied seraaffiché.

Page 59: New Cours Linux

CoursLinux - Namur-LUG 59

Nousentendonsparaccèsenlecture,le droit delire le fichier. Attention,cen’estpasparcequevousavezle

droit delire unfichiercontenantunprogrammeécritenbashquevouspouvezexécuterleprogramme4. Il faut

pourcelaquevouspossédiezla permissiond’exécutiondu fichier (doncdu programme).Si cequi précède

n’estpasclair, voici un petit exemple: supposonsquenousayonsun fichier contenantun programmeécrit

enbash,parexemple,prog . Cefichier contientcommepremièreligne uneligne du type#!/bin/bash .

Cettepremièreligne indiquequelorsquenousvoulonsexécuterle programme,l’interpréteurà utiliser est

bash. Imaginons,maintenantquelespermissionsd’accéssoientlessuivantes(peuimportel’utilisateuret le

groupe): -rwxr----- . Cespermissionsdénotentquel’utilisateur peutlire, écrireet exécutercefichier,

quele groupepeutuniquementle lire et n’a pasle droit de l’exécuter. En d’autrestermes,le groupeà la

droit d’en regarderle contenumaispasdel’exécuter. Tandisquelesautresn’enontaucundroit d’accès.Le

droit d’accésenécrituresignifiequele fichierpeutêtremodifiédesoncontenu.

Pourlesrépertoiresla significationestunpeudifférente.Le droit d’accésenlecturesurunrépertoiresignifie

quevouspouvezlire le contenud’un répertoire,àcelaprès,qu’avantd’enpouvoir lire le contenu,vousdevez

être capabled’y entrer. Pour pouvoir entrerdansun répertoire,ce dernierdoit possèderune permission

d’accèsenexécution.Le droit d’accésenécrituresurun répertoiresignifiquequevouspouvezy ajouteret

y enlever desfichiers.

Uneligne commela premièresus-citéesedécritcommesuit :

– il s’agit d’un fichierdedonnée;

– linus , propriétairedu fichier, possèdelesdroitsd’accèsenlectureetenécriture;

– lesmembresdugroupe(dont linus fait partie)possèdentuniquementle droit enlecture;

– lesautres,qui nesontni linus , ni faisantpartiedugroupeusers (à l’exceptionduroot bienentendu)

possèdentuniquementle droit enlecture.

Nousallonsvoir danscettesectioncommentnouspouvonschangerles permissionsd’accèsd’un fichier,

ainsiquele nomdel’utilisateuretdu groupepossèdantcefichier.

5.5.2 Changer lespermissionsd’accès

La commandechmod est la commandeà utiliser pour changerles permissionsd’accèsd’un fichier. Un

utilisateurquelconquea le droit dechangerdespermissionsd’accèssurun fichier si il estle propriétairede

cefichier. Dansle cascontraire,le systèmel’en avertiraparunmessage: operation not permitted .

Il existedeuxtypesdesyntaxe pourcettecommande: la premièrequenousappelleronsla méthodelettrée,

et la deuxièmequenousappelleronsla méthodeoctale.

La méthodelettrée

Commenousl’avonsdéjàsignalé,il existetroisgroupesdetrois lettresousymboles.Chacundecesgroupes

désignentunepersonneouungroupedepersonnesenparticulier. La méthodelettréeattribueàchacundeces

groupesunelettreparticulière: u pourl’utilisateurpossédantle fichier, g pourle groupeeto pourlesautres

(pourotherenanglais).Elle attribueégalementPourchacunedespermissions,la lettrer pourla lecture,wpour l’écriture et x pour l’exécution.Pourajouterunepermission,nousutiliseronsle symbole+, pour en

enlever, nousutiliseronsle symbole-.4Voir chapitresurla programmationenbashpourplusdedétail

Page 60: New Cours Linux

CoursLinux - Namur-LUG 60

La syntaxe decettecommandeestla suivante:

chmod <permissions> <nom_de_fichier>+

Quelquesexemplessuffiront àexpliquerl’utilisation dela commande.

avant - - - - - - - - - - Il n’y aaucunepermissiondedéfiniesurcefichier;

commande chmod u+rwx Nousmettonspour l’utilisateur et uniquementpour l’utilisateur les

permissionsdelecture,d’écritureetd’exécution;

après - r wx - - - - - -

avant - - - - - - - - - - Il n’y aaucunepermissiondedéfiniesurcefichier;

commande chmod u+rwx,g+rw,o+r Nous mettonspour l’utilisateur les permissionsde lec-

ture,d’écritureetd’exécution; pourle groupelespermis-

sionsdelectureetd’écriture; pourlesautresuniquement

la permissionsdelecture.

après - r wx r w- r - -

avant - r - x r - x r - -

commande chmod u+rwx,g+rw,o+r Nous mettonspour l’utilisateur les permissionsde lec-

ture,d’écritureetd’exécution; pourle groupelespermis-

sionsdelectureetd’écriture; pourlesautresuniquement

la permissionsdelecture.

après - r wx r wx r - - Nous pouvons remarquerau vu des résultatsque les

anciennespermissionsne sont pasécrasées,elles sont

seulementmisesà jour puisquele x du groupeest tou-

joursprésent;

Signalonsqu’avec cetteméthode,nouspouvonsutiliser la lettresupplémentairea (pourall) à la placedes

lettresu, g et o pourindiquerun changementsimultané.

Nousajoutonségalementquel’option -R permetdefairedesmodificationsrécursivementsurlescontenus

desrépertoires.

La méthodeoctale

La deuxièmeméthodeestuneméthodeun peumoinsintuitive.Elle estbaséesurle tableausuivant:

Utilisateur Groupe Autres

Lecture 400 40 4

Ecriture 200 20 2

Execution 100 10 1

La commandeautiliséesttoujourschmod. Elle prendscommeargumentsla sommedespermissionssélec-

tionnéesdansle tableauet le(s)fichier(s)surlequelvousvoulezlesappliquer. Lespermissionsinitialessont

complètementécrasées: cette méthode ne met donc pas à jour les permissions, elle les applique.

L’exemplesuivant illustre nospropos,notezla différenceavecle dernierexempledu pointprécédent:

Page 61: New Cours Linux

CoursLinux - Namur-LUG 61

avant - r - x r - x r - -

commande chmod 764 Nousmettonspourl’utilisateur lespermissionsdelecture,d’écriture

et d’exécution; pour le groupeles permissionsde lectureet d’écri-

ture; pourlesautresuniquementla permissionsdelecture.La sélec-

tion dansle tableaunousdonne: ��������������������������������� ���"!$#�%&�après - r wx r w- r - -

L’option -R estégalementdisponible.

5.5.3 Changerdepropriétair e

Chaqueutilisateurinscritdansle systèmefait partied’aumoinsungroupe.Un utilisateurpeut-êtreseuldans

un groupe,maislorsqueplusieursutilisateurstravaille surun mêmeprojet,il devient alorsnécessairedeles

réunirdansun seuletmêmegroupe.Un desobjectifsétantdefaciliter leséchangesdefichiers.

SousUnix, engros,l’échangedefichiersrevientàenchangersonpropriétaire.La commandechown permet

d’effectuerunetelleaction.Sasyntaxe estla suivante:

chown <nouvel_utilisateur> <fichier>*

Exemple:

$ ls -l

-rw-r--r-- 1 linus users 4990 Sep 28 20:17 cours.html

$ chown rms cours.html

$ ls

-rw-r--r-- 1 rms users 4990 Sep 28 20:17 cours.html

L’échangedefichier sefait uniquemententreutilisateurd’un mêmegroupe.

L’option -R permetdesmodificationsrécursivesducontenud’un répertoire.

5.5.4 Changerdegroupe

Maintenantunutilisateurpeutfairepartiedeplusieursprojets,doncdeplusieursgroupeàla fois. Il estalors

possibleàcetutilisateurdechangerle groupeauquelappartientunfichierdontil estle possesseur.

La commandepermettantdechangerdegroupeestla commandechgrp. Sasyntaxe estpratiquementiden-

tiqueàcelledechown :

chgrp <nouveau_groupe> <fichier>*

Exemple:

$ ls -l

-rw-r--r-- 1 linus linux 104560 Oct 3 19:00 libc.c

$ chgrp hurd

$ ls -l

-rw-r--r-- 1 linus hurd 104560 Oct 3 19:00 libc.c

L’utilisateurdoit fairepartiedu groupepourlequelil y achangement.

L’option -R estégalementdisponible.

Page 62: New Cours Linux

CoursLinux - Namur-LUG 62

5.6 Gestiondesprocessus

5.6.1 Un peude théorie.. .

Tout programmequi est exécutésur une machinecrée,via le systèmed’exploitation, un processus.Un

processusestunereprésentationdel’exécutiond’un programmedansla mémoiredel’ordinateur. Cen’est

pasle programmelui-même.Chaqueprocessussepartagela mémoiredel’ordinateur, chacunpossèdeson

propreterritoire, sapropreparcellede mémoireet il n’est pasquestionqu’un processusétrangerpénètre

le territoired’un autreprocessus.Le caséchéant,un bonsystèmed’exploitation tue le processusimportun.

D’ailleurs,un desrôlesdu systèmed’exploitationestdegérerlesprocessusd’unemachineafin quechaque

programmepuisses’exécutercorrectement.

Il existetouteunethéoriesurlesprocessuset leur méthodedefonctionnementmaiselle dépasselargement

le cadredececours.Noussignaleronsseulementquelquespointsdecettethéoriequi vousserontutilesdans

la pratique.Tout d’abord,à tout processuscorrespondun numérounique,appeléPID (ProcessIDentifica-

tor). Cenumérosertausystèmed’exploitation afin debiengérerlesdifférentesexécutions.Ensuite,il est

importantdesavoir qu’unprocessuspeutêtrepèredeplusieursfils, ainsiquelesfils eux-même,.. . Eneffet,

si unprocessuspèredevientdéfaillant,tuerlesfils neservirapasàfairedisparaîtrele père.Finalementet très

brièvement,unprocessuspeutentrerdansplusieursétatslorsdesonexécution,il peutêtrearrêté,suspendu,

activé et réactivé etce,afindemieuxpartagerlesressourcesdu systèmeaveclesautresprocessus.

5.6.2 Lister lesprocessus

La commandepourlister l’ensembledesprocessustourantsurla machineestla commandeps.

Cettecommandeestutile carsi,unjour, unprogrammeboucleouplanteassezdésagréablement(celaarrive),

vouspourreztuerle processusassociéàceprogramme.Grâceà la commandeps, vouspourrezconnaîtrele

numérodu processus(PID) défaillant afindele tuer.

La syntaxe decettecommandeestla suivante:

ps <options>

Selonle numérodeversion,cettecommandeadmetplusieurstyped’options.Il fautdistinguerlesoptions

Unix qui peuventêtregroupéeset doiventêtreprécédéesd’un tiret, lesoptionsBSD qui peuventêtregrou-

péeset qui ne doiventpasêtreprécédéesd’un tiret, et, finalement,les optionslonguesGNU qui sontpré-

cédéesquantà elles de deux tirets. Cesdifférentesoptionspeuvent êtremélangéesentreelles.Nous ne

présenteronsici quelesoptionsqui noussemblevraimentintéressantestantellessontnombreuses.Lesplus

curieuxcomplèterontleurconnaissanceenconsultantla pagedemanuel.

Toutd’abord,nousavonslesoptions de sélection de processus :

-A : Sélectionnetouslesprocessus

T : Sélectionnetouslesprocessusdu terminalcourant

a : Sélectionnetouslesprocessusdesterminaux,mêmeceuxdesautresutilisateurs

r : Sélectionnetouslesprocessusdansun étatactif

x : Sélectionnelesprocessussanscontrôlerleur terminaux

Exemple:

Page 63: New Cours Linux

CoursLinux - Namur-LUG 63

$ps T

PID TTY STAT TIME COMMAND

1234 pts/3 S 0:00 -bash

1311 pts/3 R 0:00 ps T

Ensuite,nousavonslesoptions de sélection par liste. Cesoptionsrequiertun argument:

-C : Sélectionnelesprocessusparnomdecommande

-t : Sélectionneparterminal

-u : Sélectionnelesprocessusdel’utilisateurspécifié

Exemple:

$ps -t pts/0

PID TTY TIME CMD

730 pts/0 00:00:00 bash

1217 pts/0 00:00:01 xdvi.bin

1221 pts/0 00:00:08 vim

Afin d’obtenir desinformationsplus détailléessur chacundesprocessus,desoptions de mise en

forme sont disponibles . Lesplusutiliséessontlessuivantes:

-l : Affichagelong format

u : Affichageorientéutilisateur

Signalonsquele groupementd’optionsle plusutiliséestaux .

5.6.3 Tuer un processus

Afin de tuer le processusrécalcitrant,vous avez à votre dispositionla commandekill . Sa syntaxe est la

suivante:

kill [-s <signal>] <PID>

Pourtuerun processusdemanièredouce,il suffit dedonnercommeargumentà la commande,uniquement

le PID du processusquevousdésireztuer. Par exemple,si le processusnuméro234estbloquéou boucle,

alorskill 234 l’arrêteraet l’enlèveradela liste desprocessus.

Parfois un simple kill ne suffit pas,vous pouvez alors tuer le processusde manièreforte en utilisant

l’option -s 9 oubien-9 .

Vousnepouveztuerquedesprocessusdontvousêtespropriétaires.

5.7 Installer et désinstallerdesprogrammes

5.7.1 La notion de package

Un package regroupel’ensembledesfichiersqui sontnécessairesà l’installation d’un programme.Il existe

trois typesdepackageet ils sontcaractérisésparleurextension.Toutd’abord,nousavonslespackagesavec

Page 64: New Cours Linux

CoursLinux - Namur-LUG 64

l’extension.rpm . Cetypedepackagea étécréépar la compagnieRedHat.D’autrescompagnies,comme

Mandrake et Suse,ont repris ce format de packageet l’ont adaptéà leurs besoins.Ensuite,nousavons

lespackagesd’extension.deb : packageprovenantdela distribution Debian.Enfin,nousavonsle format

.tar.gz ouencore.tgz qui estle formatutilisépourlivrer lessources.Signalonsqu’il existedessources

qui sontlivréesenformatrpmoudeb.

Il existe desprogrammesqui gérela créationdespackages,leur installation,leur désinstallationet leur

dépendance.Ainsi pourle format.rpm , il existele programmerpm. Pourlespackagesdeformat.deb , il

existedpkg et,pourle format.tgz , il existe tar .

Nousnouslimiteronsdanscettesectiond’expliquerle fonctionnementduprogrammerpm qui permetd’ins-

taller despackagesd’extension.rpm .

5.7.2 (Dés)installerdespackagesRPM

Le RedHat PackageManager estunoutil puissantd’installationdespackagessurvotresystème.Le format

RPM (fichierd’archive *.r pm) possèdedesinformationssur:

– lesautrespackagesà installerpourquele programmefonctionnebien;

– lescomposantsaveclesquelsil entreraitenconflit si ceux-cisontdéjàinstallés.

L’installation à l’aide du paramètre -i

Pourinstallerun package,utilisezla syntaxe :

rpm -i <nom_de_package>

Pourinstallerun package,vousdevezvousconnecteren tantqueroot. Vouspouvezutiliser la commande

su pourbénéficierdesdroitsdel’administrateur.

Lesfichierscontenusdansle packagesontinstallésetle packageestenregistrédansla basededonnées.Vous

pouvezcombinerle paramètre-i aveclesparamètres-v et -h enlesconcatènant: -ivh . Lesoptions-v

et -h ensembleaffichentunejolie barredeprogressionlorsquele packageestencoursd’installation.Si le

packageestdéjàinstallé,rpm vousle signaleenaffichantun messaged’erreur.

La syntaxe devient :

rpm -ivh <nom_de_package>

Le caséchéant,il arrive qued’autrespackagesou fichierssoientnécessaires,les informationscorrespon-

dantesétantspécifiéesdansle packageà installer. Dansce cas,rpm affiche un messaged’erreuret vous

demanded’installer les packagesdont dépendcelui quevous voulez installer. Un problèmeparfois ren-

contréestcelui desdépendancecycliqueentrepackage: vousne pouvez installerun packageA quesi un

packageB estinstalléetvice-versa.Pourcontournerle problème,il voussuffit dementionnerdansla même

commandelesdeuxnomsdepackages:

rpm -ivh package_A package_B

Page 65: New Cours Linux

CoursLinux - Namur-LUG 65

D’autresconflitspeuventaussiinterromprel’installation.Un fichiernedoit appartenirqu’àunseulpackage,

parexemple.Vouspouvezcontournerle contrôlemaiscelapeutavoir desconséquencesdommageablesdans

la basededonnéesetvousrisquezdenepluspouvoir mettreà jour certainspackagesparla suite.

Désinstallationavecle paramètre -e :

Le paramètre-e permetde supprimerdespackagesdéjàinstalléset inscritsdansla basede données.Les

packagessontdésignésparleurnomabrégé.La syntaxe estla suivante:

rpm -e <nom_de_package_abrégé>

Ne désinstallezquedespackagesqui ne sont pasréclaméspar d’autrespackages.Cettedépendanceest

définiedansla basededonnées.Le caséchéant,la désinstallationestinterrompueet la dépendancevousest

signaléedansun messaged’erreur. Le processuspeut-êtreexécutéde forcegrâceà certainesoptionsmais

nousdéconseillonscetteméthode.

Mise à jour avecle paramètre -U

Si vousvousêtesprocuréunenouvelle versiond’un package,vousn’êtespasobligé de désinstallerl’an-

cienneversionpour installer la nouvelle. Utilisez la mêmesyntaxe que pour l’installation mais avec le

paramètre-U :

rpm -U <nom_de_package>

ou

rpm -Uvh <nom_de_package>

Lorsd’unemiseàjour, rpm tientcomptedevosfichiersdeconfiguration.S’ils n’ont pasétémodifiésdepuis

l’installation,ils sontremplacésparlesnouveaux.Dansle cascontraire,unecopiedesauvegardedesfichiers

deconfigurationexistantsestcrééeavecl’extension*.rpmorig ou *.rpmsave.

Lecture d’inf ormations avecle paramètre -q :

Un packageRPMcontientdenombreusesinformationstellesquela listedesfichiersqui y sontcontenusou

la descriptiondu package.Voici quelquesmoyensdedéterminercesinformations.

Le paramètre-q vouspermetdevousrenseignersurdespackagesinstallés:

rpm -q <nom_de_package_abrégé>

En ajoutantle paramètre-l, vousobtenezla liste detouslesfichiersdupackages:

rpm -ql <nom_de_package_abrégé>

L’option -i fournit la descriptiondu packageainsiqued’autresinformations:

rpm -qi <nom_de_package_abrégé>

Page 66: New Cours Linux

CoursLinux - Namur-LUG 66

Avecle paramètre-f, vouspouvezdétermineràquelpackageappartientun fichier :

rpm -qf <nom_de_fichier>

Pourobtenirdesinformationsàproposd’un packagenonencoreinstallé,utilisezl’option -p :

rpm -qpl <nom_de_package>

La combinaisondeparamètres-qaestégalementintéressante: elle permetd’afficher la liste despackages

installés.

rpm -qa <nom_de_package_abrégé>

Vérification avecle paramètre -V :

Le programmerpm offre la possibilitédecontrôlersi despackagesontétémodifiésdepuisleur installation.

Utilisez le paramètre-V avecla syntaxe suivante:

rpm -V <nom_de_package_abrégé>

Lesdifférentsfichiersmodifiéssontaffichés.Aucuneréponsen’estdonnéeà la commandes’il n’y a pasde

différencesavec la versioninitialementinstallée.Ce sontlesfichiersdeconfigurationquel’on retrouve le

plussouventdanscetteliste.

Page 67: New Cours Linux

CoursLinux - Namur-LUG 67

OpenContent Licencev1.0

Version1.0,July14,1998.

ThisdocumentoutlinestheprinciplesunderlyingtheOpenContent(OC)movementandmayberedistributed

providedit remainsunaltered.For legal purposes,thisdocumentis thelicenseunderwhich OpenContentis

madeavailablefor use.

Theoriginal versionof thisdocumentmaybefoundathttp ://opencontent.org/opl.shtml

LICENCE

TermsandConditionsfor Copying, Distributing,andModifying

Itemsotherthancopying, distributing, andmodifying theContentwith which this licensewasdistributed

(suchasusing,etc.)areoutsidethescopeof this license.

1. Youmaycopy anddistributeexactreplicasof theOpenContent(OC)asyoureceive it, in any medium,

provided that you conspicuouslyandappropriatelypublishon eachcopy an appropriatecopyright

notice anddisclaimerof warranty; keepintact all the noticesthat refer to this Licenseand to the

absenceof any warranty; andgive any otherrecipientsof theOC a copy of this Licensealongwith

the OC. You may at your option charge a fee for the mediaand/orhandlinginvolved in creatinga

uniquecopy of theOC for useoffline, you mayat your optionoffer instructionalsupportfor theOC

in exchangefor a fee,or you mayat your optionoffer warrantyin exchangefor a fee.You maynot

charge a fee for the OC itself. You may not charge a fee for the soleserviceof providing accessto

and/oruseof theOC via a network (e.g.theInternet),whetherit bevia theworld wide web,FTP, or

any othermethod.

2. You may modify your copy or copiesof the OpenContentor any portion of it, thusforming works

basedon theContent,anddistributesuchmodificationsor work underthetermsof Section1 above,

providedthatyoualsomeetall of theseconditions:

(a) You mustcausethemodifiedcontentto carryprominentnoticesstatingthatyouchangedit, the

exactnatureandcontentof thechanges,andthedateof any change.

(b) You mustcauseany work that you distribute or publish,that in wholeor in part containsor is

derivedfrom theOCor any partthereof,to belicensedasawholeatnochargeto all third parties

underthetermsof thisLicense,unlessotherwisepermittedunderapplicableFair Uselaw.

Theserequirementsapplyto themodifiedwork asawhole.If identifiablesectionsof thatwork arenot

derivedfromtheOC,andcanbereasonablyconsideredindependentandseparateworksin themselves,

thenthis License,andits terms,do not apply to thosesectionswhenyou distribute themasseparate

works.But whenyou distribute the samesectionsaspart of a whole which is a work basedon the

OC, thedistribution of thewholemustbeon the termsof this License,whosepermissionsfor other

licenseesextend to the entire whole, and thus to eachand every part regardlessof who wrote it.

Exceptionsaremadeto this requirementto releasemodifiedworks freeof charge underthis license

only in compliancewith Fair Uselaw whereapplicable.

3. Youarenot requiredto acceptthisLicense,sinceyouhavenotsignedit. However, nothingelsegrants

youpermissionto copy, distributeor modify theOC.Theseactionsareprohibitedby law if youdonot

acceptthis License.Therefore,by distributing or translatingtheOC,or by deriving worksherefrom,

Page 68: New Cours Linux

CoursLinux - Namur-LUG 68

you indicateyour acceptanceof this Licenseto do so,andall its termsandconditionsfor copying,

distributing or translatingtheOC.

4. BECAUSETHE OPENCONTENT(OC) IS LICENSEDFREEOFCHARGE,THEREIS NO WAR-

RANTY FOR THE OC, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT

WHEN OTHERWISE STATED IN WRITING THE COPYRIGHTHOLDERS AND/OR OTHER

PARTIES PROVIDE THE OC "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EX-

PRESSEDOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES

OFMERCHANTABILITY AND FITNESSFORA PARTICULAR PURPOSE.THE ENTIRERISK

OF USE OF THE OC IS WITH YOU. SHOULD THE OC PROVE FAULTY, INACCURATE, OR

OTHERWISEUNACCEPTABLE YOU ASSUMETHE COSTOF ALL NECESSARY REPAIR OR

CORRECTION.

5. IN NO EVENT UNLESSREQUIRED BY APPLICABLE LAW OR AGREEDTO IN WRITING

WILL ANY COPYRIGHTHOLDER, OR ANY OTHER PARTY WHO MAY MIRROR AND/OR

REDISTRIBUTE THE OC AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES

ARISING OUT OF THE USEOR INABILITY TO USETHE OC, EVEN IF SUCHHOLDER OR

OTHERPARTY HAS BEENADVISED OF THE POSSIBILITYOF SUCHDAMAGES.

Page 69: New Cours Linux

4. ADMINISTRATION LINUX

4.1. RÔLE DE L'ADMINISTRATEUR SYSTÈME

Unix étant un système d'exploitation multi−utilisateurs, la gestion du système et des utilisateurs est confiée à unsuper−utilisateur nommé root ou racine.

Le rôle de l'administrateur ou root est de :

configurer le noyau du système d'exploitation ;•

sauvegarder les données et réparer les systèmes de fichier ;•

gérer les utilisateurs ;•

installer de nouveaux logiciels ;•

intégrer de nouveaux disques durs et de nouvelles partitions ;•

configurer le processus de démarrage de Linux ;•

configurer le réseau•

Du fait que le super−utilisateur root possède tous les droits, il doit posséder des connaissances concernant lefonctionnement du système.

4.2. PRINCIPAUX RÉPERTOIRES SYSTÈMES

Répertoires standards :

/ Répertoire racine (ou root) contenant tous les répertoires.

/home Répertoire contenant les répertoires personnels de tous les utilisateurs autresque root.

/root Répertoire personnel de l'administrateur système root.

Répertoires système :

/bin Répertoire contenant les commandes et utilitaires employés par tous lesutilisateurs (ls, rm, cp, etc..)

/boot Répertoire contenant des informations permettant le chargement de Linux.

/dev Répertoire contenant tous les fichiers périphériques permettant d'accéder auxcomposants matériels.

/etc Répertoire contenant les commandes et fichiers de paramétrages nécessaires àl'administration système.

/lib Répertoire contenant les bibliothèques communes à tous les utilisateurs

/proc Répertoire spécial utilisé par le système et contenant la liste des processus encours d'exécution.

/sbin

(c) Africa Computing 1 sur 11 http://www.africacomputing.org

Page 70: New Cours Linux

Répertoire contenant les commandes et utilitaires utilisées seulement parl'administrateur système.

/tmp Répertoire contenant les fichiers temporaires.

/usr Répertoire composé d'un certain nombre de sous répertoires utilisés parl'ensemble des utilisateurs.

/var Répertoire spécial utilisé par le système pour stocker des données souventmodifiées.

4.3. GESTION DES UTILISATEURS

Même si vous êtes le seul utilisateur, il est indispensable de créer des utilisateurs ne serait−ce que pour des raisonsde sécurité. L'utilisateur root ayant tous les droits, il est recommandé de se connecter avec un autre utilisateur afind'éviter d'effectuer de fausses manips qui pourraient avoir de lourdes conséquences sur la stabilité du système.Lorsque vous avez besoin de faire de l'administration système, vous avez toujours la possibilité de changerd'utilisateur et de devenir root à partir de la commande su :

$ su root$ whoamiroot$ exit$ whoamipdrouot

Chaque utilisateur dispose d'un répertoire personnel sous /home, par exemple /home/philippe pourl'utilisateur philippe. Outres les fichiers personnels de l'utilisateur, son compte comprend des fichiers cachés deconfiguration du shell ainsi que les préférences de l'interface graphique X−Window.

4.3.1. Principe de l'ajout des utilisateurs

L'ajout d'un utilisateur consiste à :

associer un mot de passe à l'utilisateur (ajout d'une entrée dans le fichier /etc/passwd) ;• définir à quel groupe appartient l'utilisateur (ajout d'une entrée dans le fichier /etc/group) ;• créer le répertoire personnel de l'utilisateur ;• créer le fichier de configuration personnel du shell ;•

Une entrée (c'est à dire une ligne) du fichier /etc/passwd est de la forme :

Nom :mot de passe :numéro d'utilisateur :numéro de groupe :champs spécial :répertoire personnel :shell dedémarrage

Exemple d'entrée du fichier /etc/passwd :

$ cat /etc/passwd | grep philippephlippe:x:501:100:Philippe Drouot:/home/philippe:/bin/bash

Une entrée (c'est à dire une ligne) du fichier /etc/group est de la forme :

Nom de groupe : champs spécial : numéro de groupe : membre1 , membre2, etc..

Exemple d'entrée du fichier /etc/group :

(c) Africa Computing 2 sur 11 http://www.africacomputing.org

Page 71: New Cours Linux

$ cat /etc/group | grep 100users:x:100:

Pour ajouter un utilisateur philippe, vous devez :

ajouter l'utilisateur philippe dans le fichier /etc/passwd1. ajouter éventuellement un nouveau groupe dans /etc/group (si vous souhaitez créer un groupespécifique pour philippe)

2.

créer le répertoire personnel du nouvel utilisateur (home directory), copier les fichiers de configuration dushell et changer les droits du répertoire philippe afin que l'utilisateur philippe devienne propriétaire de sonrépertoire personnel :

$ mkdir /home/philippe$ cp /etc/skel/* /home/philippe$ chown philippe /home/philippe$ chgrp le_groupe_de_philippe /home/philippe

3.

donner un mot de passe à l'utilisateur philippe par la commande :

$ passwd philippe

4.

4.3.2. Ajout d'utilisateur et de groupe avec les commandes useradd et groupadd

Pour faciliter l'ajout d'utilisateurs et de groupe, il existe des commandes spécifiques.

Ajout d'un utilisateur avec la commande useradd :

Syntaxe : useradd nom−utilisateur −g groupe −d répertoire−personnel −mL'option −m permet de recopier les fichiers de configuration du shell. On peut remplacer le shell courant par un shellspécifique avec l'option −s (par exemple −s /etc/ftponly).

$ useradd philippe −g users −d /home/philippe −m$ passwd philippeChanging password for user philippeNew UNIX password :Retype new UNIX password :Passwd : all authentification tokens update successfully

Suppression d'un utilisateur avec la commande userdel :

$ userdel −r philippe

L'option −r permet de supprimer le répertoire personnel de l'utilisateur à supprimer.

Ajout d'un groupe avec la commande groupadd :

$ groupadd ftpusers

Suppression d'un groupe avec la commande groupdel :

$ groupdel ftpusers

Gestion graphique des utilisateurs et des groupes :

(c) Africa Computing 3 sur 11 http://www.africacomputing.org

Page 72: New Cours Linux

Vous pouvez également ajouter un utilisateur graphiquement à partir de l'utilitaire de configuration DrakeConffourni avec la distribution ou Mandrake (l'ajout d'un utilisateur s'accompagne de l'ajout d'un groupe du même nom)ou à partir de l'utilitaire linuxconf disponible sur toutes les distributions linux (vous pouvez alors choisir le grouped'appartenance de l'utilisateur).

Comme pour la plupart des tâches d'administration système, vous pouvez gérer les utilisateurs et les groupes trèsfacilement avec Webmin :

Ajout d'un utilisateur sous Webmin

Rubrique "Système" puis "Utilisateurs et groupes"Cliquer sur un utilisateur ou un groupe pour modifier leurs propriétés.Cliquer sur "Créer un nouvel utilisateur" pour ajouter un utilisateur.Cliquer sur "Créer un nouveau groupe" pour ajouter un groupe.

Astuces :

Si vous êtes amenés à ajouter régulièrement des utilisateurs (pour ajouter par exemple des comptesftp ou des comptes mails), vous avez intérêt à créer un "utilisateur Webmin" spécialement dédié àl'ajout de comptes utilisateurs et pour lesquels les paramètres par défauts sont déjà pré−réglés (groupeutilisateur et emplacement du répertoire personnel associé au compte).

Pour des raisons de sécurités, il est important d'interdire l'accès à la machine aux utilisateurs Internetqui n'ont pas d'autres besoins que d'effectuer du ftp ou de consulter des mails. Pour cela l'interpréteurde commande (shell) des utilisateurs doit être remplacé par /etc/ftponly (et non par exemple/bin/sh qui autoriserait un accès telnet à la machine).

Exemple de fichier /etc/ftponly :

# !/bin/sh## ftponly shell#trap "/bin/echo Sorry ; exit 0" 1 2 3 4 5 6 7 10 15#Admin=root@your−domain.com#/bin/echo/ b i n / e c h o"**********************************************************"/bin/echo " You are NOT allowed interactive access."/bin/echo/bin/echo " User accounts are restricted to ftp and webaccess."/bin/echo/bin/echo " Direct questions concerning this policy to$Admin."/ b i n / e c h o"**********************************************************"/bin/echo##

(c) Africa Computing 4 sur 11 http://www.africacomputing.org

Page 73: New Cours Linux

exit 0

De même pour un utilisateur qui n'a besoin que d'accéder à sa boîte aux lettres, la seule commande quenous lui autorisons consiste à changer son mot de passe. Le shell d'un tel utilisateur est :/bin/passwd

Attention, pour que les shells /etc/ftponly et /bin/passwd soient autorisés par le système, ilfaut les ajouter dans le fichier /etc/shell.

4.4. GESTION DES PROCESSUS

Un processus est un programme chargé en mémoire et en cours d'exécution. Contrairement à Windows 98, lessystèmes UNIX sont des systèmes multitâches préemptifs, c'est à dire que chaque programme ou processus tournentindépendamment. Lorsqu'un processus est planté, le système continue à tourner car les processus sont traitésindépendamment. La destruction d'un processus n'a pas d'effet sur l'exécution des autres processus.

Informations associées à chaque processus :

Pour chaque processus exécuté, le système d'exploitation stocke un certain nombres d'informations :

Numéro unique du processus PID (Process IDentification) ;• Numéro du processus parent PPID (Parent Process Identification) ;• Numéro d'utilisateur PID (User IDentification) ayant lancé le processus ;• Numéro du groupe GID (Group IDentification) ayant lancé le processus ;• Durée de traitement utilisé (temps CPU) et priorité du processus ;• Référence au répertoire de travail courant du processus ;• Table de référence des fichiers ouverts par le processus.•

Chaque processus peut créer lui−même des processus d'où la notion de processus parent. C'est la cas par exemple duserveur Apache : lors de son lancement, le processus père crée plusieurs processus fils afin de répondreindépendamment à plusieurs clients. La destruction du processus parent (parent process) entraîne la destruction detous les processus fils (child process).

Afficher les processus avec la commande top :

La commande top permet d'afficher des informations en continu sur l'activité du système (quantité de RAM etpourcentage de CPU utilisés par les processus). Pour quitter la commande top, il suffit de taper la lettre p.

Commande ps :

Il s'agit de la commande la plus employée pour obtenir des informations sur les processus exécutés par le système.Cette commande permet de connaître les processus actifs à un moment donné.

$ psPID TTY TIME CMD26687 pts/2 00:00:00 bash26797 pts/2 00:00:00 ps

La commande ps sans arguments ne fournit que la liste des processus associés au terminal utilisé. Pour connaîtretous les processus exécuté par le système, il est nécessaire d'ajouter l'argument −aux

$ ps

(c) Africa Computing 5 sur 11 http://www.africacomputing.org

Page 74: New Cours Linux

affiche tous les processus lancés par l'utilisateur dans leterminal

$ ps −x affiche tous les processus lancés par l'utilisateur

$ ps −aux affiche tous les processus lancés par tous les utilisateurs

$ ps −aux | grep httpd affiche tous les processus nommés httpd lancés

Commande pstree :

La commande pstree permet d'afficher les processus sous forme d'arborescence : pratique pour voir lesdépendances entre processus.

Tuer un processus avec la commande kill :

La commande kill permet d'envoyer un signal à un processus en cours.

Syntaxe : kill −Numéro−de−signal PID

Pour tuer un processus, c'est à dire obliger l'application à se terminer, nous utilisons le signal de numéro 9(SIGKILL) qui oblige le processus à se terminer : cette option permet de tuer le processus quel que soit son état etmême si celui−ci est planté ou instable.

Exemple : lancement de la commande top, retour au shell avec les touches Ctrl + Z, recherche du processuscorrespondant à la commande top et destruction de celui−ci.

$ top(puis appuyez sur les touches Ctrl et Z)$ ps −aux | grep toppdrouot 27060 1.9 0.8 1736 1060 pts/1 T 09:02 0:00 toppdrouot 27064 0.0 0.3 1332 512 pts/1 S 09:02 0:00 grep top$ kill −9 27060

Opérateur : l'opérateur & permet de lancer plusieurs processus en parallèle alors que l'opérateur ; lance les processusen série.

Exercice : comparer la commande netscape &netscape &netscape &avec la commande netscape ; netscape ;netscape ; netscape

Gestion des processus sous Webmin

Rubrique "Système" puis "Gestionnaire de processus" Très pratique car cettefonction permet de connaître les processus qui tournent ainsi que leuroccupation mémoire et CPU depuis votre machine ou encore depuis n'importequel poste connecté à Internet ce qui permet de vérifier si la machine estsurchargée ou non sans avoir à être physiquement devant. Pour afficher lesprocessus parents et leurs enfants, cliquez sur "PID".Pour classer les processus en fonction de leur occupation mémoire ou CPU,cliquez sur "Mémoire" ou sur "Processeur".Pour tuer un processus, cliquez sur le numéro du processus, puis cliquez sur"Envoyer le signal" avec "TERM" (terminer) en paramètre.

(c) Africa Computing 6 sur 11 http://www.africacomputing.org

Page 75: New Cours Linux

4.5. MONTAGE DE DISQUES

4.5.1. Montage manuel

Dans les systèmes UNIX, les périphériques, les disques durs et les partitions sont gérées sous forme de fichierscontenus dans le répertoire /dev : chaque fichier du répertoire /dev correspondent à une sorte de driver.

Pour utiliser un périphérique, il faut attacher le fichier périphérique correspondant à un point de montage.

Ainsi /dev/hda correspond au premier disque dur IDE, /dev/hda1 à la première partition du disque dur IDE,/dev/hda2 à la seconde partition, /dev/hdb au second disque dur IDE, /dev/hdb1 à la première partition dusecond disque dur, etc..

De même /dev/sda correspond au premier disque dur SCSI, /dev/sda1 à la première partition du disque durSCSI, etc..

/dev/cdrom correspond souvent au lecteur de cd−rom et /dev/fd0 au premier lecteur de disquette.

Pour "monter" un périphérique ou une partition, il faut utiliser la commande mount.

Syntaxe : mount −t type−du−support fichier−périphérique point−de−montage

Traditionnellement, les périphériques tels que les disques et partitions sont montés dans le répertoire /mnt : parexemple /mnt/cdrom pour un cdrom.

Les principaux type de support sont :

ext2 : filesystem Linux ; msdos : disque de type MS−DOS ; vfat : disque de type Windows ;iso9660 : CD−ROM ;

Exemples :

Montage d'un lecteur de CD−ROM : $ mount −t iso9660 /dev/hdb /mnt/cdromMontage d'une partition Windows : $ mount −t vfat /dev/hda1 /mnt/win98

Pour démonter un périphérique, il faut utiliser la commande umount.

Exemple : pour changer de CD, il faut au préalable démonter le CD courant avec la commande :

$ umount /mnt/cdrom

A noter qu'à l'issu de l'installation de la distribution Mandrake Corporate Server, le lecteur de CD−ROM est montépar défaut ainsi que l'éventuelle partition Windows.

4.5.2. Montage automatique

Le fichier /etc/fstab (File System Table) contient toutes les informations concernant le montage automatiquedes disques au démarrage du système.

$ cat /etc/fstab/dev/hda5 / ext2 defaults 1 1 none/dev/hda7 /home ext2 defaults 1 2/dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro 0 0/dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev 0 0

(c) Africa Computing 7 sur 11 http://www.africacomputing.org

Page 76: New Cours Linux

/dev/hda1 /mnt/windows vfat user,exec,umask=0 0 0 none /proc proc defaults 00/dev/hda6 swap swap defaults 0 0

Liste des paramètres associés à chaque périphérique :

device (périphérique) de la partition ;• point de montage de la partition ;• type de la partition ;• options (gestion des droits) ;• sauvegarde (si ce champ est non nul, l'utilitaire dump doit sauvegarder ce système de fichier) ;• test et réparation (si ce champs est non nul, l'utilitaire fsck doit tester la partition avant de la monter. Lenuméro correspond à l'ordre des tests).

L'ajout d'un périphérique dans le fichier /etc/fstab permet de le monter automatiquement au démarrage.

4.6. INSTALLATION DE NOUVEAUX LOGICIELS

L'installation de nouveaux logiciels s'effectue soit à partir des sources, soit à partir d'un binaire (application déjàcompilée), soit à partir d'un paquetage rpm.

4.6.1. Installation à partir des sources

L'installation à partir des sources consiste à compiler des lignes de code (en C ou en C++) puis à installer le binaireproduit. Les avantages de cette méthode sont multiples :

un même code source peut être compilé sur n'importe quelle machine UNIX et ce quel que soit sonprocesseur (Intel, Alpha, Risc, PowerPC, etc..) ;

vous pouvez spécifier le répertoire où l'application doit être installée ;•

vous pouvez compiler l'application avec des options spécifiques (ajout de modules particuliers, optimisationdu binaire en fonction du processeur, etc…)

les sources étant moins volumineux que les binaires, le téléchargement des sources d'une application estbeaucoup plus rapide que le téléchargement du binaire ou du paquetage rpm correspondant.

Qu'elle que soit l'application, la procédure d'installation est identique :

Préparation de la compilation par la commande : $ ./configure−prefix=répertoire−de−destination

1.

Compilation de l'application par la commande : $ make2. Installation de l'application par la commande : $ make install3.

Il ne vous reste ensuite plus qu'à exécuter le script de lancement de l'application et si la nouvelle application doitêtre lancée systématiquement au démarrage de la machine (cas des services Internet), il vous faut également copierle script de lancement dans le répertoire /etc/rc.d/init.d (cf. chapitre Lancement de programmes audémarrage)

4.6.2. Installation à partir d'un binaire

Pour une application donnée, il existe peut être déjà une version binaire compilée pour votre processeur. Il ne vousreste plus qu'à télécharger l'application, la décompresser puis la déplacer dans le répertoire de votre choix. A noter

(c) Africa Computing 8 sur 11 http://www.africacomputing.org

Page 77: New Cours Linux

que dans la désignation employée dans les distributions binaires : Intel−386 désigne un processeur Intel de type 386,intel−486 de type 486, intel−586 de type Pentium, intel−686 de type Pentium II, etc…Tout comme pour une installation à partir des sources vous devez ensuite lancer l'application et vérifier le caséchéant si celle−ci est lancée au démarrage.

4.6.3. Installation à partir d'un paquetage rpm

RPM (Red Hat Package Manager) est un puissant gestionnaire d'applications permettant d'installer, de mettre à jour,de vérifier ou de désinstaller des composants logiciels.

Pour installer un nouveau paquetage appli.rpm :

$ rpm −ivh appli.rpm

Attention, si vous installez un paquetage par cette méthode et qu'il existe déjà sur votre système dans une versioninférieure, vous risquez d'avoir des problèmes pour le désinstaller (voir plus bas). Les paramètres −vh permettentd'ajouter une barre de progression.

Pour mettre à jour (upgrader) un paquetage :

$ rpm −Uvh appli.rpm

Pour supprimer un paquetage :

$ rpm −e appli.rpm

Afficher la liste de tous les paquetages installés :

$ rpm −qa

Vérifier à partir du nom si un paquetage est déjà installé :

$ rpm −qa | grep php

Lister le contenu d'un paquetage :

$ rpm −ql appli.rpm

Si vous avez besoin d'une application précise sous le format rpm, vous devriez pouvoir la trouver sans trop dedifficultés sur le site http://www.rpmfind.net.

4.6.4. Installation à partir d'un paquetage Debian

La distribution Debian utilise son propre système de paquetage dont les fichiers sont reconnaissables par l'extentions.deb .

Pour gérer les paquetages il existe deux programmes :

dpkg• apt−get•

Pour simplifier, on peut considérer que apt est une surcouche sur dpkg.

(c) Africa Computing 9 sur 11 http://www.africacomputing.org

Page 78: New Cours Linux

La première chose à faire est de définir par quel moyen nous allons accèder aux paquetages, soit par CDROM soitpar une liaison réseau. Le programme apt−setup permet de configurer les sources de paquetage de manièreinteractive.

Une autre manière possible est d'ajouter directement les informations dans le fichier /etc/apt/sources.list.

Même si on utilise les cdroms pour installer les paquetages il est quand même conseiller d'ajouter la ligne :debhttp://security.debian.org/ stable/updates main contrib non−free au fichier/etc/apt/sources.list ce qui permet de télécharger les dernièrs paquetages qui corrigent des problèmes desécurité. Après une modification de ce fichier il faut lancer la commande apt−get update pour que le systèmepuisse construire la base de données des paquetages en prenant en compte la nouvelle source.

Commandes usuelles :

apt−get install Nom_Du_Paquetage : Installe un nouveau paquetageapt−get remove Nom_Du_Paquetage : Supprime d'un nouveau paquetagedpkg −S nom_du_fichier : Donne le paquetage auquel appartient le fichierdpkg −i nom_du_fichier : Installe le paquetage précédenment téléchargédpkg −L Nom_Du_Paquetage : Liste tous les fichier d'un paquetageapt−get update : Mise à jour de la liste des paquetagesapt−get dist−upgrade : Mise à jour de tous les paquetagesdpkg−reconfigure Nom_de_Paquetage : reconfigure un paquetage déja installéapt−cache search XXXXX : cherche XXXX dans le nom ou la description des paquetagesdisponnibles

Exemple d'utilisation d'apt−get :

debian:/home/fred# apt−get install vim<br>Reading Package Lists... Done<br>Building Dependency Tree... Done<br>The following extra packages will be installed:<br> libgpmg1 <br>The following NEW packages will be installed:<br> libgpmg1 vim <br>0 packages upgraded, 2 newly installed, 0 to remove and 0 notupgraded.<br>Need to get 3796kB of archives. After unpacking 12.3MB will beused.<br>Do you want to continue? [Y/n]<br>

4.6.5. Lancement de programmes au démarrage

Au départ le kernel Linux lance le premier process init. Init va alors lire son fichier de configuration(/etc/inittab). Les programmes qui vont être exécutés dépendent du run−level spécifié dans le fichier inittab.Par défaut la distribution Mandrake utilise le niveau 5 alors que Debian utilise le niveau 2.

Le run−level qui va être exécuté peut être fixé au lancement en donnant en paramètre init=X au momment duboot sur l'invite de commande lilo.

Chaque run−level correspond à une utilisation particulière, où certains services vont être lancés au démarrage ounon, suivant le choix de l'administrateur.

A chaque run−level est associé un répertoire /etc/rcX.d/ ou X est le run−level. Dans ce répertoire on trouve lesscripts qui vont être exécutés au démarrage. Si on examine le contenu du répertoire /etc/rc2.d/ on voit qu'il n'y

(c) Africa Computing 10 sur 11 http://www.africacomputing.org

Page 79: New Cours Linux

a aucun "vrai" fichier, mais seulement des liens sur des scripts qui se trouvent dans /etc/init.d/. Ceci permetde centraliser les scripts de démarrage qui sont souvent commun à plusieurs run−level.

Pour lancer automatiquement une application au démarrage, il est nécessaire d'écrire un script de lancement del'application et de le placer dans le répertoire /etc/init.d/ puis de faire un lien (grace à la commande ln) dansle ou les run−level concernés.

Par exemple voici le fichier que l'on va placer dans /etc/init.d :

#! /bin/sh##Exemple d'execution d'une commande au démarrage##Activation du mode DMA sur /dev/hda/sbin/hdparm /dev/hda −d 1

on sauvegarde ce script sous le nom hdparm dans le répertoire /etc/init.d. Il faut le rendre exécutable :

chmod a+x /etc/init.d/hdparm

puis le mettre dans le run−level désiré :

ln −s /etc/init.d/hdparm /etc/rc2.d/S80hdparm

pour la Debian, ou :

ln −s /etc/init.d/hdparm /etc/rc5.d/S80hdparm

pour la Mandrake.

(c) Africa Computing 11 sur 11 http://www.africacomputing.org