new cours linux
TRANSCRIPT
Cours Linuxversion0.0.9
AnnéeAcadémique2001-2002
Auteurs:FrédéricBURLET,FabianBASTIN,ChristopheCHISOGNE,Avecl’aide du NamurLUG
c�
Copyright 2000-2001CedocumentestsouslicenceOpenContent.
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
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
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
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
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
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.
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
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é
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.
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).
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.
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.
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.
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.
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
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:
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>
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;
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.
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.
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.
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
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:
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:
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
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 :
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
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.
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.
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
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.
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>
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]
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.
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
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)"
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)”
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
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
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.
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!
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-
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.
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”)
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:
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”).
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.
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.
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.
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.
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.
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 ).
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
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.
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
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
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é.
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
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:
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.
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:
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
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
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é>
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.
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,
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.
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
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
$ 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
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
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
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
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
/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
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
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
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