Cours Complet Sur Linux

  • Published on
    07-Jul-2015

  • View
    399

  • Download
    0

Transcript

Cours Linuxversion 0.0.9Anne Acadmique 2001-2002Auteurs : Frdric BURLET, Fabian BASTIN, Christophe CHISOGNE, Avec laide du NamurLUGc Copyright 2000-2001 Ce document est sous licence OpenContent.Table des matires1 Introduction 1.1 1.2 1.3 propos du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . propos de ce document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quest-ce que Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 1.4 Do vient Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 9 9 9Linux, le systme dexploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4.1 1.4.2 1.4.3 Les systmes dexploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Linux, et les autres OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Linux, un OS viable ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.5Linux, plus quun OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5.1 1.5.2 Logiciels tournant sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Linux vs GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.6GNU/Linux, au-del du technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.1 Logiciels libres, opensource, licences . . . . . . . . . . . . . . . . . . . . . . . . . 111.7 1.8Pourquoi Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 O chercher de laide ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.8.1 1.8.2 1.8.3 Sur son disque local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Sous forme non lectronique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Sur Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 162 Les commandes utiles 2.1Un peu de thorie... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.1 2.1.2 Notion de systme de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Quelques remarques prliminiaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2Plus daide ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Cours Linux - Namur-LUG32.3Oprations sur les rpertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 Lister les chiers dun rpertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Crer un rpertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Supprimer un rpertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Afcher le rpertoire courant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Changer de rpertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Espace occup par un rpertoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.4Oprations sur les chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.1 2.4.2 2.4.3 La copie de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Dplacement/Renomage de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Effacement de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.5Commandes plus complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5.1 2.5.2 2.5.3 2.5.4 Comparer le contenu de deux chiers . . . . . . . . . . . . . . . . . . . . . . . . . 24 Concatnation de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Chercher un chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Chercher une expression dans un chier . . . . . . . . . . . . . . . . . . . . . . . . 262.6Les pagers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.6.1 2.6.2 less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 more . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.7Accs dautres disques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.7.1 2.7.2 2.7.3 Monter un systme de chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Dmonter un systme de chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Espace occup dune partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.8 2.9Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Larborescence du systme Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 313 Linterprteur de commande : BASH 3.1 3.2 3.3Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Le mcanisme des alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Redirection et ltre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.1 3.3.2 3.3.3 Redirection de la sortie standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Double redirection de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Redirection dentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Cours Linux - Namur-LUG43.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4 3.5Combinaison de redirections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Redirection des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Redirection de la sortie standard et derreur . . . . . . . . . . . . . . . . . . . . . . 34 Les ltres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Relier les commandes par un tube . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Principales commandes de ltre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Regroupement de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Les substitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.5.1 3.5.2 3.5.3 La substitution de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 La substitution de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Les caractres dchappement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 39 404 Les diteurs : Emacs et vi I Lditeur vi 4.1dition de textes sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1.1 4.1.2 4.1.3 Quest-ce que vi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Fonctionnalits de vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Cas o vi est particulirement adapt . . . . . . . . . . . . . . . . . . . . . . . . . 414.2Concepts de base sous vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 Edition de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Modes utiliss par vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Changer de mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Comment sortir de vim ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Principes gnraux de vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.3Utilisation basique de vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 Commandes de dplacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Commandes de changement de mode . . . . . . . . . . . . . . . . . . . . . . . . . 45 Commandes de suppression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Commandes de modication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Commandes Fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Commandes couper-copier-coller . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.4Commandes plus avances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4.1 Recherches et remplacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Cours Linux - Namur-LUG54.4.2 4.4.3 4.4.4 4.4.5 4.4.6 II 4.5 4.6 4.7 4.8 4.9Slection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Coloration syntaxique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Insertion dun autre chier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Lancer un sous-shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Edition multi-chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 48Lditeur emacsDescription de la bte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Commandes ddition lmentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Editer plusieurs chiers la fois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Terminer une session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Copier, coller, supprimer des parties de texte . . . . . . . . . . . . . . . . . . . . . . . . . . 514.10 Chercher et remplacer des expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.10.1 Chercher une expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.10.2 Chercher et remplacer une expression . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.11 Rpter une commande et annuler une commande . . . . . . . . . . . . . . . . . . . . . . . 52 4.12 Les commandes explicites : M-x . . . . . . . . . . . . . . . . . . . 524.13 Les modes en emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.13.1 Le mode fondamental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.13.2 Les modes de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.14 Laide en ligne : C-h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5 Administration 5.1 5.2 54Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Commandes de gestion gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.2.1 5.2.2 Passer en superutilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Redmarrer/arrter le systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.3Gestion des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.3.1 5.3.2 5.3.3 5.3.4 Un peu de thorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Ajouter un nouvel utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Enlever un nouvel utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Changer le mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.4Gestion des groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.4.1 Un peu de thorie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Cours Linux - Namur-LUG65.4.2 5.4.3 5.4.4 5.4.5 5.5Ajouter un groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Supprimer un groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Ajouter un utilisateur dans un groupe . . . . . . . . . . . . . . . . . . . . . . . . . 57 Supprimer un utilisateur dun groupe . . . . . . . . . . . . . . . . . . . . . . . . . 57Les permissions daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.5.1 5.5.2 5.5.3 5.5.4 Un peu de thorie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Changer les permissions daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Changer de propritaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Changer de groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.6Gestion des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.6.1 5.6.2 5.6.3 Un peu de thorie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Lister les processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Tuer un processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.7Installer et dsinstaller des programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.7.1 5.7.2 La notion de package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 (Ds)installer des packages RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . 64RemerciementsMes remerciements aux gens du NamurLUG pour leur soutien lors de la rdaction de ce document. Plus particulirement, Fabian BASTIN pour la rdaction de lintroduction et pour ses remarques toujours aussi judicieuses, Christophe CHISOGNE pour son expertise en vi et ses connaissances tant philosophiques qu historiques, et Franois SCHOUBBEN pour ses relectures et ses conseils en matire de structuration. Je voudrais remercier galement tous les gens qui soccupent de la rdaction des pages de manuel et info qui documentent le systme linux et qui sont toujours une source dinformations inpuisable.Chapitre 1Introduction1.1 propos du coursCe cours sur GNU/Linux est organis par le kot Linux, en collaboration avec le Namur LUG. Le kot Linux est un kot projet des Facults Universitaires Notre-Dame de la Paix de Namur (http://www. fundp.ac.be), qui a vu le jour dbut septembre 2000. Le Namur LUG1 est un groupe dutilisateurs de GNU/Linux Namur, fond dans le courant de lanne 1999, et sous linuence duquel est ne lide de crer un kot projet consacr GNU/Linux. Vous pouvez consulter le site web du LUG, ladresse http://namurlug.org. Ce cours a pour objectif de vous initier GNU/Linux. Il est destin plutt aux informaticiens (tudiants ou professionnels) quau grand public. En effet, GNU/Linux demande un investissement non ngligeable en terme de formation pour proter pleinement de sa puissance et de sa souplesse. Dans un premier temps, nous vous prsenterons brivement la philosophie GNU/Linux et ses enjeux sousjacents. Lapprentissage du systme GNU/Linux passe avant tout par une consultation de sa documentation intgre, cest pourquoi, nous vous donnerons les moyens daccder toute cette documentation, avant dentrer dans le vif du sujet. Nous aborderons ensuite des aspects plus techniques, en expliquant, la description de quelques commandes utiles, suivies par quelques petites notions concernant linterprteur de commande BASH. Nous aborderons galement la description de larborescence des rpertoires du systme GNU/Linux ainsi quun peu dadministration. Il ne nous tait videmment pas possible dexpliciter chaque aspect de GNU/Linux. GNU/Linux se dveloppe tellement rapidement et est tellement vaste quun simple tutorial ne sufrait pas pour expliquer ce merveilleux OS en entier. Dailleurs certains puristes risqueront dtre heurts la lecture de ce document. Nous nous en excusons davance. Le but du document est de fournir une introduction simple, sans entrer dans trop de technique. Par consquent, plusieurs raccourcis ont t volontairement pris. Si des questions persistent, nhsitez surtout pas les poser sur notre forum http://namurlug.org/ forum.1Namur Linux User Group8Cours Linux - Namur-LUG91.2 propos de ce documentSignalons galement que ce document a t rdig pour servir de support aux formations donnes lInstitut A dInformatique des Facults de Namur. Il a t entirement crit en LTEX. Nous avons galement choisi de mettre ce document sous Licence OpenContent version 1.0 ou ultrieure. Cette licence vous donne la libert de modier ce document, de lutiliser et de le redistribuer. Pour plus de dtail concernant cette licence voir la copie en n de syllabus ou encore visitez http://www.opencontent.org/opl.shtml. Vous pouvez avoir accs aux sources de ce document ainsi quune version compile sur le site du Namur LUG (http://namurlug.org/), rubrique plat du jour. Le prsent document na pas pour vocation dtre statique, mais dtre en volution constante. Toutes remarques, suggestions, corrections peuvent tre envoyes Frdric Burlet (fred@namurlug.org) ou Fabian Bastin (slashbin@namurlug.org) ou encore Christophe Chisogne (chichi@namurlug. org).1.3Quest-ce que Linux ?Depuis 1999 environ, on entend beaucoup parler de Linux, y compris en-dehors du monde des informaticiens. Mais quest-ce que cest exactement, Linux ? Linux est une marque dpose par Linus Benedict Torvalds, son crateur. Du point de vue technique, Linux nest rien dautre quun systme dexploitation, un operating system particulier. Nous utiliserons le terme abrg OS pour nous rfrer aux systmes dexploitation. Dun point de vue non technique, Linux est un phnomne nouveau, parfois drangeant, qui risque bien de rvolutionner linformatique. Au dpart, Linux tait un OS de type Unix, mais devant tourner sur plateforme PC plutt que sur des stations de travail. Aujourdhui, Linux est devenu un OS complet, puissant, rapide, dune stabilit et dune robustesse qui nont rien envier aux plus grands OS connus.1.3.1Do vient Linux ?Mais do provient donc Linux ? Pour le savoir, il faut se plonger dans le volet historique, en 1991. Cette anne-l, un petit tudiant nlandais tudiait les OS luniversit dHelsinki, en se basant sur Minix, un systme dexploitation pdagogique, forme drive et simplie des Unix commerciaux, conu par Andrew Tannenbaum. Minix tait gratuit, et son code source, disponible. Cet tudiant sappelait Linus Benedict Torvalds. Ctait un informaticien brillant et curieux. Ses parents venaient de lui acheter le nouveau PC dernier-cri de lpoque, un splendide AT-386. Linus Torvalds ntait intress que par des systmes de type Unix, mais ceux-ci tait hors de prix. Le DOS prdominait sur les architectures PC, mais ne pouvait satisfaire les dessains en Linus Torvalds. Minix, crit depuis 0 par Tannenbaum et tournant sur les processeurs 8088, tait ds lors le seul point de dpart valable. Torvalds se mit donc au travail en rcrivant et en tendant Minix pour les plateformes i386. La mme anne, en 1991, un certain Tim Berners Lee, au CERN de Genve, inventait le World Wide Web, le dsormais omniprsent WWW. Les deux vnements ont converg. Linus travaillait sur son systme, qui allait devenir Linux. Mais il avait adopt une mthode de travail hors du commun : il publiait lentiretCours Linux - Namur-LUG10de son travail (le code source de Linux) sur Internet. Plus fort encore, il invitait chacun participer au dveloppement de Linux ! Linux a donc t dvelopp sur le net, par de nombreux informaticiens. Le premier noyau Linux stable est sorti en 1991.1.4Linux, le systme dexploitationLinux est un systme dexploitation. Parmi ses caractristiques : multitche : on peut faire tourner plusieurs programmes en mme temps, multi-plateformes : on le trouve sur tout type de machine, multi-utilisateurs : plusieurs utilisateurs peuvent se connecter en mme temps, respect de la norme POSIX. Il est en outre adaptable, ce qui explique quon le retrouve actuellement de plus en plus dans le monde de lembarqu et des PDA.1.4.1 1.4.2Les systmes dexploitation Linux, et les autres OSLinux nest videmment quun OS parmi dautres, certains tant orients grand public (DOS, Windows 9x, Windows ME, BeOS, MacOS,...), dautres ayant une vocation plus professionnelle (BSD, Windows NT, SunOS,...). Linux ne se distingue gure des autres Unix, puisquil sagit en fait dun clone des Unix traditionnels. Nanmoins, le faible cot de revient et la grande portabilit de Linux lui ont accord un succs quaucun Unix propritaire navait connu jusquici.1.4.3Linux, un OS viable ?Une des grandes forces de Linux repose sur sa stabilit qui, dans le monde des serveurs, se mesure notamment par luptime, cest--dire le temps avant lequel le serveur sera plant. Alors quil est couramment de lordre de 40 jours pour un systme Windows NT, il nest pas rare davoir un uptime oscillant entre 1 an et 2 an pour un systme Linux. Sil est able, Linux nen est pas moins performant. Ainsi, Silicon Graphics commence vendre des machines sous Linux, et tant lUS Air Force que la NASA, utilisateurs critiques sil sen faut, font conance au systme au pingouin.Cours Linux - Namur-LUG111.51.5.1Linux, plus quun OSLogiciels tournant sous LinuxContrairement ce que certains pourraient penser, la logithque sous Linux est trs riche. La principale raison est la compatibilit Unix de Linux, permettant un portage facile de nombreuses applications. Lexemple le plus frappant est sans doute lenvironnement graphique X-Window. Les secteurs les mieux reprsents suivent ds lors le courant Unix, cest pourquoi Linux est fcond en applications rseau, et est une plateforme de dveloppement de premier choix. Linux est galement fort prsent dans le monde scientique, A depuis les logiciels de composition comme LTEX, aux outils mathmatiques (Scilab, gnuplot,...), en passant par divers outils de simulation. Lutilisation de Linux par des organismes tels que la NASA illustre ce phnomne. La paternit Unix explique galement la faiblesse de Linux dans les applications de type bureautique, traditionnellement dveloppes pour des environnements plus populaires. Ce dernier point tend nanmoins disparatre.1.5.2Linux vs GNU/LinuxCertains refusent le terme Linux sil nest pas accompagn de GNU. Derrire ce mot se cache le projet de la Free Software Foundation (http://www.gnu.org) de fournir un systme informatique libre. Ce projet a t initi en 1984, anne de fondation de la FSF. Le premier travail a consist en la rcriture des utilitaires Unix de base, quil sagisse de linterprteur de commandes ou du compilateur C. Linux a fourni le noyau, mais il est inexploitable seul. Cest de la runion de ces diffrents travaux quest n le systme que vous utilisez. Linclusion du terme GNU a pour but de rappeler que Linux ne serait rien sans le travail de la FSF. Bien que nous adhrions cet esprit, nous emploierons frquemment le terme Linux au lieu de GNU/Linux, pour plus de facilit.1.61.6.1GNU/Linux, au-del du techniqueLogiciels libres, opensource, licencesLinclusion des utilitaires GNU Linux a eu pour consquence dincorporer la philosophie dfendue par la FSF. Linux est issu dun mode de dveloppement ouvert, Linus Torvalds ayant soumis son code au net. La FSF a formalis ce type dapproche dans la notion de logiciel libre, dont les ides sont les suivantes : libert dutiliser le logiciel ; accs au code source ; possibilit de modier le code ; libert de diffuser le programme, avec ou sans modications. Des variantes du concept de logiciel libre sont apparues, dont la plus importante est le mouvement opensource (http://www.opensource.org).Cours Linux - Namur-LUG121.7Pourquoi Linux ?Choisir Linux ne relve pas du hasard ; en tant quOS, il a fait ses preuves sur le plan de la performance et de la stabilit. Cest un OS propice recevoir des logiciels de grande qualit, lesquels sont dailleurs nombreux. Enn, Linux est aussi un mode de pense, une philosophie qui se dmarque de la logique conomique classique, pour faire place louverture et au partage de linformation. La puissance de Linux a un prix : celle dune complexit plus grande, ncessitant un effort certain. Heureusement, Linux jouit dune documentation consquente et de qualit.1.8O chercher de laide ?La rgle de base sous Linux est un investissement personnel. Laccent dans le monde Linux est mis sur lefcacit, au dtriment du caractre intuitif. Pour tirer parti de Linux et des logiciels quil hbrge, lutilisateur sera amen consulter par lui-mme les documentations et manuels fournis. Lutilisation optimale dun systme Linux, pour des informaticiens, require bien plus de connaissances que pour dautres systmes. Plusieurs facteurs expliquent la ncessit impose aux utilisateurs exigeants de bien se former. Un premier facteur est le caractre hautement contrlable, adaptable, paramtrable dun systme Linux : tous ses aspects sont susceptibles de faire lobjet de modications. Cette possibilit est parfois fondamentale, voire critique, dans certains domaines. Mais un contrle trs fort exige de bien connatre un nombre ventuellement pharaonique de choix, doptions de conguration. La matrise dun systme est proportionnelle au temps pass le dompter. Sous Linux, la courbe dapprentissage est assez lente au dbut, et sacclre ensuite assez vite. Bien sr, les utilisateurs travaillant sous Unix depuis des annes ont un avantage norme sur ceux qui viennent dun monde non Unix. Un autre facteur dterminant est la faon dont le systme considre ses utilisateurs. Sous Linux, lutilisateur est considr comme intelligent et sachant ce quil fait, quoi quil demande (y compris la suppression du systme). Les gardes-fous sont moins nombreux quailleurs. Lutilisateur a donc largement intrt bien connatre son systme, parce que ce dernier ne lempchera pas de faire tout et nimporte quoi. En bref, un utilisateur de Linux est appel se former, et souvent sauto-former. Cest un des principes fondamentaux de lutilisation de Linux : il faut chercher, gratter soi-mme pour trouver les informations que lon recherche. Les efforts sont rcompenss par une connaissance croissante du systme, qui peut aller jusquau code source du noyau, voire plus loin encore... Quel avantage, du point de vue pdagogique ! La formation, cest bien joli. Encore faut-il savoir o trouver de laide. En effet, Linux est un systme professionnel complexe. Devant limmense tendue des possibilits, on peut vite sy perdre. Voici quelques points de repre dans le paysage Linux. Quasiment toutes les questions que lon peut se poser trouveront rponse dans un des endroits suivants.1.8.1Sur son disque localLendroit le plus rapide, cest sur le systme lui-mme, savoir sur un disque dur de sa machine.Cours Linux - Namur-LUG13La commande man Une des commandes les plus souvent utilises pour chercher de laide est la commande man. Man est labrviation de manual. Les manuels informatiques sur papier tant volumineux et coteux, ils sont fournis sous forme lectronique. Dans le monde Linux/Unix, cest la commande man qui sert la consulter. La syntaxe est trs simple. Parmi les formes les plus utilises : man xxx Ceci afche de laide propos de la commande xxx, cran par cran. man -a xxx Mme chose, mais cette fois la recherche ne sarrte plus au premier manuel trouv. Cest utile dans le cas o une commande fait partie de plusieurs manuels (comme printf) man n xxx Le n indique le numro de manuel o chercher la documentation. man -t xxx lpr Avec cette commande, laide est convertie au format postscript et envoye limprimante par dfaut (souvent une imprimante laser, pour une qualit irrprochable). man man Pour les plus curieux, cette commande afche de laide sur la commande man. Pour sortir dune page man, il suft dappuyer sur la lettre q. Pour plus dinformations concernant cette commande reportez-vous au point 2.2 page 17. La commande Info Un autre format de documentation qui est trs rpandu est le format info. Cest le format de base utilis pour documenter la plupart des utilitaires de base du systme. Souvent, la doc existe sous forme man et info, mais la seconde forme fait foi en cas de litige, et la premire peut tre ancienne et non maintenue. Le format info est un format texte. Il a la particularit dautoriser une navigation (via des hyperliens) dans le document daide, et cela sous forme linaire (comme un livre) ou hirarchique (en arbre). La commande permettant de lire (et naviguer) dans les documents info est naturellement la commande info. La commande info sutilise comme la fonction man, dans la mesure o laide au format info sur une commande xxx est afche par la commande info xxx Pour plus dinformations sur cette commande info, le rexe de taper man info nest gure satisfaisant. Mais comme la doc info est disponible au format info, il suft de taper info info pour apprendre lutiliser : en appuyant ensuite sur la touche h, on arrive mme sur un document info de type tutoriel. Divers aspects de cette commande sont prsents la section 2.2 page 18. Les HOWTO, FAQ et autres /usr/doc Une autre source extrmement intressante et instructive se trouve dans larborescence usr/doc. On y trouve ple-mle les HOWTO, FAQ, guides, documentations spciques un logiciel.Cours Linux - Namur-LUG14Les FAQ sont les questions frquemment poses (Frequently Asked Questions), accompagnes de leur rponses, et groupes par thmes. Il est trs utile (pour ne pas dire indispensable) de lire les FAQ avant de poser une question sur le web : si elle a dj t pose 50 fois et quune rponse se trouve dans les FAQ, on court le risque de recevoir une rponse ne respectant pas toutes les rgle de politesse. Les HOWTO sont des documents concernant un sujet prcis, et qui peut recouvrir plusieurs commandes. Il existe par exemple un Sound-HOWTO consacr au systme audio de Linux. Les HOWTO sont rassembls sur le site du LDP, le Linux Documentation Project (http://www.linuxdoc.org). Il existe galement quelques documents plus importants (de lordre de plus dune centaine de pages). Ils abordent des thmatiques plus larges encore, telles que ladministration systme sous Linux. Ces documents, appels guides en anglais, sont galement disponibles sur le site du LDP. Ils se trouvent galement sur le disque local des bonnes distributions Linux, mme si la plupart ne les proposent hlas pas. Pour des aides concernant un seul logiciel, une seule commande, une aide trs spcique est gnralement disponible un sous-rpertoire de /usr/doc. Ainsi, le document consacr au logiciel de boot LILO (pour LInux LOader), se trouve dans /usr/doc/lilo/Manual.txt.gz, ou quelque chose de trs similaire. Le code source La documentation ultime dun logiciel est bien entendu son code source. Cest la rfrence la plus able, car les docs ne sont pas forcment bien tenues jour. Ainsi, il arrive que des options de ligne de commande soient renommes, ignores ou supprimes, alors que la documentation y fait encore erronment allusion. La documentation tant gnralement le parent pauvre des programmeurs, il arrive mme parfois quelle nexiste pas. Le code source est alors la seule rfrence. Sur les canaux trs spcialiss, et se rfrant la srie culte de la guerre des toiles, les internautes Linuxiens conrms aiment rpondre un vibrant Read The Source, Luke aux questions pouvant tre rsolues de cette manire.1.8.2Sous forme non lectroniqueLa documentation nexiste pas que sous forme lectronique. Il existe de bons livres trs bien faits. Nous vous recommandons les ditions OReilly, pour leurs nombreux ouvrages de qualit consacrs aux systmes Unix/Linux. Les tre humains sont galement une source dinformation trs apprcie. Aprs avoir pris connaissance de documents et navoir pas trouv de rponse, il est sans doute possible de contacter un copain, une connaissance, voire mme un guru local qui accepterait dclairer une lanterne. Enn, sachant que le support est un critre dterminant pour de nombreuses socits, il existe encore la possibilit de souscrire une formule de support/help desk auprs dune socit. Les distributeurs Linux le font de plus en plus, comme Red Hat, Mandrake ou SuSE, qui proposent une aide par tlphone ou mail. Bien entendu, ce support est souvent payant. Mais ce nest pas choquant dans le monde du logiciel libre, au contraire. Les services sont une des manires de gagner de largent grce aux logiciels libres, en fournissant des lments de valeur ajoute. Dautres moyens sont la vente de documentation, de livres relis, les formations, les certications, etc.Cours Linux - Namur-LUG151.8.3Sur InternetLinux est n en mme temps quInternet, et sest dvelopp paralllement. Les sites le concernant sont donc nombreux ; parmi les plus intressants, citons : linuxdoc.org : le site de rfrence pour rechercher de la documentation ; freshmeat.net : site rfrenant les applications sous Linux ; lealinux.free.fr : des documentations diverses, en franais ; linuxprinting.org : site consacr limpression sous Linux ; linuxfr.org : pour connatre les dernires nouvelles sous Linux, en franais ; traduc.org : traduction de documentation ; Nous vous invitons galement proter des services offerts : mailing-lists, forums, IRC,... Vous y trouverez gnralement les rponses vos questions. Nanmoins, avant de vous y aventurer, apprenez les rgles de base de la netiquette, sous peine de recevoir des rpliques assez peu obligeantes. En particulier, vitez de poser une question dont la rponse se trouve dj dans une FAQ.Chapitre 2Les commandes utiles2.12.1.1Un peu de thorie...Notion de systme de chiersAvant daborder les commandes utiles, nous allons expliquer les notions de systme de chiers, de chiers et de rpertoires parfois mal comprise par les dbutants. Si vous matrisez dj bien ces notions, vous pouvez passer cette section. Lorque vous enregistrez des donnes sur un support (par exemple, le disque dur), elles sont ranges dans une structure que lon appelle systme de chiers. Le systme de chiers est donc un objet sur le support permettant dy structurer, dy ranger des donnes. Le systme de chiers utilis par Linux est lext2, sous Windows 9x le systme de chier est du type FAT16 ou encore FAT32. Il existe plusieurs types de systmes de chiers : chacun tant caractris par sa propre manire de ranger, dorganiser les chiers sur un support. Avant de pouvoir mettre des donnes sur un support, vous devez au pralable le formater. Formater un support signie le dcouper, le partager an que lordinateur puisse y reprer sa position, savoir o il se trouve. Mais ce nest pas parce que lordinateur sait se reprer quil sait comment il doit crire les donnes sur le support, ni comment les ranger efcacement. Cest pourquoi aprs avoir formater le support on installe un systme de chiers qui nous permettera de ranger et, galement, daccder aux donnes. Les donnes que lon crit sur le disque ou que lon range dans le systme de chiers sont appeles chiers. On en distingue plusieurs types dont les rpertoires et les chiers de donnes. Les systmes de chiers permettent de ranger les chiers gnralement sous forme darbre et ce, de manire complexe. Un arbre (en informatique) peut tre considr comme un arbre habituel dont les intersections entre les branches sappellent les noeuds, les feuilles des feuilles et les branches des branches. Dans un systme de chiers les noeuds sont les rpertoires et les feuilles, des chiers. Chaque noeud (rpertoire) est pre (contient) de feuilles (des chiers). Les rpertoires peuvent tre considrs comme des tiroirs dans lesquels on range des chiers. Par abus de langage je devrai plutt dire : par dnition les rpertoires comme les chiers de donnes sont appels chiers. Un rpertoire est un chier particulier possdant des caractristiques propres. Par consquent, quand nous utiliserons le terme chier, nous parlerons des chiers de donnes et des rpertoires.Notes : pour les gens qui connaissent dj le systme Zindow$ de Microsoft, nous pouvons dire quun rpertoire est un dossier dans lequel on y range des chiers.16Cours Linux - Namur-LUG172.1.2Quelques remarques prliminiairesQuelques rgles sont respecter lorsque vous introduisez vos commande : 1. Sparer les diffrents mots par des espaces. Ainsi lors de la saisie de cd .. pour descendre dans larborescence de rpertoire, il est impratif que vous mettiez un espace entre cd et .. 2. Le shell est sensible la casse. Vrier donc bien tapez vos commandes en distinguant minuscules et majuscules. 3. Les autres mots faisant partie de la commande sont des paramtres. Un paramtre est une chaine de caractres passe une commande dans le but dobtenir un rsultat spcique. Ces derniers peuvent commencer par un tiret (-), on parle alors doptions, sinon, il sagit darguments. On distingue deux types doptions : les options courtes et les options longues. Les options courtes sont les chaines de caractres commenant par un tiret (-) et les options longues sont celles qui commencent par un double tiret (--). Les options sont utilises pour diriger le rsultat de la requte. Les arguments quant eux sont en gnral les noms de chiers passs en paramtre de la commande. Gnralement, les commandes admettent que lon utilise plusieurs options et plusieurs arguments sur une mme ligne. Signalons que les options courtes peuvent tre regroupes entre elles. Par exemple, la commande ls que nous verrons plus tard admet entre autre les options -a, -l et -h. Ainsi au lieu dcrire ls -a -l -h, le regroupement vous permet dcrire ls -alh.2.2Plus daide !Une bonne utilisation dun systme Linux passe tout dabord par une bonne connaissance des commandes console. Certes, toutes les commandes ne seront pas dcrites vu leur nombre. Nous vous prsentons cidessous les commandes les plus utilises avec les paramtres principaux. Toutefois, si cela ne vous satisfait pas, vous pouvez consulter de la documentation directement intgre au systme Linux par lintermdiaire de loutil daide man (pour manual). Nombre dutilitaires de Linux se voient associer une ou plusieurs pages de documentation consultables directement via cette commande. Sa syntaxe est :man man attend comme argument le nom de la commande pour laquelle vous dsirez des explications. Par exemple :$ man psvous donnera tous les renseignements concernant la commande ps. Il existe sous man des touches pour circuler travers des pages de manuel ; ce sont les suivantes :Cours Linux - Namur-LUG18Touche PgUP PgDwn Enter Space b qEffet Page prcdente Page suivante Ligne suivante Page suivante Page prcdente Quit la commande man peut tre galement associ des options, nous en prsentons un rsum : -P pager : Spcie un pager pour afcher la doc concernant la commande. Par dfaut, man utilise less ; -a : Par dfaut, man quittera aprs avoir afch la premire page de manuel quil aura trouve. En utilisant cette options vous forcez man afcher toutes les pages de manuel qui matchent avec , pas simplement la premire ; -h : Afche un rsum des options de man. Pas de spcier ; -k string : Recherche aprs string dans spcier ;TOUTESles pages de manuel. Pas de -t : Fait de la page de manuel un chier imprimable. Une redirection vers un chier est ncessaire car par dfaut le chier rsultat est afch lcran ; Chaque sujet est structur de la mme manire, nous distinguons de manire gnrale 8 parties : NAME SYNOPSIS DESCRIPTION Nom de la commande ; Reprend la syntaxe de la commande (sous forme de la syntaxe BNF en gnral) ; Explications condenses des rsultats de la commande, servant plus daide mmoire que de descriptions prcises ; Indique les chiers sur lesquels agit la commande. Explication des messages derreurs susceptibles dtre afchs par la commande ; Pour certaines commandes, des erreurs sont connues et rpertories. Cela vite des surprises ; Des exemples dutilisation de la commande ;FILES DIAGNOSTICS BUGSEXAMPLESVous constaterez quau cours de lutilisation de Linux certaines commandes ne possdent pas de manuel. Toutefois, vous pouvez gnralement obtenir de la doc sur ces commandes en tapant en mode console le nom de la commande suivie de - -help (parfois -h). Un rsum simple, clair et concis concernant la commande sera afch lcran. Souvent, les explications fournies par les pages de manuel sont tellement condenses quelles ne sont plus claires. Toutefois, il existe une autre commande pouvant vous fournir de linformation. Cest la commande info. Sa syntaxe est la suivante :info Cours Linux - Namur-LUG19Cette commande donne en gnral des informations plus prcises et, parfois, agrmentes dexemples sur la commande dont vous cherchez des explications. Vous pouvez vous dplacez dans les pages avec les touches de direction. Passez aux pages suivantes avec la touche n, aux pages prcdentes avec la touche p et enn, vous pouvez quitter en utilisant la touche q. Lors de la rdaction de ce document, nous avons veill respecter une syntaxe en ce qui concerne la dnition des commandes. La syntaxe que nous avons choisie est un sous-ensemble de la syntaxe BNF (Backus Naus Form). Le tableau 2.1 prsente un rsum du fonctionnement de la syntaxe. TAB . 2.1 La syntaxe BNF Syntaxe [x] x* x+ Signication x optionnel paramtres ou arguments ou options 0, 1 ou plusieurs occurences de x 1 ou plusieurs occurences de xLes commandes dcrites ci-dessous ne prsentent aucunement la totalit des commandes mais une synthse des commandes les plus utilises avec les options les plus utilises. Si vous tes assoiffs de connaissance, nhsitez pas lire les pages info ou de manuel ;-)2.32.3.1Oprations sur les rpertoiresLister les chiers dun rpertoireCette premire commande est utilise tant pour les chiers de donnes que pour les rpertoires. Pour lister les chiers dun rpertoire, vous pouvez utiliser la commande ls. Sa syntaxe est la suivante :ls [] []Si le nom de nest pas spci, la commande liste les chiers du rpertoire courant. la commande ls peut tre galement associ des options : -a ou --all : Liste tous les chiers, y compris ceux cachs (avec un nom commenant par .) ; -A ou --almost-all : Identique loption -a mais omet les entres . et .. ; -B : Ne liste pas les backups-chiers (se terminant par ) ; -c : Trie par date. Agrment de loption -l cest plus clair ; -C : Liste par colonne ; --color[=WHEN] : Utilise des couleurs pour distinguer les chiers. WHEN peut tre gal never, always, auto ; -h ou --human-readable : Afche les tailles de chiers en format lisible par lhomme (p.e., 1k, 234M, 2G) ; -l : Afche une liste long format ; -m : Rempli la largeur de la fentre en afchant les chiers en les sparant par une virgule ;Cours Linux - Namur-LUG20-F ou --classify : Ajoute un des symboles suivants aprs le nom de chier : @ : Pour les liens symboliques ; * : Pour les excutables ; / : Pour les rpertoires ; -R : Liste les sous-rpertoires rcursivement ; -s : Afche la taille de chaque chier (en blocks) ; -x : Liste les chiers par lignes au lieu de par colonnes ; -1 : Liste un chier par ligne ;2.3.2Crer un rpertoirePour crer un rpertoire, la commande utiliser est la suivante :mkdir +o + est une liste non vide de noms de rpertoire spars par un ou des espace(s). Exemple :$ mkdir toto $ mkdir lulu B2122.3.3Supprimer un rpertoirePour supprimer un rpertoire, la commande utiliser est la suivante :rmdir +o + est une liste non vide de noms de rpertoire spars par un ou des espace(s). Si le rpertoire est non vide la commande afche un message derreur. Exemple :$ rmdir toto $ rmdir lulu B2122.3.4Afcher le rpertoire courantIl existe une commande pour afcher au terminal le chemin du rpertoire courant. la commande est la suivante :pwdCette commande ne requiert ni options, ni arguments.Cours Linux - Namur-LUG212.3.5Changer de rpertoirePour changer de rpertoire, la commande utiliser est la suivante :cd []Le est ici optionnel. Dans le cas o le nom de rpertoire est absent, la commande cd vous dirige vers votre rpertoire utilisateur, sinon, dans le rpertoire du chemin spci. Des astuces : cd .. cd Exemple :$ cd /bin $ pwd /bin $ cd $ pwd /home/fabian $ cd - ; pwd /binPermet de passer dans le rpertoire parent Revient dans le rpertoire prcdent le dernier changement de rpertoire2.3.6Espace occup par un rpertoireLa commande ls contrairement la commande dir sous MS-DOS nindique pas la taille des chiers, ni celle des rpertoires (sauf si loption -l est spcie). Il existe une commande pour connatre lespace disque occup par un rpertoire et ses chiers. Cette commande est la commande du. Sa syntaxe est la suivante :du * *En fait la commande du elle seule donne la taille du rpertoire courant ainsi que des sous-rpertoires de ce dernier et cela rcursivement. La liste peut parfois tre longue et illisible. Toutefois cette commande agrmente de quelques options peut savrer bien utile : -a ou --all : Afche la taille pour tous les chiers, pas simplement les rpertoires ; -c ou --total : Afche un total de la taille de tous les arguments aprs que ces derniers aient t visit ; -h ou --human-readable : Afche les tailles des telles sortes quelles soient lisibles pour lhomme, cest--dire, ajoute un M pour MgaByte, G pour GigaByte, k pour kiloByte (en puissance de 1024). --max-depth=DEPTH : Montre le total pour chaque rpertoire (et chier si --all) qui sont situs maximum DEPTH niveau(x) en dessous du rpertoire courant ; -s : Afche simplement un total pour chaque argument ; -S ou --separate-dirs : Donne la taille de chaque rpertoire sparment, excluant la taille des sousrpertoires ; -X chier : Exclus les chiers dont le nom correspond chier.Cours Linux - Namur-LUG22Exemple : Si vous voulez connatre la taille de chacun des rpertoires et chiers situs dans votre rpertoire home :$ du -a -h --max-depth=1 /Note : ~/ est un raccourci pour dsigner votre rpertoire home. Par exemple si vous tes un utilisateur portant le nom fabian, ~/ dsignera le rpertoire /home/fabian. Le rpertoire home est votre rpertoire personnel, il contient votre prol (ensemble des chiers de conguration des applications que vous utilisez), vos chiers personnels, . . . Cest galement le rpertoire par dfaut dans lequel vous entrez quand vous vous logguez.2.42.4.1Oprations sur les chiersLa copie de chiersLa commande permettant la copie de chiers est la commande cp. Sa syntaxe est la suivante :cp * + Cette commande copie la source vers une destination qui peut-tre un chier, si la source est un chier, un rpertoire si la source est une liste de chiers. Par dfaut, cette commande crase les chiers de destination sans demande de conrmation. cette commande peut tre associ des options : -a ou --archive : Prserve tant que possible les attributs et la structure des chiers originale ; -b ou --backup : Fait un backup de chaque chiers qui pourraient tre crass ou dplacs ; -f ou --force : Enlve les chiers de destinations existants ; -i ou --interactive : Mode interactif, demande si un chier de destination existant doit tre cras ou non. Il est fortement conseill de mettre cette option dans les alias de votre .bashrc ; -R ou --recursive : Copie les rpertoires rcursivement ; -u ou --update : Ne pas copier les chiers dont la destination existante est identique ou plus nouvelle que la source ; Exemple-1 : Copier les chiers /.bashrc et /.bash_prole dans le rpertoire /tmp$ cp /.bashrc /.bash_profile /tmpExemple-2 : Copier le contenu du rpertoire /.gnome dans le rpertoire /tmp$ cp /.gnome/ /tmpExemple-3 : Avec loption -R, le rpertoire et les sous-rpertoires sont copis rcursivement$ cp -R /.gnome/ /tmpExemple-4 : Copier un chier sous un autre nom$ cp .bashrc totoNotez la diffrence entre lexemple 2 et lexemple 3.Cours Linux - Namur-LUG232.4.2Dplacement/Renomage de chiersLa commande permettant le dplacement et/ou le renomage de chiers est la commande mv. Sa syntaxe est la suivante :mv * + Si le dernier argument de cette commande est un rpertoire, alors mv dplace tous les chiers lists avec le mme nom dans ce rpertoire. Sinon, si seulement deux noms chiers (ou de rpertoires) sont donns, il renomme le premier par le second. Par dfaut, la commande mv crase le chier destination sans demande de conrmation. cette commande peut tre associ des options : -b ou --backup : Fait un backup de chaque chier qui pourrait tre cras ou dplac ; -f ou --force : Enlve les chiers de destination existants et naverti jamais lutilisateur ; -i ou --interactive : Mode interactif, demande si un chier de destination existant doit tre cras ou non sans regarder aux permissions. Il est fortement conseill de mettre cette option dans les alias de votre .bashrc ; -u ou --update : Ne pas dplacer les chiers dont la destination existante est identique ou plus nouvelle que la source ; Exemple-1 : Renome le chier cours.html en chapitre1.html$ mv cours.html chapitre1.htmlExemple-2 : Dplace les chiers page1.html et page2.html dans le rpertoire http-pub/$ mv page1.html page2.html http-pub/2.4.3Effacement de chiersLa commande permettant leffacement de chiers est la commande rm. Sa syntaxe est la suivante :rm * +Cette commande efface les chiers spcis en arguments. Par dfaut, cette commande efface les chiers sans demande de conrmation. cette commande peut-tre associes des options : -d ou --directory : Efface les rpertoires, mme si ils ne sont pas vides (en super-user seulement) ; -f ou --force : Ignore les chiers non existants et navertit pas lutilisateur de la suppression ; -i ou --interactive : Mode interactif, demande si un chier existant doit tre effac ou non. Il est fortement conseill de mettre cette option dans les alias de votre .bashrc ; -r ou -R ou --recursive : Enlve le contenu des rpertoires rcursivement ; Pour indiquer que les arguments qui suivent la commande ne sont pas des options, vous devez utiliser loption --. Ainsi pour effacer un chier dont le nom serait -f dans le rpertoire courant, vous pouvez taper :$ rm - -fCours Linux - Namur-LUG24Exemple : Suppression avec demande de conrmation. Dans ce cas-ci on refuse puisque .bashrc est un de nos chiers de conguration ;-)$ rm -i .bashrc rm : remove .bashrc ? n2.52.5.1Commandes plus complexeComparer le contenu de deux chiersPour comparer le contenu de deux chiers, il existe la commande diff. Sa syntaxe est la suivante :diff * Plusieurs options sont galement disponibles. Pour plus dinformations concernant ces dernires, veuillez consulter les pages info ou excuter diff avec loption --help.2.5.2Concatnation de chiersPour concatner deux chiers lun la suite de lautre et afcher le rsultat lcran il existe la commande cat. Sa syntaxe est la suivante :cat +Vous pouvez rediriger vers un chier le rsultat de la concatnation en utilisant une redirection (voir section 3.3). Ce programme accepte les options suivantes : -b ou --number-nonblank : Les lignes de sorties non blanches sont numrotes ; -E ou --show-ends : Afche le caractre $ la n de chaque ligne ; -n ou --number : Numrote toutes les lignes de sorties ; -T ou --show-tabs : Afche le caractre de tabulation comme I ; -v : Nafche pas les caractres non imprimables2.5.3Chercher un chierIl existe plusieurs mthodes pour trouver un chier dans limmense arborescence du sytme de chier. Nous verrons dans cette section trois commandes : nd, which et type nd La commande nd est trs utile, elle offre plusieurs critres de recherche : type de chier, le propritaire, la taille, les permissions,. . . Cette commande possde la syntaxe suivante :Cours Linux - Namur-LUG25find * *nd accepte les options suivantes : -name : Tous les chiers dont le nom correspond au sont slectionns ; -iname : Idem que loption prcite mais ignore la distinction entre majuscule et minuscule ; -type : Permet de slectionner des chiers ou des rpertoires selon leur type. Le type est spci par la lettre d pour rpertoire, f pour chier et l pour lien symbolique ; -size [+|-] : Limite la recherche aux chiers dune certaine taille. Un signe ou peut tre utilis en prxe pour slectionner les chiers dont la taille est respectivement infrieure ou suprieure la donne (par dfaut la taille est compte en bloc de 512 octets). Pour plus de facilits vous pouvez prciser une unit de mesure pour la taille. Pour ce faire, vous faites suivre le chiffre par la lettre k pour des kilo-octets ou la lettre c pour des octets ; -perm : Limite la recherche en fonction des permissions des chiers. -user : Cette option permet de slectionner des chiers selon leur propritaire ; Une fois que nd a trouv les noms de chiers correspondant aux critres de recherche, il est possible de dnir des actions excuter pour chaque entre. Ces actions sont utilises comme des options : -exec : Excute une commande pour chaque chier. La chane {} sera remplace par le nom de chier en cours. Notez quen bash, le point-virgule qui suit la commande doit tre prcd dun anti-slash ( ) pour quil ne remarque pas la n de la commande find elle-mme. -ok : Identique loption -exec mais demande conrmation avant dexcuter chaque commande. -print : Afche le nom de chaque chier. Cest laction par dfaut. Lexemple dutilisation ci-dessous recherche depuis le rpertoire racine tous les chiers dont le propritaire est fabian et qui sont des chiers PostScript et nous allons excuter la commande ls sur chacun dentre eux : $ find / -type f -user fabian -iname *.ps -exec ls {} /dev/null; 2>Nous faisons une redirection des erreurs vers un chier spcial (/dev/null). Ce chier ragit comme un trou noir quand on lui envoie des donnes ; il absorbe ces dernires ds leur rception. Nous faisons cette redirection cause des permissions sur certains rpertoires. En effet, certains dentre eux ne sont pas accessibles par lutilisateur et si cette redirection nest pas faite, le chier trouv risque de passer sous nos yeux sans que lon ne sen aperoive. which Montre le chemin daccs une commande. Ce programme se rfre la variable denvironnement PATH. Si le chier ne se trouve pas dans un des chemins dnis dans PATH, alors cette commande renvoie un message derreur. Sa syntaxe est la suivante :Cours Linux - Namur-LUG26which *Exemple :$ which ping ls /bin/ping /bin/lstype type est une commande interne au systme qui permet de localiser des chiers binaires. Sa syntaxe est la suivante :type *Exemple :$ type ls ping ls is aliased to ls --color=always -FA ping is /bin/ping2.5.4Chercher une expression dans un chierLa commande permettant de rechercher une expression dans un chier est la commande grep. La syntaxe est la suivante :grep * *La commande grep recherche toute occurence du dans la liste de chiers. Si la liste de chiers est vide, la commande afche toute occurence du pattern provenant de lentre standard. De ce fait, les deux commandes suivantes sont quivalentes1 :cat toto | grep lulugrep lulu totoLe pattern identier doit imprativement se trouver entre cote( ). La commande grep accepte les options suivantes : -A ou --after-context= : Afche lignes de contexte aprs avoir afch la ligne de correspondance ; -B ou --before-context= : Afche lignes de contexte avant davoir afch la ligne de correspondance ; -C ou --context[=] : Afche lignes (dfault=2) de contexte ; -c ou --count : Afche le nombre doccurences du pattern dans chaque chier ; -i ou --ignore-case : Ignore la casse dans le pattern et dans le chier dentre ; -n ou --line-number : Prxe chaque ligne de sortie avec le numro de la ligne du chier dentre ;1Voir chapitre 3 section 3.3.8 pour plus de dtailsCours Linux - Namur-LUG27Exemple : Rechercher toutes les lignes qui ont au moins une occurence du pattern http dans le chier /etc/services$ grep -i http /etc/services www https https 80/tcp 443/tcp 443/udp http # WorldWideWeb HTTP # MCom # MCom2.6Les pagersUn pager est un programme qui permet dafcher lcran le contenu dun chier texte. Nous vous prsentons dans cette section plusieurs pagers.2.6.1lessLe pager less est un des pagers les plus complets et complexes. Nous allons vous prsenter dans cette section quune partie inme des fonctionnalits de less. Vous pouvez toutefois approfondir la question en lisant les pages de manuel concernant cette commande. Vous pouvez galement obtenir une description complte de son utilisation en tapant h lors de son excution. Sa syntaxe est la suivante :less * +Nous ne parlerons pas des options ici. Notez que vous pouvez ouvrir plusieurs chiers la fois. Les touches pour se dplacer dans le document sont celles de la commande man puisque man utilise par dfaut less pour afcher les pages de manuel (voir section 2.2 page 17). Si vous avez spci plusieurs chiers la fois, vous pouvez consulter le suivant en tapant :n et le prcdent en tapant :p. Une autre fonction utile est la recherche de mots. Cette dernire peut tre invoque en tapant la touche / suivie du mot rechercher. La touche n permet de trouver loccurence suivante tandis que la touche N permet den trouver la prcdente.2.6.2moreLe pager more possde moins de fonctionnalit que less. Vous pouvez utiliser celles que nous avons dcrites pour less. Pour plus dinformation concernant cette commande vous pouvez consulter les pages de manuel ou bien taper h lors de son utilisation. Sa syntaxe est similaire celle de less.2.72.7.1Accs dautres disquesMonter un systme de chierDans tout systme Unix, chaque priphrique (ou nom de partition) est identi par un chier. Les disques durs, les lecteurs de disquettes et CD-ROM ne sont pas identis par C:, A: ou D:. Pour pouvoir accder un priphrique ou une partition, on dit quil faut monter (ou encore attacher) son systme de chier sur un point de montage (un rpertoire) situ dans larborescence des rpertoires. Typiquement, chaque priphrique ou nom de partition est identi comme suit :Cours Linux - Namur-LUG28La commande pour monter un systme de chier est la commande mount. Cette commande possde la syntaxe suivante :mount * [] Loption la plus couramment utilise est loption -t qui permet de spcier le type de systme de chier. Les diffrents systmes de chiers sont nombreux. Les plus courants sont msdos, ext2, vfat, iso9660, autofs, smbfs, . . . Remarque : msdos correspond un systme de chier FAT16 uniquement avec des noms courts alors que le vfat gre le FAT16 et le FAT32 avec des noms longs. Pour monter une disquette formate msdos, la ligne de commande serait la suivante :$ mount -t vfat /dev/fd0 /mnt/floppyo vfat dsigne un systme de chier utilisant les noms longs, /dev/fd0 dsigne le premier lecteur de disquette et /mnt/floppy lendroit dans larborescence des rpertoires o le systme de chier de la disquette doit tre mont. Pour accder au contenu de la disquette, il vous suft donc daller dans /mnt/floppy. Vous pouvez y copier, renommer, dplacer, crer ou dtruire des chiers ou rpertoires. La possiblit de monter un systme de chier par un utilisateur dpend de la conguration du chier /etc/fstab (voir pages de manuel pour plus de dtail).2.7.2Aprs avoir mont un priphrique (ou une partition), il est IMPRATIF que vous le (ou la) dmontiez (essentiellement pour les disquettes et CD-ROM avant de pouvoir lire le contenu dun autre support). Dailleurs, en ce qui concerne le CD-ROM, le bouton Eject du lecteur est dsactiv lors du montage. Vous ne pouvez pas sortir le CD tant que le lecteur nest pas dmont. La commande pour dmonter un priphrique (ou une partition) est umount. La syntaxe de cette commande est la suivante :umount Si vous obtenez un message comme quoi le priphrique est occup, vriez que vous ntes pas simplement dans un des rpertoires du priphrique mont. Pour dmonter une disquette quelque soit son format, la ligne de commande est la suivante :$ umount /dev/fd0 /dev/fd0 pour une disquette ; /dev/cdrom qui est un lien symbolique vers un chier de priphrique ; /dev/hdb1 pour le second (b) disque dur (hd) premire partition (1) ; /dev/sd0 pour un disque dur ou un autre priphrique de stockage SCSI.Dmonter un systme de chierCours Linux - Namur-LUG292.7.3Espace occup dune partitionLa commande pour voir lespace occup (ou libre) sur chacune des partitions montes est df. Sa syntaxe est la suivante :df * *En fait, la commande df afche lespace disque disponible sur le systme de chier qui contient le nom de (avec chemin complet) en argument. Si aucun nom de chier est donn, lespace disponible sur tous les systmes de chiers monts est afch. Lespace par dfaut est donn par blocs de 1k. Les options suivantes sont disponibles : --block-size= : Utilise des blocs de taille ; -h ou --human readable : Afche les tailles en format lisible pour lhomme ; -l ou --local : Limite le listing aux systmes de chiers locaux ; -t ou -type= : Limite le listing aux systmes de chiers de type ; Exemple : Dterminer lespace occup par chacune des partitions montes$ df -h Filesystem /dev/hda1 /dev/hda2 Size 2.6G 2.8G Used Avail Use% Mounted on 1.3G 1.2G 53% / 1.5G 1.1G 57% /home2.8DiversQuelques petites commandes supplmentaires : Nom de commande clear set stty cal date reset Description Efface lcran ; Dni une variable denvironnement ; Change et imprime les diffrents paramtres du mode console ; Afche un calendrier du mois courant ; Permet dafcher et de modier le date et lheure de systme ; Rinitialise lafchage de la console ;2.9Larborescence du systme LinuxQuelque soit la distribution que vous installez, vous remarquez quil ny a pas ou peu de diffrence entre les arborescences des systmes Linux. En fait chaque distributeur de Linux essaie de respecter la norme FHS (File Hierarchy Standard). Nous allons vous prsenter dune manire gnrale quoi correspond chacun des rpertoires.Cours Linux - Namur-LUG30/ /bin /sbin /etc /boot /dev /home /lib /root /tmp /var /mnt /usrCest le rperoire racine. Cest de lui que partent tous les autres rpertoires, cest la base du systme de chiers ; Cest ici que doivent se trouver tous les chiers binaires utilisables par ladministrateur dune part, et, par les utilisteurs dautre part ; Cest le rpertoire qui contient les binaires rservs ladministrateur ; Il contient les chiers de conguration propres au sytme local ; Ce rpertoire contient les chiers statiques du chargeur de dmarrage ; Il contient les chiers de priphriques. Par exemple, nous trouverons /dev/psaux pour les souris ps2 ; Il contient les chiers personnels des utilisateurs. Ces chiers sont tris selon une hirarchie telle que /home/fabian est le rpertoire spcique pour lutilisateur fabian ; Ce rpertoire contient les bibliothques partages essentielles au systme lors du dmarrage. Un sous-rpertoire modules/ contient les modules du noyau ; Rpertoire propre ladministrateur systme ; Rperoire utilis par des applications qui ont besoin de crer des chiers temporaires ; Ici gurent des donnes variables. On y trouve traces de logs, dimpressions, de mails,. . . ; Rpertoire contenant les points de montage dautres systmes de chiers. Tout rpertoire vide convient pour tre un point de montage ; Rpertoire o vont se placer les applications secondaires.Chapitre 3Linterprteur de commande : BASH3.1 IntroductionSous Linux, vous avez le choix entre une multitude dinterprteur de commande (sh, csh, ksh, tcsh, . . .). Dans cette partie nous allons expliquer BASH (Bourne Again SHell) : linterprteur de commande sous Linux. Linvite de BASH sous Linux se prsente gnralement comme suit1 :[@ ]$ou[root@ ]#Notez que linvite peut tre personnalise. Entre crochets gurent quelques informations sur ltat actuel du shell (ou invite BASH). Au dbut, vous trouvez le nom de lutilisateur qui est ici soit , soit root. Aprs le caractre @, vous voyez le nom abrg de lordinateur qui a t dni la conguration du rseau : un nom du type machine.quelque.part.be deviendra machine simplement. Aprs lespace, vous lisez le nom du rpertoire actuel, et non le chemin complet : si vous vous trouvez dans le rpertoire /home/Fabian/documents, seul safchera documents. Le caractre qui suit le crochet fermant, $ ou #, prcise vos privilges daccs : dans le cas dun utilisateur classique gurera le signe $, ladministrateur root recevra un dise #. Attention, connectez-vous seulement en tant que root que lorsque vous tes sr et certain de ce que vous voulez faire. Le root est la personne privilgie, qui, dans un systme Unix, peut raliser tout ce quelle veut, sans contrle daccs ! Je crois que nous le rpterons jamais assez. Si un utilisateur classique veut excuter une commande pour laquelle il ne possde pas de droit daccs, le systme lui rpondra par un message du style : Only root can do that ou Permission denied. BASH offre plusieurs services lutilisateur permettant ce dernier dtre plus efcace dans son travail. Encore une fois, nous ne pouvons aborder tous les aspects de BASH tant ses fonctionnalits sont nombreuses.1Cela varie dune conguration lautre.31Cours Linux - Namur-LUG32Ainsi, dans ce chapitre, nous avons choisi de parler du mcanisme des alias qui est un mcanisme permettant de dnir des raccourcis aux appels de commandes ; du mcanisme des redirections et des ltres qui permettent de contrler des ux de donnes ; du regroupement de commandes et, enn, de la substitution de commandes.3.2Le mcanisme des aliasUn alias est une abrviation pour une commande, voire pour plusieurs mots de la ligne de commande. Un alias est dni par la commande alias (qui leut cru ! ! !) :alias =Le nom dun alias peut commencer par un caractre spcial. Vous ne devez pas mettre despace avant et aprs le signe gal. Exemple :$ alias ls=ls --color -Fa $ alias rm=rm -iPour quun alias soit pris en compte chaque ouverture de session, vous devez modier le chier .bashrc se trouvant dans votre rpertoire utilisateur. Si vous appelez la commande alias sans aucun paramtre, vous obtenez la liste des alias dj dnis. La commande unalias supprime les alias que vous avez dnis. Vous devez spcier en argument le nom dun alias pour que cet alias soit supprim. Exemple :$ alias alias ls=ls --color -Fa alias rm=rm -i $ unalias ls $ alias alias rm=rm -i3.3Redirection et ltreLa redirection des entres-sorties est une des principales caractristiques du shell, dont la puissance na dgale que la simplicit. La rputation de Linux en tant que systme dexploitation souple et performant est due en grande partie aux possibilits offertes de rediriger, directement ou indirectement, les entres-sorties. Lorsque quelque chose est tap au clavier, la machine intercepte le signal et envoie ce signal vers un canal particulier appel le canal dentre standard. Ce signal est alors "aiguill" sur un autre canal an dtre afch lcran. Ce canal sappelle le canal de sortie standard. Ce canal est aussi utilis par les commandes an dafcher leur rsultat. Parfois, les commandes fournissent des erreurs comme rsultat, ces erreurs sont envoyes vers lcran par un autre canal que lon appele le canal derreur. Le canal dentre, de sortie standard et derreur sont respectivement numrots 0,1 et 2.Cours Linux - Namur-LUG33Le principe de la redirection est en gnral de rediriger des informations envoyes lcran (ce qui sort du canal de sortie standard ou derreur) dans un chier, un chier qui sera ultrieurement consultable et/ou modiable.3.3.1Redirection de la sortie standardLa syntaxe est la suivante : > Tout ce que la commande transmettera sera automatiquement plac dans le chier en question. Cette syntaxe est quivalente la suivante : 1> Le chiffre 1 tant l pour nous rappeler que nous redirigeons la sortie standard, celle qui correspond au canal numro 1. Les messages derreurs passant par le canal derreur, numrot 2, seront quant eux afchs lcran. En fait, deux situations sont envisager. Dans la premire, le chier nexiste pas encore. Dans ce cas, il sera cr. Dans la seconde, un chier de mme nom existe dj et dans ce cas son contenu sera cras par les donnes transmises par la commande. Exemple : Redirection du rsultat de la commande ls -l$ ls -l > totoPour visualiser le rsultat de la commande contenu dans le chier toto, il vous suft de prendre soit votre diteur prfr ou bien utiliser less.3.3.2Double redirection de sortieIl nest pas toujours judicieux dcraser lancien chier par des donnes de la commande. Dans ce cas, vous pourrez utiliser le signe >> (> doubl). Si le chier de sortie nexiste pas, il est cr sinon, au chier existant est ajout la sortie de la commande.3.3.3Redirection dentreCertaines commandes attendent leurs donnes depuis le clavier. Mais il est possible de les lire depuis un chier en utilisant le signe < suivi du nom de chier. La syntaxe est la suivante : < Le signe "plus petit" ( Exemple : Reprenons lexemple de la commande tr. Pour obtenir le rsultat de la commande dans un autre chier, il suft de faire une redirection de la sortie standard :$ tr r g < toto > luluLa commande tr prends en entre le contenu du chier toto grce une redirection dentre et fournit comme rsultat un chier lulu grce une redirection de sortie.3.3.5Redirection des erreursParalllement aux canaux dentre et de sortie standard, chaque programme dispose encore de la possibilit denvoyer lcran des messages derreurs par un canal de sortie spar. Cest dailleurs la raison pour laquelle des messages derreur sont envoys lcran alors quune redirection de sortie a t spcie dans la ligne de commande. Pour rediriger le canal standard derreur, vous utiliserez pour cela la commande : 2> 3.3.6Redirection de la sortie standard et derreurNotez que vous pouvez rediriger la fois la sortie standard et la sortie derreur vers un mme chier. Il existe deux formats de syntaxe : &> ou >& 2Pour sortir de la commande faites [Ctrl]-[D]Cours Linux - Namur-LUG35Les deux commandes prcites sont quivalentes la suivante : > 2>&1Attention, 2>&1 1> ne donne pas le mme rsultat, pourquoi ?33.3.7Les ltresUn ltre (ou une commande ltre) est un programme sachant crire et lire des donnes par les canaux dentre et de sortie standard.3.3.8Relier les commandes par un tubePour tablir une liaison directe ente le canal de sortie standard dune commande et le canal dentre standard dune autre, il existe le signe | (le tube, en anglais pipeline). Toutes les donnes renvoyes par la commande place la gauche de ce signe travers le canal de sortie standard sont renvoyes au canal dentre standard de la commande place droite. Voici ci-dessous quelques informations supplmentaires sur les tubes : Le signe tube (|) peut tre plac plusieurs reprises dans une mme ligne de commande. Il ny a aucune limite dpasser ; La premire commande dun tube ne doit pas obligatoirement tre un ltre ; La dernire commande dun tube ne doit pas non plus forcment tre un ltre ; A la n dun tube, la dernire commande peut galement tre dote dune redirection de sortie si le rsultat ne doit pas apparatre lcran mais tre stock dans un chier ;3.3.9Principales commandes de ltreLes commandes prsentes dans cette section ont comme caractristiques quelles peuvent lire des donnes autrement que par le canal dentre standard. Si vous ajoutez le nom dun chier comme paramtre lune de ces commandes, elles liront les donnes dans ce chier et non pas par lintermdiaire du canal dentre standard. Trier le contenu dun chier : sort La commande sort lit les donnes ligne par ligne par le canal dentre standard et retourne ces donnes tries par le canal de sortie standard. Compter le nombre de lignes, de mots et de caractres dans un chier : wc La commande wc lit les donnes ligne par ligne par la canal dentre standard et retourne comme rsultat trois nombres entiers dsignant respectivement le nombre de lignes, de mots et de caractres lus.3Solution : En effet, la premire commande fait tout dabord un redirection de la sortie standard vers un chier. Le symbole la n de la commande, indique quil faut rediriger la sortie derreur vers la sortie standard. Comme cette dernire a t redirige vers un chier, les erreurs y seront rediriges galement. Dans le second cas, la premire chose que lon fait, cest de rediriger les erreurs vers la sortie standard, qui est initialement lcran avant de rediriger la sortie standard. Par consquent tout ce qui est sortie standard uniquement sera redirig vers le chier.Cours Linux - Namur-LUG36Exemple-1 : La commande ps (voir chapitre 5) fournit tous les processus tournant sur une machine. Ces processus sont nombreux ce qui complique la recherche lcran. Grce aux ltres, on peut limiter le rsultat de la recherche. La ligne suivante permet de rcuperer dans le rsultat fournit par la commande ps les lignes qui contiennent au moins une occurrence du mot bash :$ ps aux | grep bashExemple-2 : Nous pouvons tendre la recherche prcdente au mot getty en ajoutant un tube supplmentaire :$ ps aux | grep bash | grep gettyExemple-3 : Comme nous voulons garder ce rsultat dans un chier, nous faisons une redirection de la sortie standard vers un chier du nom resultat :$ ps aux | grep bash | grep getty > resultat3.4Dans cette section, il sagit de lancer un groupe de commandes. Lutilisation de parenthses en ligne de commande permet de crer un sous-shell qui va prendre en charge lexcution des commandes places entre ces parenthses. Les diffrentes commandes sont spares par des points-virgules, ce qui garantit leur ordre de traitement. Toutes les commandes sont traites en tche de fond. Les parenthses permettent par consquent de grouper des commandes dans la mesure o un traitement en arrirer plan est possible pour lensemble. Le regoupement de commandes est galement possible avec des accolades {}. Deux diffrences fondamentales sont cependant prendre en compte : 1. Laccolade douverture doit toujours tre place, tout comme une commande, en premire position dune ligne ou comme premier mot aprs un point-virgule ; 2. Pour le traitement de commandes places entre accolades, aucun sous-shell nest lanc. Les commandes internes places entre les accolades agissent sur le shell actif et non sur un sous-shell. Exemple-1 : Lutilisation des parenthses lance un sous-shell$ cd ; pwd /home/linus $ ( cd .. ; pwd ) /home Paginer lafchage dun chier : more La commande more lit du texte par le canal dentre standard et retourne ces donnes page page lcran. Cette commande est explique plus en dtail dans le chapitre 2, section 2.6. Recherche dune ligne prcise dans un chier : grep La commande grep contient comme premier paramtre un critre de recherche. Cette commande cherche, parmi toutes les lignes dun chier ou dun canal dentre standard, celles qui contiennent le critre et retourne ces lignes par le canal de sortie standard. Le critre doit tre plac entre apostrophe (). Cette commande est explique plus en dtail dans le chapitre 2, section 2.5.4.Regroupement de commandesCours Linux - Namur-LUG37$ pwd /home/linusExemple-2 : Lutilisation daccolades agit sur le shell actif$ cd ; pwd /home/linus $ { cd .. ; pwd ; } /home $ pwd /home3.5Les substitutionsIl existe deux types de substitution : la substitution de caractres et la substitution de commandes.3.5.1La substitution de caractresLa substitution de caractres est ralise par lintermdiaire de caractres spciaux. Il en existe trois : * Ltoile est le caractre qui peut remplacer nimporte quelle chane de caractre, ainsi f*n peut reprsenter aussi bien la chane de caractres fabian que fzzzzzzzn. ? Le point dinterrogation reprsente quant lui, un et un seul caractre. Ainsi f ?n peut reprsenter aussi bien la chane de caractre fan que fzn. [ ] Les crochets sont des dlimiteurs reprsentant lun des quelconques caractres quils contiennent. Ainsi [bar] est la reprsentation soit du caractre b, soit du caractre a, soit du caractre r. Un tiret peut tre utilis pour spcier une plage entire de caractres. Par exemple, [d-m] reprsente lun des caractres compris entre la lettre d et la lettre m.3.5.2La substitution de commandeLorsque vous excuter une commande, il vous est possible dindiquer au shell dexcuter dans un permier temps certaines sous-commandes et de les remplacer, dans le texte de votre commande, par leur sortie standard. Une fois la sous-commande effectue, le shell excute votre commande : vous pouvez donc utiliser la sortie standard dune commande comme argument dune autre commande. La substitution de commande seffectue grce aux dlimiteurs ` ` (des quotes inverses) ou encore, en encadrant la commande concerne par $(). Le petit exemple ci-dessous afche lcran le nombre de chier quil y a dans le rpertoire courant :$ echo "Nombre de fichiers dans le repertoire `ls |wc -l`"elle est identique la commande :$ echo "Nombre de fichiers dans le repertoire $(ls |wc -l)"Cours Linux - Namur-LUG38Autre exemple : Cette ligne de commande permet de faire un ls -l sur le binaire cp de copie de chier et ce, sans se dplacer dans le rpertoire contenant cp.$ ls -l `which cp` -rwxr-xr-x 1 root root 32272 Jul 18 21 :49 /bin/cp*En fait le rsultat de la commande which cp est /bin/cp. Ce rsultat remplace la commande se trouvant entre les quotes inverses pour fournir la commande ls -l /bin/cp qui, elle-mme, fournit le rsultat qui en suit.3.5.3Les caractres dchappementBien sur, qui dit caractres de substitution, dit caractres dchappement. Les caractres dchappement permettent de considrer les caractres de subsitution comme des caractres en tant que tels et non comme des caractres de subsitutions. Les caractres dchappement sont au nombre de trois : le backslash permet de protger un et un seul caractre. Ainsi * permet de considrer le caractre * comme une toile ; Les simples quotes, quant elles, protgent tous les caractres quelles encadrent. Ainsi echo *.* afchera lcran *.* (les caractres de substitutions ne sont pas interprts). Contrairement echo *.* qui afcherai tous les chiers du rpertoire courant ; "" Les doubles quotes protgent tous les caractres quelles encadrent lexception du dollard ($), du backslash ( ) et des quotes inverses (`). Voyez lexemple suivant : echo *.*$(ls)Chapitre 4Les diteurs : Emacs et viIntroductionDans ce chapitre, nous allons vous prsenter deux diteurs de texte parmi les plus couramment utiliss sur les systmes Unix. Dans un premier temps, nous vous prsenterons vi : un diteur de texte qui se veut simple, compact et efcace. Dans un second temps, nous vous prsenterons emacs (dvelopp par Richard Stallman, fondateur de la Free Software Foundation). Cet diteur est plus lourd que son petit frre pr-cit mais possde galement lavantage dtre simple et efcace. Nous ferons remarquer nos chers lecteurs que ces diteurs ne sont pas facile utiliser au premier abord, mais quils offrent des commandes rapides, courtes, puissantes et trs apprciables une fois assimiles.A propos de cet articleCet article a t rdig pour servir au plus grand nombre, mais il est orient vers un public dinformaticiens ou dtudiants en informatique plutt quau grand public. Il devrait tre plus adapt aux novices en matire de Unix/Linux, avec videmment une forte orientation vers Linux.39Cours Linux - Namur-LUG40I Lditeur viCette partie du cours prsente lditeur par excellence du monde Unix/Linux, savoir vi. Rapide, puissant et compact, vi est lditeur de tout administrateur qui se respecte. Son utilisation ntant pas vraiment naturelle, il faut apprendre le dompter. Une fois cet effort accompli, il devient difcile de sen passer. Cet article vous apprendra les parties qui me paraissent les plus utiles.4.1dition de textes sous LinuxUne des tous premiers utilitaires ncessaire sur tout systme dexploitation est un diteur de texte. Par texte, jentends bien sr les textes bruts, sans formatage. Sur les systmes de type Unix, on est certain de trouver le clbre diteur vi, mme sur les systmes trs anciens : vi est livr en standard sur tous les Unix, ce qui en fait lditeur le plus utilis base installe la plus large. Il en existe un autre, GNU/Emacs, trs performant et trs versatile. crit par Richard Stallman lui-mme (alias RMS), Emacs sait diter des textes, lire des mails ou des news, lancer un shell, etc. Mais il nest pas toujours install, car il occupe beaucoup plus despace disque.4.1.1Quest-ce que vi ?vi, est une abrviation pour VIsual editor. Cest une extension de ed et ex, deux diteurs plus anciens ne pouvant diter les chiers que ligne par ligne. Mais vi est tout de mme un diteur plein cran. vi est rapide, puissant et compact : il tient sur une disquette de boot, capacit que lui envient pas mal dautres diteurs. Sous Linux existe une version amliore de vi. Il sagit de vim, pour VI iMproved. Il est tout de mme nettement conseill dutiliser vim plutt que vi, car il dispose dun certain nombre de fonctionnalits supplmentaires que daucun jugerait indispensable dun point de vue confort. Nanmoins, en cas de gros problme ncessitant de rebooter sur disquette, il vaut mieux savoir utiliser vi pur, tant donn que plus rien dautre nest possible dans ce cas.4.1.2Fonctionnalits de viDans la suite, le terme vi rfrera vim, par facilit et abus de langage. Les fonctionnalits de vi sont bien plus leves que celles attendues dun diteur texte par les utilisateurs de systmes non Unix/Linux. Parmi celles-ci, on trouve notamment Edition en mode (texte) plein cran, pas ligne par ligne Indpendance par rapport au terminal (via stty) Edition de chier : insertion, modication, etc Edition de chiers multiples Recherche/Remplacement avec des expressions rgulires Coloration syntaxique automatique, en fonction du type de chier dit (code source en C, chier HTML, PHP, SGML, etc) Lancement de commandes shellCours Linux - Namur-LUG41 Macros, abrviations Rptition de commandes Undo inni Insertion du contenu dun chier externe partir de la position du curseur Fentrage multiple (oui, en mode texte !)4.1.3Cas o vi est particulirement adaptLadministration sous Linux consiste souvent diter des chiers de conguration en mode texte. Cest ce niveau que lon a un contrle maximal sur ce qui peut se passer sur son systme : il ny a pas dinterface graphique qui cache les dtails. Loutil idal de modication des chiers de conguration en mode texte est incontestablement vi. Une fois quil est sufsamment matris, il nest pas impossible davoir termin une dition avec vi alors que la mme dition sous Emacs en est encore au stade du chargement de lditeur. Pour ldition de scripts, vi est aussi un matre-achat. Il existe dailleurs un nombre considrable de formats de chiers textes pour lesquels vi utilise une coloration syntaxique approprie. Les seuls cas o lon pourrait se dire que vi nest pas lditeur idal, cest sans doute dans le cadre de projets plus importants. diter plus dune vingtaine de chiers simultanment devient vite lourd. Dans ces cas, le besoin de plugins se fait sentir, et Emacs, lditeur le plus personnalisable au monde, remplit parfaitement cette tche.4.2Concepts de base sous vimAvant de commencer expliquer les commandes utilises sous vi, il est indispensable davoir bien compris les quelques principes de base de vi. Ils surprennent souvent le dbutant par leur caractre peu rpandu.4.2.1Edition de chiersPour lancer vim, rien de plus simple. Il suft de taper son nom :vimPour diter un chier, il suft de passer son nom en paramtre :vim monfichier.txtLdition se passe comme lon peut sy attendre. Le chier diter est charg en mmoire. vim utilise le terme buffer pour se rfrer aux chiers dits, car ils sont placs en mmoire dans des buffers. Ensuite, aprs avoir apport toutes les modications voulues au buffer, on peut lcrire sur disque (sans quoi elles sont bien sr perdues). Lcriture peut bien sr se faire sous un autre nom, an de garder intacte la version originale du chier. Tout ceci est un fonctionnement classique bien connu.4.2.2Modes utiliss par vimLes modes de travail utiliss par vi sont nettement moins naturels. Ils rebutent souvent le dbutant au premier abord. Mais une fois le pas franchi, ce systme savre diablement efcace.Cours Linux - Namur-LUG42vi possde trois grands modes, entre lesquels on switche souvent : 1. Le mode saisie ou insertion. Cest le mode que tout le monde connat : lorsque lon frappe des touches au clavier, les lettres sont insres telles quelles dans le chier texte. Cest le fonctionnement classique des autres diteurs. 2. Le mode commande est plus inhabituel. Cest le mode dans lequel on donne des commandes simples effectuer sur le texte : dplacement dans le buffer, suppression dlments, remplacement dun mot, etc. Dans ce mode, chaque lettre tape lance la commande correspondante ! 3. Le mode ex, ou ligne de commandes. Mode similaire au prcdent, il permet dentrer des commandes, mais plus complexes cette fois. Dans ce mode, on tape une commande complexe aprs linvite , et on la valide par la touche [Entre]. Ces commandes groupent notamment les recherches/remlacement par expression rgulire, lcriture des buffers dans des chiers, la sortie de vim, etc.4.2.3Changer de modeLes deux premiers modes sont les plus utiliss au dbut. Au lancement de vi, on se trouve en mode commande. Pour pouvoir entrer du texte, il faut donc passer en mode insertion. Pour passer en mode insertion lorsque lon est en mode commande, il suft dintroduire la commande i (insert) pour passer en mode insertion et insrer des caractres partir de la position sous le curseur. Une alternative est de donner la commande a (append) pour passer en mode insertion et insrer des caractres partir de la position qui suit celle sous le curseur. Aprs avoir entr le texte souhait, il faut revenir au mode commande, y compris si la commande que lon veut entrer est un simple dplacement dans le texte ! Pour sortir du mode insertion, il suft dappuyer sur la touche [Escape]. On peut alors entrer des commandes simples (dplacement dans le texte, suppression de la ligne courante, etc). Le troisime mode devient vite indispensable pour proter de la puissance de vi. Pour y entrer ( partir du mode commande), on tape le caractre dinvite . vi passe alors en mode ligne de commande. Il attend que lutilisateur tape sa commande complexe valide par la touche [Entre]. vi excute alors la commande complexe (recherche, remplacement, etc), puis revient tout seul en mode principal, le mode commande. Il faut videmment constamment passer du mode commande au mode insertion, ce qui parat abominablement lourd, a priori. Cependant, les avantages contrebalancent largement ces inconvnients. Une fois lhabitude prise, ce sont les modes plus classiques ddition de texte qui paraissent contre-naturels ! Comme dhabitude sous Linux, il faut mettre les mains dans le cambouis : lancer vim, essayer les quelques commandes, chipoter un peu pour bien assimiler le concept, etc. Ce nest quau l du temps pass sexercer que linvestissement consenti devient extrmement rentable. 4.2.4Comment sortir de vim ?Une question angoissante est : comment sortir de vim ? La manire classique est celle du mode ligne de commande (ex). Cela consiste taper la ligne suivante, en validant par [Entre] ::q! Cours Linux - Namur-LUG43Une autre manire classique est dutiliser la commande simpleZZCette commande (en mode commande, naturellement) fait sortir de vi, mais en enregistrant les ventuelles modications.4.2.5Principes gnraux de vimDans le mode ligne de commande (ex), vi utilise un certain nombre de conventions quil est trs utile de connatre. Une premire convention est lutilisation du caractre !. En ajoutant ce caractre directement aprs la commande, on obtient une version lgrement modie de la commande. Ainsi, :q sort de vi, sauf si le buffer a t modi, tandis que :q ! sort de vi mme si le buffer a t modi (cd avec perte des modications, dans ce cas). Une seconde convention est similaire son quivalent sous Emacs : cest la notion de rptition. En prxant une commande par un nombre X (dans le mode commande ou ligne de commande/ex), on obtient le mme effet que si on avait entr X fois la commande sans ce nombre. Ainsi, pour la commande dd qui supprime la ligne courante, la commande 5dd a pour effet de supprimer 5 lignes (comme si on avait tap 5 fois la commande dd). Aprs avoir rapidement pass en revue ces diffrents principes, on peut raisonnablement se lancer dans lexploration de vi. Il sufra de donner une liste des commandes les plus utilises, et de faire des essais sur machine pour voir si lon a bien compris. Sous Linux, la meilleure faon de faire est bien souvent lauto-formation par laction (de prfrence aprs prsentation des concepts par une personne comptente).4.3Utilisation basique de vimIl est temps de passer la pratique, en appliquant les principes vus ci-dessus. Une premire faon de faire est de lancer le tutoriel de vim. Pour ce faire, lancer, au niveau du shell, la commandevimtutorSi cette commande nest pas disponible, ce nest pas trs grave. Il suft de copier le chier texte/usr/share/vim/tutor/tutordans son rpertoire personnel, puis de lancer vim en lui passant lemplacement de la copie comme chier diter (premier paramtre de la commande vim). Une autre faon est de lire la documentation systme (un peu longue), et de se mettre la tche. Pour ce genre de solution, autant lire dabord ce qui suit avant de revenir la doc complte : ce sont les formes les plus utilises de vim.4.3.1Commandes de dplacementLes premires choses connatre sont les commandes de dplacement au sein dun chier. Parmi les trs nombreuses, voici les plus utilises. Il en existe encore dautres, mais elles ne sont pas vraiement indispen- Cette commande complexefait sortir de vi (q), sans enregistrer les modications ( !).Cours Linux - Namur-LUG44sables dans une utilisation standard (sauf pour les utilisateurs trs avancs). Dplacement dune unit Pour se dplacer dun caractre (en mode commande), les commandes suivantes sont disponibles : h pour aller au caractre gauche (che gauche) j pour descendre la ligne suivante (che bas) k pour remonter la ligne prcdente (che haut) l pour aller au caractre droite (che droite) Ceci a lair fort primitif, mais est indispensable sur les claviers qui ne disposent pas des touches ches ! Pour les autres claviers, lutilisation des touches ches est possible. Dplacement au sein dune ligne Voici comment se dplacer lintrieur de la ligne courante : 0 (zro), ou la touche home pour aller en dbut de ligne $ ou la touche end pour aller en n de ligne w (word) pour aller au mot suivant b (back) pour aller au mot prcdent fx (forward x) pour aller au prochain caractre x Fx fait la mme chose que fx, mais en reculant vers la gauche pour trouver le caractre x tx (to x) pour aller au caractre prcdant le prochain caractre x Tx fait la mme chose que tx, mais vers la gaucheLes commandes f et t sont un peu spciales. Elles acceptent comme argument un caractre. Par exemple : fp dplace le curseur sous le prochain caractre p de la ligne. Cest pratique pour un dplacement plus rapide au sein dune ligne, mais surtout en association avec la commande d de suppression. Ainsi, df. supprime (d) tout depuis la position du curseur jusquau premier caractre . de la ligne (f.). Ceci correspond la suppression de la n de phrase courante. La commande t est utile aussi. Lorsquon dite du HTML, il est souvent utile de supprimer le texte du curseur jusquau prochain dbut de tag, non inclusif. Pour raliser cela, la commande est dt , ce qui signie supprimer les caractres partir du curseur jusquau prochain caractre de la ligne, non inclusivement. Dplacements entre lignes G sert se dplacer la dernire ligne du chier xG sert se dplacer la ligne x (paramtre numrique x) Exemple : 1G sert se dplacer la ligne 1, cd en dbut de chier :x pour se dplacer la ligne x (paramtre numrique x) [CTRL]+F (forward) pour se dplacer dun cran vers le bas [CTRL]+B (backward) pour se dplacer dun cran vers le haut % (sur une parenthse) pour se dplacer sur la parenthse correspondant la paire (ouverture-fermeture). Trs utile pour la programmation en C, et surtout dans des langages fonctionnels, connus pour leur utilisation massive des parenthses. Cours Linux - Namur-LUG45 { ou } pour se dplacer au bloc prcdent ou suivant. La notion de bloc varie selon le type de chier dit. Cest par exemple un paragraphe en HTML, ou le corps dune fonction en langage C.4.3.2Commandes de changement de modeEn mode commande, lorsque lon se trouve sur un caractre donn, on peut passer en mode insertion avec, principalement : a pour insertion aprs le curseur i pour insertion avant le curseur I pour insertion en dbut de ligne A pour insertion en n de ligne o pour insertion sur la ligne suivante O pour insertion la ligne prcdente4.3.3Commandes de suppressionToujours en mode commande, voici quelques commandes utiles de suppression. x pour supprimer le caractre sous le curseur X pour supprimer le caractre avant le curseur (backspace) dw (delete word) pour supprimer la n du mot courant dd pour supprimer la ligne courante xdd pour supprimer x lignes. Ex : 5dd pour supprimer 5 lignes dG (delete, EOF) pour supprimer du curseur jusqu la n du chier dfx (delete forward param x) pour supprimer du curseur jusquau prochain caractre x (paramtre) de la ligne courante (ce caractre x inclus) dtx (delete to x) pour supprimer du curseur jusquau prochain caractre x (paramtre) de la ligne courante (ce caractre x exclus)4.3.4Commandes de modicationEn mode commande, voici les commandes principales pour substituer du texte : cw (change word) pour changer la n du mot en cours (suppression de la n du mot et passage en mode insertion) cc pour changer la ligne entire (suppression et passage en mode insertion) s (substitute) pour substituer le caractre (suppression et entre en mode insertion) xs (paramtre x) pour substituer x caractres pour mettre la lettre sous le curseur en majuscule x (paramtre x) pour mettre les x caractres suivants en majuscule4.3.5Commandes Fichiers ZZ ou :x pour quitter vim et sauvegarder les changements ventuels :w pour enregistrer le buffer courant (write) :w nom (paramtre nom) pour enregistrer le buffer sous un nouveau nom (write as)Cours Linux - Namur-LUG46 :w ! nom (paramtre nom) pour enregistrer le buffer sous un nouveau nom, et lcraser sil existait dj. :q pour quitter (choue si un buffer a t modi) :q ! pour quitter vi (changements perdus si buffer modi) :e nom (paramtre nom) pour diter un chier supplmentaire (en gardant les anciens en mmoire).4.3.6 Commandes couper-copier-colleryy ou Y pour copier la ligne en cours dans le tampon p pour coller le contenu du tampon aprs le curseur P pour coller le contenu du tampon avant le curseur dd pour couper la ligne en cours dans le tampon "xyy (x paramtre de type caractre) pour copier la ligne en cours dans le tampon portant le nom x "xp pour coller le contenu du tampon de nom x (paramtre) "xP idem, mais juste avant la position actuelle, pas juste aprs y + commandes de dplacement pour mettre dans le tampon ce qui suit le curseur jusqu lendroit o arrive la commande de dplacement. Exemple : yw pour y placer le mot courant, y0 (zro) pour y placer le dbut de ligne jusquau curseur.4.4Commandes plus avancesvi possde aussi un certain nombre de fonctionnalits bien plus avances. Les plus utiles parmi celles-ci sont prsentes ci-dessous.4.4.1Recherches et remplacementPour chercher une occurence, il suft de dnir le terme recherch. /nom pour rechercher la 1re occurence de nom, en paramtre. nom peut tre simplement le texte cherch, ou une expression rgulire. n pour chercher loccurence suivante N pour chercher loccurence prcdente :set ic pour ignorer la casse lors des recherches (ne pas diffrencier majuscules et minuscules) set noic pour ne pas ignorer la casse lors des recherches (recherche case-sensitive, celle par dfaut) Pour remplacer une occurence, on prcise en plus le terme de remplacement lorsque loccurence est trouve : :s/avant/aprs pour remplacer la premire occurence avant dans la ligne courante par aprs :s/avant/aprs/g pour remplacer toutes les occurences avant de la ligne courante par aprs :%s/avant/aprs/g pour faire un rechercher/remplacer global, sur tout le chier. % signie toutes les lignes. On peut spcier dautres tendues (bloc en cours, de la ligne x la ligne y, . . .).4.4.2SlectionIl est possible de dnir un bloc sur lequel effectuer des actions plus tard. Cest la slection telle que nous la connaissons habituellement :Cours Linux - Namur-LUG47 v pour dnir un bloc qui commence sous le curseur et stend jusqu lendroit o lon dplace le curseur avec les commandes de dplacement. V pour passer en mode visuel, c--d dnir un bloc compos de lignes entires, commenant la ligne courante et stendant jusqu la ligne o lon se dplace. Une fois la slection effectue, on peut effectuer des actions similaires celles du couper-coller, ainsi que entre autres : d pour couper la slection dans un tampon y pour copier la slection dans un tampon p pour coller la slection aprs le curseur P pour coller la slection avant le curseur :s pour effectuer des rechercher/remplacer limits au bloc (voir ci-dessus).4.4.3Coloration syntaxique :syntax on pour activer la coloration syntaxique :syntax off pour la dsactiver :set background=dark pour que la coloration choisisse des couleurs adaptes un fond sombre (cas de la console texte) :set background=light pour que la coloration choisisse des couleurs adaptes un fond clair (cas dun xterm par exemple)4.4.4Insertion dun autre chier texte:rlename pour inclure le contenu du chier lename partir de la position du curseur.4.4.5Lancer un sous-shellPour lancer une commande shell, taper : !commande, en remplaant commande par la commande dsire. Cest pratique dans de nombreux cas. Exemples : : ! sgml2html -l fr -c latin1 -s 1 fichier.sgml pour gnrer les pages html correspondant au chier source linuxdoc que lon dite : ! sort pour trier les lignes du chier par ordre alphabtique. Ce type de commande peut mme agir sur un bloc, sil a t slectionn avant. [CTRL]+Z : mettre vi en arrire-plan. Cela correspond la combinaison de touches standard du shell pour mettre un processus en arrire-plan. Pour le remettre au premier plan, utiliser la commande fg ou les raccourcis du genre %n (o n est le numro du job).4.4.6 Edition multi-chiers:e lename pour diter lename en plus, en gardant les autres buffers :b lename pour passer au buffer lename (afchage) :b n pour passer au buffer numro n :ls pour lister les buffers ouverts [CTRL]- pour switcher entre deux buffers (dits alternate).Cours Linux - Namur-LUG48II Lditeur emacs4.5 Description de la bteAvant de commencer la description de lutilisation demacs, vous remarquerez que vous pouvez lancer emacs tant partir du mode console que dune session graphique. Les prsentations sont lgrement diffrentes mais les fonctionnalits restent les mmes. Vous trouverez sur certains systmes une version X de emacs appele xemacs. Cette version est beaucoup plus lourde (elle utilise plus de ressources) que la premire mais est plus conviviale. . .Faites votre choix ! Tout ce qui va tre racont dans cette section est valable tant pour emacs que pour xemacs. Quelques petites notations avant dentrer dans le vif du sujet : C-x signie que vous devez appuyez simultanment sur les touches [Ctrl] et [x] ; M-p signie que vous devez appuyer simultanment sur les touches [Alt] et [p]. Attention, sur certains systmes, la touche [Alt] na aucun effet, ds lors M-p signie que vous devez appuyer sur la touche [Esc] suivi de la touche [p]. M est une abbrviation pour Meta-Key ; C-M-p signie que vous devez appuyer simultanment sur les touches [Ctrl], [Alt] et [p]. Si votre touche [Alt] na pas deffet, appuyer sur la touche [Esc] puis la relcher quivaut maintenir la touche [Alt] enfonce ; Pour tester si cest votre touche [Alt] ou [Esc] qui est oprationnelle, pressez simultanment dans un premier temps [Alt] et [x] ; si M-x apparat dans le mini-buffer, cest que la touche [Alt] est oprationnelle. Faites suivre de C-g pour annuler laction (C-g est la combinaison de touche qui permet dannuler une interaction avec le mini-buffer). Si la premire combinaison nafche rien dans le mini-buffer, essayez en appuyant sur la touche [Esc] suivie de [x] ; dans ce cas, vous allez voir apparatre dans le mini-buffer le message M-x. Faites galement suivre de C-g pour annuler lopration. Linterface demacs est divise en trois parties (il existe une quatrime partie : la barre de menu dont nous naborderons pas lutilisation dans le cadre de ce cours). Une premire dans laquelle vous pouvez manipuler du texte, une seconde au fond de lcran appele ligne dtat et, enn, une troisime juste en-dessous de la prcdente appele mini-buffer. La ligne dtat indique le nom du chier ainsi que le mode dans lequel vous vous trouvez (ce mode se trouve entre parenthses sur la ligne dtat). Vous y trouverez galement le numro de la ligne sur laquelle vous vous trouvez (cest le chiffre qui, dans la ligne dtat, suit immdiatement la lettre l majuscule). A lextrme droite apparat le mot Bot, qui vous signale que vous voyez uniquement la n du chier. Sinon, apparat le mot All qui signie que vous voyez tout ou Top qui signie que vous voyez uniquement le dbut ou encore, un pourcentage qui augmente au fur et mesure que lon droule le chier. Le mini-buffer est utilis par emacs pour communiquer avec vous. Et cest partir de ce mini-buffer que vous communiquerez emacs certaines commande excuter.Cours Linux - Namur-LUG494.6Commandes ddition lmentaireAvant deffecuter des changements dans un texte, il faut savoir sy dplacer. A dfaut des touches ches, vous pouvez utiliser les raccourcis clavier suivants : C-f C-b C-n C-p avance dun caractre (forward) ; recule dun caractre (backward) ; passe la ligne suivante (next) ; passe la ligne prcdente (previous) ;Si vous maintenez les touches enfonces, le systme rptera laction jusqu relchement de ces dernires. A partir du moment o vous insrez un ou plusieurs caractres, deux astrisques sont afches gauche dans la ligne dtat, et ce, pour vous indiquer que vous avez modi le chier. En plus des quatre premires oprations sus-cites sur les caractres, nous pouvons signaler les suivantes : [Backspace] [Delete] C-d C-t efface le caractre prcdent ; mme effet que [Backspace] ; efface le caractre sous le curseur ; transpose les deux caractres prcdents ;Sur certains systmes, emacs est congur de telle sorte que la touche [Delete] ait le mme effet que la combinaison de touche C-d. Cest lune des facettes demacs : il est congurable souhait1 Vous pouvez galement effectuer des oprations sur les mots : M-b M-f M-[Backspace] M-d M-t M-u M-l se dplace en dbut de mot, celui directement gauche (back) ; se dplace en dbut de mot, celui directement droite (forward) ; efface gauche du mot ; efface droite du mot ; transpose deux mots autour du curseur ; met un mot en majuscule ; met un mot en minuscule ;Les combinaisons des touches C-a et C-e dplacent le curseur respectivement au dbut et la n de la ligne courante. Vous pouvez vous rendre une ligne spcique en tapant M-x goto-line suivi d[Entre] puis du numro de ligne laquelle vous voulez vous rendre. Jajouterai galement ces petites commandes utiles qui effectuent des oprations sur les lignes : C-o C-x C-o C-k Ouvre une ligne au-dessus du curseur pour insertion de texte ; Ferme/Efface toutes les lignes blanches par-dessus et par-dessous le curseur ; Efface une ligne partir du curseur jusqu la n de celle-ci ;Pour avancer dune page, pressez C-v. Si vous devez reculer dune page, M-v. Vous pouvez bien sr utiliser les touches [PageUp] et [PageDown] pour effectuer ces actions. Nous terminerons cette premire section par de petites oprations sur les pages :Pour plus dinformation sur la conguration demacs rfrez-vous au document crit par Fabian Bastin sur le site du NamurLUG ou bien les pages daide sur emacs intgre au systme.1Cours Linux - Namur-LUG50C-x [ ou C-< C-x ] ou C-> C-x lDplacement au dbut du chier ; Dplacement la n du chier ; Indique le nombre total de lignes du chier ;Signalons que les commandes de dplacement et ddition lmentaires peuvent tre galement utilises sous bash.4.7Editer plusieurs chiers la foisQuand vous ouvrez un chier avec emacs, ce dernier le charge en mmoire. Le contenu du chier se trouvant en mmoire sappelle un buffer. Ce quemacs vous afche est le buffer, donc le contenu du chier que vous avez ouvert. Lorsque vous faites des modications de texte, ce nest pas le chier qui est modi mais le buffer. Les modications effectues ne sont prises en compte que lorsque vous enregistrez le buffer. Pour ouvrir un second chier, employez le raccourci C-x C-f. Dans le mini-buffer vous verrez apparatre un message du type Find file : /. Pour spcier un nom de chier, la syntaxe est identique celle employe par le shell et la compltion est active (utilisez la touche [Tab] ou encore [Space]). Si le chier que vous spciez nexiste pas il sera cr, sinon il est ouvert dans un deuxime buffer. En dautres termes, si vous ouvrez plusieurs chiers la fois, le premier ne sera pas cras par louverture du second. Pour passer dun buffer lautre vous pouvez utiliser la combinaison de touche C-x b. Quand vous faites cela, le mini-buffer vous demande vers quel buffer vous voulez switcher. Par dfaut, le buffer est le dernier qui tait actif avant louverture du nouveau chier. Il vous suft dappuyer sur la touche [Entre] pour mettre excution le changement. Si vous avez oubli les chiers qui sont actifs, pressez simplement la touche [Tab] et ces derniers vous seront lists par emacs. Si vous ne voulez pas enregistrer les modications effectues dans un buffer, vous pouvez en tuer ldition par C-x k suivi de la touche [Entre]. Attention, cette fonctionnalit na pas pour but deffacer le chier que vous ditez mais simplement darrter ldition du buffer en le supprimant de la liste des buffers. Quand vous faites cela, emacs va vous demander quel est le buffer dont vous voulez arrter ldition. Par dfaut, cest le buffer courant. Si cest le cas, pressez simplement la touche [Entre]. Ensuite, emacs vous demandera conrmation (la demande de conrmation se fait si le chier a rellement t modi). Pour conrmer, tapez yes et pressez [Entre]. Pour enregister les modications apportes au buffer, utilisez simplement C-x C-s : emacs enregistre le buffer actif.4.8Terminer une sessionQuand vous avez ni de travailler avec emacs, vriez que vous avez bien enregistr tous les chiers. Vous pouvez quitter emacs avec C-x C-c. Parfois C-x C-c vous posera une question2 ou deux via le mini-buffer avant de quitter, ne paniquez pas, rpondez-y en fonction.Les questions concernent uniquement lenregistrement des modications au cas o des buffers modis nauraient pas t engregistrs.2Cours Linux - Namur-LUG514.9Copier, coller, supprimer des parties de texteComme tout bon diteur, emacs permet de faire du copier-coller. Pour pouvoir raliser cette action, vous devez dnir le dbut et la n du bloc concern. Le dbut du bloc est appel mark et la n de ce dernier est appel point. Pour marquer le dbut du bloc, placez le curseur au bon endroit puis faites C-[Espace]. Vous verrez apparatre dans le mini-buffer le message Mark set. Par dfaut, il ny pas de point lumineux ou de surbrillance pour indiquer que le marquage a t fait un endroit prcis ; de toute manire vous savez o vous avez dpos la mark. Vous pouvez toutefois activer la surbrillance en faisant appel la fonction transient-mark3 .Cette dernire ne fonctionne quen mode graphique4 . Une zone de texte peut-tre galement slectionne laide de la souris : trs pratique. En ce qui concerne le marquage de n, cest bien simple, ce dernier correspond la position courante du curseur dans le texte. Aprs avoir pos la mark et dplac le curseur pour indiquer la n du bloc, vous avez dtermin le bloc de texte prt tre copier-coller. Avant de coller le bloc slctionn, vous devez le copier. Vriez que vous avez bien dlimit ce dernier, puis, pour le copier, faites M-w. Emacs enregistre le bloc en mmoire. Ensuite, pour le coller, placez-vous juste lendroit dsir puis faites C-y. Pour dplacer un bloc de texte (couper-coller), dun point un autre, slectionnez tout dabord la zone de texte concerne, suivi de C-w. C-w coupe la zone de texte qui doit tre dplace. Ensuite placez-vous lendroit o vous voulez coller le bloc, suivi de C-y.4.104.10.1Chercher et remplacer des expressionsChercher une expressionNous allons voir dans cette section deux manires de rechercher du texte avec emacs. Notez quil existe dautres manires que nous naborderons pas ici. La faon la plus facile de rechercher une chane de caractres est dutiliser la fonction isearch (incrementale search). Cette mthode procde, comme son nom lindique, une recherche incrmentale, i.e. quau fur et mesure que vous introduisez la chane de caractres chercher, emacs place le curseur sur la premire occurence de la chane entre. Vous pouvez utiliser les raccourcis suivant pour faire appel cette fonction : C-s C-r Pour effectuer une recherche incrmentale vers lavant ; Pour effectuer une recherche incrmentale vers larrire ;Nous pouvons avoir dans un texte plusieurs occurences dun mme mot. Pour accder loccurence suivante du mot que vous cherchez, faites nouveau C-s. Si, lors de votre recherche, vous arrivez la n du buffer, emacs vous dira Failing i-search : soit il na pas trouv doccurence du mot recherch ou bien, soit il est la n du buffer et il ny a plus doccurence du mot. Pour continuer la recherche faites nouveau C-s, emacs recommencera la recherche partir du dbut du buffer. Vous pouvez procder de mme avec C-r.Voir point 4.12 pour plus de dtail sur lappel de fonction. Au moment de la rdaction de ce document, la dernire version demacs Emacs21 sortait. Cette version supporte les couleurs en mode texte.4 3Cours Linux - Namur-LUG524.10.2Chercher et remplacer une expressionIl est parfois utile dans un texte de savoir remplacer une chane de caractres par une autre (surtout si il y a mille occurences de la premire !). Pour effectuer cette action faites M-%. Emacs vous demandera tout dabord la chane de caractres remplacer, ensuite la chane de caractres de remplacement. Vous pourrez, lors de lexcution de la fonction, conrmer ou inrmer le remplacement de la chane de caractre en tapant respectivement y ou n.4.11Rpter une commande et annuler une commandePour rpter une commande, vous devez spcier emacs le nombre de fois que vous voulez lexcuter, suivi de la commande rpter. Faites C-u, suivi du nombre, suivi de la commande (raccourci clavier) pour effectuer la rptition de la commande dsire. Exemple : Si vous voulez effacer 10 caractres lun la suite de lautre, faites C-u 10 C-d. Si vous voulez descendre de 10 lignes dans le texte faites C-u 10 C-n. Si vous voulez crire 100 fois la lettre s, faites C-u 100 s. Emacs offre, tout comme vi, la possibilit dannuler leffet des dernires commandes effectues (et ce linni). Pour annuler leffet de la dernire commande, faites C-_. Comment feriez-vous pour annuler les 10 dernires actions effectus ?4.12Les commandes explicites : M-x Tous les raccourcis clavier tudis jusqu prsent sont des appels des fonctions internes emacs. Par exemple, C-p est une manire de dire emacs que lon veut excuter la fonction interne previousline. Toutes ces fonctions internes peuvent tre appeles par leur nom en utilisant M-x. Si vous avez oubli que previous-line est li C-p, vous pouvez taper simplement M-x previous-line suivi de [Entre]. Ce sont deux manires de faire qui ont le mme effet. Il existe beaucoup de fonctions internes emacs. Toutes ne peuvent tre invoques laide de raccourci clavier. Par contre, toutes ces fonctions peuvent tre appeles laide de M-x. Notez que nous avons la compltion sur les fonctions.4.134.13.1Les modes en emacsLe mode fondamentalLes buffers demacs sont associs des modes. La raison dtre de ces modes est due aux les diffrentes manires dditer un texte. Par exemple, on crit pas un mail comme on pourrait crire un programme.Cours Linux - Namur-LUG53Le mode le plus basic est le mode fundamental qui ne possde aucune commande particulire. Lorsque lon tape C-x b et quon spcie que lon veux ouvrir le buffer foo, emacs en ouvre un nouveau. Le mode par dfaut est le mode fundamental. Dans un cas contraitre, nous pouvons linvoquer en faisant M-x fundamental-mode. Tous les modes peuvent tre appels via la commande M-x -mode qui fait basculer le buffer courant dans ce mode. Pour obtenir de laide sur le mode, faites C-h m.4.13.2Les modes de programmationSi vous ouvrez avec emacs un chier dont lextension est .c, il passera en mode C (c-mode). Si vous ouvrez un chier dont lextension est .for ou .f, vous serez en mode fortran (fortran-mode). Ce ne sont que quelques exemples parmis tant dautres. Pour obtenir de laide sur le mode de programmation dans lequel vous programmez, faites C-h m.4.14Laide en ligne : C-hO trouver de laide est lternelle question ! Si vous voulez en apprendre plus sur emacs, vous pouvez consulter la documentation disponible sur votre systme (man, info, /usr/doc/emacs/*). Nous trouvons, fournit avec emacs, un tutorial sur lequel vous pouvez agir. Pour faire appel ce tutorial, faites C-h t. Plusieurs types daide sont disponibles : C-h f C-h k C-h m C-h C-h Pour obtenir de laide sur une fonction ; Pour obtenir de laide sur un raccourci clavier ; Pour obtenir de laide sur les modes dditions ; Pour obtenir de laide sur laide ;Vous pouvez galement tudier la conguration demacs en vous rfrant au document Congurer Emacs crit par Fabian Bastin. Ce document se trouve sur le site du Namur LUG (http://namurlug. org).Chapitre 5Administration5.1 IntroductionLe systme Linux (comme tout systme Unix) est un systme dexploitation multi-utilisateur et multi-tche. Un systme multi-utilisateur signie que plusieurs utilisateurs peuvent employer la mme machine en mme temps. Un systme multi-tche est un systme qui permet chaque utilisateur dexcuter simultanment plusieurs programmes. Dune part, lorsque lon a plusieurs personnes qui peuvent utiliser une mme machine, il est ncessaire dtablir une politique de gestion de ces utilisateurs. Cette politique de gestion concerne plusieurs aspects qui feront lobjet de ce chapitre. Tout dabord, nous verrons quelques simples commandes concernant la gestion du systme en gnral. Ensuite, nous verrons comment un utilisateur peut grer ses propres chiers et les partager aux autres utilisateurs. Cette notion de partage nous conduira vers la notion de groupe. Nous parlerons de la manire de grer ces groupes. Dautre part, lorsque lon a un utilisateur qui peut excuter plusieurs programmes en mme temps, il est ncessaire galement dtablir une politique de gestion des processus sous-jacents lexcution des programmes. Et cest cette politique de gestion que nous dtaillerons par la suite. Finalement, nous expliquerons comment utiliser les gestionnaires de packages rpm pour les chiers .rpm et, dpkg pour les chiers .deb.5.25.2.1Commandes de gestion gnralePasser en superutilisateurLadministration du systme est gnralement destine au superutilisateur. Le superutilisateur ou root est la personne qui possde tous les droits et privilges sur la machine. Pour vous connecter en tant que root, linvite login vous tapez root suivi de [Enter]. Ensuite, vous entrez le mot de passe qui lui est rserv. Il est gnralement dconseill de se connecter en tant que root. La mthode que nous prfrons est de se connecter en tant que simple utilisateur et de faire la commande su. Cette dernire vous demandera le mot de passe du root avant de vous accorder les privilges. Pour arrter leffet de la commande su, 54Cours Linux - Namur-LUG55vous appuierez simultanment sur les touches [Ctrl] et [d]. Vous pouvez galement, avec cette commande, possder les privilges root le temps dexcution dune commande. Pour effectuer une telle action, utilisez la commande su avec loption -c suivie du nom de la commande. Par exemple, vous pouver arrter votre systme en tapant :$ su -c halt5.2.2Redmarrer/arrter le systmeAppuyer sur le bouton power pour arrter une machine Linux nest pas la meilleure ide. Si tel est le cas, vous remarquerez que, lorsque vous la redmarrez, le systme excute au moment du dmarrage un programme du nom fsck. Cela signie que le systme na pas pu dmonter les disques correctement.1 De plus, il est risqu que vous perdiez ou endommagiez des chiers de conguration. Pour arrter le systme proprement, vous pouvez utiliser la commande halt. Larrt du systme consiste tout dabord tuer tous les processus utilisateurs puis, darrter tous les services qui ont t lanc au dmarrage, de dmonter les disques pralablement monter, pour nalement arrter le noyau. Parfois, il est ncessaire de redmarrer une machine, parce que lon a, par exemple, install un nouveau noyau. Pour redmarrer le systme, vous pouvez utiliser la commande reboot ou encore la clbre squence de touche [Ctrl]+[Alt]+[Delete]. Sur certaines distributions ces commandes ne fonctionnent que quand vous tes root.5.35.3.1Gestion des utilisateursUn peu de thorieImaginons le scnario classique dune machine hbergeant plusieurs utilisateurs. Chaque utilisateur possde son propre rpertoire sur la machine dans lequelle il peut stocker ses donnes personnelles. On appelle ce rpertoire le home directory ou le rpertoire home de lutilisateur. Le rpertoire contenant tous les utilisateurs est gnralement le rpertoire /home.2 Ainsi le home directory de lutilisateur Linus se nommera /home/Linus. Cest dans ce rpertoire quest dni le prol de lutilisateur Linus. Le prol de lutilisateur est lensemble des chiers de conguration des programmes que lutilisateur utilise. De plus, seul lutilisateur Linus est autoris entrer dans son rpertoire, y copier, lire, dplacer des chiers ou rpertoires, lexception du super-utilisateur. Un utilisateur est identi par un numro que lon appelle lUID (User IDenticator). Lutilisateur root possde toujours lUID 0. Ce numro sert au systme an de contrler les actions dun utilisateur. Ce principe didentication empche par exemple un simple utilisateur dexcuter une commande rserve au root uniquement. Lutilisateur root possde quelques commandes an de grer les utilisateurs : il peut en ajouter, en supprimer, leur changer leur mot de passe. Ces sont ces points que nous allons aborder maintenant.1 2Pour le montage/dmontage voir point 2.7 page 27. Ce rpertoire est modiable. Par exemple sur FreeBSD cest le rpertoire /usr/local/home.Cours Linux - Namur-LUG565.3.2Ajouter un nouvel utilisateurLa commande adduser a pour effet dajouter un nouvel utilisateur au systme, en crant son home directory, en modiant le chier /etc/passwd, en lui demandant son mot de passe et quelques diverses informations. Le chier /etc/passwd est le chier regroupant tous les utilisateurs du systme. Une ligne de ce chier dcrit le nom de login de lutilisateur, son UID, son home directory et le shell lancer aprs la procdure de login. La syntaxe de cette commande est la suivante :adduser o est le nom utilis pour le login et le nom du home directory du nouvel utilisateur.5.3.3Enlever un nouvel utilisateurPour enlever un utilisateur de votre machine, vous devez utiliser la commande userdel. Elle a pour but denlever du chier /etc/passwd la ligne correspondant lutilisateur pass en argument. Avec loption -r, le home directory de cet utilisateur est galement supprim. Sa syntaxe est la suivante :userdel 5.3.4Changer le mot de passeUn utilisateur un peu soucieux de la scurit de ses donnes change rgulirement son mot de passe. La commande pour changer le mot de passe est passwd. Sa syntaxe est la suivante :passwd []Tout utilisateur doit excuter cette commande sans nom dutilisateur en argument pour changer son mot de passe. Quant lutilisateur root, si il spcie un nom dutilisateur en argument, il pourra alors changer le mot de passe de cet utilisateur.5.45.4.1Gestion des groupesUn peu de thorie. . .Un groupe est un ensemble dutilisateurs. Les groupes sont utiliss pour runir des utilisateurs qui, soit travaillent sur un mme projet, soit ont besoins de permissions spciques que dautres utilisateurs ne doivent pas avoir ou encore, pour tablir une hirarchie au sein des utilisateurs. Les exemples suivants illustrent trs bien lutilisation de groupe : Nous pourrions trs bien imaginer les utilisateurs Linus et Alan dans un mme groupe kernel destin au dveloppement du kernel ; Sur la Debian GNU/Linux (une distribution Linux), par mesure de scurit, les utilisateurs nont pas accs au priphrique audio. Le priphrique audio (/dev/dsp) appartient au groupe audio. Pour que les utilisateurs puissent avoir accs ce priphique an de pouvoir couter leurs morceaux prfrs, il fautCours Linux - Namur-LUG57que ces utilisateurs soient ajouts au groupe audio. (Voir section 5.5 sur les permissions pour plus de dtail). Dans une institution comme une cole, si des professeurs et des tudiants ont accs la mme machine, mettre les professeurs dans un groupe professeurs et les tudiants dans un groupe tudiants permet de distinguer les diffrents utilisateurs. De plus, ce technique permet aux premiers de protger leurs donnes des seconds. Un groupe est identi par un numro : le GID (Group IDenticator). Un groupe peut ne pas contenir dutilisateur.5.4.2Ajouter un groupeLa commande addgroup a pour effet dajouter un nouveau groupe. Elle a pout but de modi le chier /etc/group. Le chier /etc/group est le chier regroupant tous les groupes du systme. Une ligne de ce chier dcrit le nom du groupe et son GID. La syntaxe de cette commande est la suivante :addgroup o est le nom du groupe ajouter.5.4.3Supprimer un groupePour enlever un utilisateur du systme, vous devez utiliser la commande groupdel. Elle a pour but denlever du chier /etc/group la ligne correspondant au groupe pass en argument. La syntaxe de cette commande est la suivante :groupdel 5.4.4Ajouter un utilisateur dans un groupeLa commande adduser vue prcdemment permet dajouter un utilisateur existant dans un groupe existant. Elle a pour effet de modier le chier /etc/group en ajoutant n de la ligne correspondant au groupe lutilisateur devant tre inscrit. La syntaxe de cette commande est la suivante :adduser o est .lenomdelutilisateur devanttreajout augroupeSignalons que la commande groups permet de savoir dans quel(s) groupe(s) vous tes inscrits et que la commande id en donne une description plus dtaille.5.4.5Supprimer un utilisateur dun groupeIl nexiste pas vraiment doutil pour supprimer un utilisateur dun groupe mise part la bonne vieille mthode ddition de chier ! Le chier diter est /etc/group. Chaque ligne dbute par le nom du goupeCours Linux - Namur-LUG58suivi de numros et des utilisateurs inscrits dans ce groupe. Il suft deffacer le nom de lutilisateur dont on souhaite la dsinscription.5.55.5.1Les permissions daccsUn peu de thorie. . .Lorsque vous tapez la commandes ls avec loption -l, celle-ci vous renvoie une ligne du type : -rw-r--r-1 linus users 4990 Sep 28 20:17 cours.htmlSi nous commenons par la droite, nous voyons le nom de chier (cours.html), suivi de la dernire date de modication (Sep 28 20:17) et de la taille de ce chier exprime en octet (4990). Observons maintenant le reste de la ligne en commenant par la gauche. Tout dabord, nous voyons une srie de symboles et de lettres (-rw-r--r--). Cette srie de symboles et de lettres sont les permissions daccs aux chiers. Les permissions daccs sont des autorisations daccs en lecture, en criture ou encore, en excution sur le chier que le (ou un des) possesseur(s) du chier peut(peuvent) imposer. Cette srie de symboles est immdiatement suivie dun chiffre. Ce chiffre dcrit le nombre de liens dur du chier (ici 1) ou le nombre de chiers que contient un rpertoire (dans le cas dun rpertoire). Ensuite, apparaissent le nom de lutilisateur (linus) et du groupe (users) possdant le chier. Une consquence immdiate que nous pouvons tirer de cette description est que si un chier nappartient pas lutilisateur ou au groupe indiqu, laccs au chier par un autre utilisateur sera limit. Par exemple, si vous faites ls -l /etc/inittab, vous obtenez une ligne du type (la taille et la date du chier nont pas beaucoup dimportance pour notre explication) : -rw-r--r-1 root root 1856 Jul 18 21:48 /etc/inittabCette ligne vous indique que le chier appartient lutilisateur et au groupe root. Si vous tes loggu en tant que simple utilisateur (donc ntant pas root et nappartenant pas au groupe root), faire un rm -f du chier ne devrait pas leffacer : cela dpend des permissions daccs3 . Les permissions daccs sont structures en trois groupe de trois lettres ou symboles plus une. Le premier symbole sert indiquer lutilisateur de quel type de chier il sagit. Si il sagit dun simple chier de donnes, nous aurons le symbole -, si il sagit dun rpertoire, nous y trouverons la lettre d (pour directory). Le premier groupe de trois lettres indique les permissions daccs du propritaire du chier (le nom dutilisateur indiqu comme tant le possesseur). Le second indique les permissions daccs du groupe possdant le chier. Et le dernier indique les permissions daccs des utilisateurs qui ne sont ni le nom dutilisateur, ni le nom de groupe indiqus. Nous pouvons attribuer un chier plusieurs types de mthode daccs. Nous verrons les trois principales : la lecture symbolise par la lettre r (pour read), lcriture symbolise par la lettre w (pour write) et lexcution symbolise par la lettre x (pour execute). Le signe - tant prsent pour symboliser labsence de lune des trois premires. 3rw xr - xgrouper- xutilisateurautresSi vous excutez la commande avec les mme permissions daccs, le systme refusera deffacer le chier. Un message permission denied sera afch.Cours Linux - Namur-LUG59Nous entendons par accs en lecture, le droit de lire le chier. Attention, ce nest pas parce que vous avez le droit de lire un chier contenant un programme crit en bash que vous pouvez excuter le programme4 . Il faut pour cela que vous possdiez la permission dexcution du chier (donc du programme). Si ce qui prcde nest pas clair, voici un petit exemple : supposons que nous ayons un chier contenant un programme crit en bash, par exemple, prog. Ce chier contient comme premire ligne une ligne du type #!/bin/bash. Cette premire ligne indique que lorsque nous voulons excuter le programme, linterprteur utiliser est bash. Imaginons, maintenant que les permissions daccs soient les suivantes (peu importe lutilisateur et le groupe) : -rwxr-----. Ces permissions dnotent que lutilisateur peut lire, crire et excuter ce chier, que le groupe peut uniquement le lire et na pas le droit de lexcuter. En dautres termes, le groupe la droit den regarder le contenu mais pas de lexcuter. Tandis que les autres nen ont aucun droit daccs. Le droit daccs en criture signie que le chier peut tre modi de son contenu. Pour les rpertoires la signication est un peu diffrente. Le droit daccs en lecture sur un rpertoire signie que vous pouvez lire le contenu dun rpertoire, cela prs, quavant den pouvoir lire le contenu, vous devez tre capable dy entrer. Pour pouvoir entrer dans un rpertoire, ce dernier doit possder une permission daccs en excution. Le droit daccs en criture sur un rpertoire signique que vous pouvez y ajouter et y enlever des chiers. Une ligne comme la premire sus-cite se dcrit comme suit : il sagit dun chier de donne ; linus, propritaire du chier, possde les droits daccs en lecture et en criture ; les membres du groupe (dont linus fait partie) possdent uniquement le droit en lecture ; les autres, qui ne sont ni linus, ni faisant partie du groupe users ( lexception du root bien entendu) possdent uniquement le droit en lecture.Nous allons voir dans cette section comment nous pouvons changer les permissions daccs dun chier, ainsi que le nom de lutilisateur et du groupe possdant ce chier.5.5.2Changer les permissions daccsLa commande chmod est la commande utiliser pour changer les permissions daccs dun chier. Un utilisateur quelconque a le droit de changer des permissions daccs sur un chier si il est le propritaire de ce chier. Dans le cas contraire, le systme len avertira par un message : operation not permitted. Il existe deux types de syntaxe pour cette commande : la premire que nous appellerons la mthode lettre, et la deuxime que nous appellerons la mthode octale. La mthode lettre Comme nous lavons dj signal, il existe trois groupes de trois lettres ou symboles. Chacun de ces groupes dsignent une personne ou un groupe de personnes en particulier. La mthode lettre attribue chacun de ces groupes une lettre particulire : u pour lutilisateur possdant le chier, g pour le groupe et o pour les autres (pour other en anglais). Elle attribue galement Pour chacune des permissions, la lettre r pour la lecture, w pour lcriture et x pour lexcution. Pour ajouter une permission, nous utiliserons le symbole +, pour en enlever, nous utiliserons le symbole -.4Voir chapitre sur la programmation en bash pour plus de dtailCours Linux - Namur-LUG60La syntaxe de cette commande est la suivante :chmod +Quelques exemples sufront expliquer lutilisation de la commande. avant commande aprs avant commande ---------chmod u+rwx -rwx--------------chmod u+rwx,g+rw,o+r Il ny a aucune permission de dnie sur ce chier ; Nous mettons pour lutilisateur les permissions de lecture, dcriture et dexcution ; pour le groupe les permissions de lecture et dcriture ; pour les autres uniquement la permissions de lecture. Il ny a aucune permission de dnie sur ce chier ; Nous mettons pour lutilisateur et uniquement pour lutilisateur les permissions de lecture, dcriture et dexcution ;aprs avant commande-rwxrw-r--r-xr-xr-chmod u+rwx,g+rw,o+raprs-rwxrwxr--Nous mettons pour lutilisateur les permissions de lecture, dcriture et dexcution ; pour le groupe les permissions de lecture et dcriture ; pour les autres uniquement la permissions de lecture. Nous pouvons remarquer au vu des rsultats que les anciennes permissions ne sont pas crases, elles sont seulement mises jour puisque le x du groupe est toujours prsent ;Signalons quavec cette mthode, nous pouvons utiliser la lettre supplmentaire a (pour all) la place des lettres u, g et o pour indiquer un changement simultan. Nous ajoutons galement que loption -R permet de faire des modications rcursivement sur les contenus des rpertoires. La mthode octale La deuxime mthode est une mthode un peu moins intuitive. Elle est base sur le tableau suivant : Utilisateur 400 200 100 Groupe 40 20 10 Autres 4 2 1Lecture Ecriture ExecutionLa commande a utilis est toujours chmod. Elle prends comme arguments la somme des permissions slectionnes dans le tableau et le(s) chier(s) sur lequel vous voulez les appliquer. Les permissions initiales sont compltement crases : cette mthode ne met donc pas jour les permissions, elle les applique. Lexemple suivant illustre nos propos, notez la diffrence avec le dernier exemple du point prcdent :Cours Linux - Namur-LUG61avant commande-r-xr-xr-chmod 764Nous mettons pour lutilisateur les permissions de lecture, dcriture et dexcution ; pour le groupe les permissions de lecture et dcriture ; pour les autres uniquement la permissions de lecture. La slection dans le tableau nous donne : 7 5 3 # % # # 8'6412'&$!1$"0)$"'&$"! ( # % #aprs-rwxrw-r--Loption -R est galement disponible.5.5.3Changer de propritaireChaque utilisateur inscrit dans le systme fait partie dau moins un groupe. Un utilisateur peut-tre seul dans un groupe, mais lorsque plusieurs utilisateurs travaille sur un mme projet, il devient alors ncessaire de les runir dans un seul et mme groupe. Un des objectifs tant de faciliter les changes de chiers. Sous Unix, en gros, lchange de chiers revient en changer son propritaire. La commande chown permet deffectuer une telle action. Sa syntaxe est la suivante :chown *Exemple : $ ls -l -rw-r--r-1 linus users $ chown rms cours.html $ ls -rw-r--r-1 rms users 4990 Sep 28 20:17 cours.html4990 Sep 28 20:17 cours.htmlLchange de chier se fait uniquement entre utilisateur dun mme groupe. Loption -R permet des modications rcursives du contenu dun rpertoire.5.5.4Changer de groupeMaintenant un utilisateur peut faire partie de plusieurs projets, donc de plusieurs groupe la fois. Il est alors possible cet utilisateur de changer le groupe auquel appartient un chier dont il est le possesseur. La commande permettant de changer de groupe est la commande chgrp. Sa syntaxe est pratiquement identique celle de chown :chgrp *Exemple : $ ls -l -rw-r--r-$ chgrp hurd $ ls -l -rw-r--r-1 linus linux 104560 Oct 3 19:00 libc.c1 linushurd104560 Oct 3 19:00 libc.cLutilisateur doit faire partie du groupe pour lequel il y a changement. Loption -R est galement disponible.Cours Linux - Namur-LUG625.65.6.1Gestion des processusUn peu de thorie. . .Tout programme qui est excut sur une machine cre, via le systme dexploitation, un processus. Un processus est une reprsentation de lexcution dun programme dans la mmoire de lordinateur. Ce nest pas le programme lui-mme. Chaque processus se partage la mmoire de lordinateur, chacun possde son propre territoire, sa propre parcelle de mmoire et il nest pas question quun processus tranger pntre le territoire dun autre processus. Le cas chant, un bon systme dexploitation tue le processus importun. Dailleurs, un des rles du systme dexploitation est de grer les processus dune machine an que chaque programme puisse sexcuter correctement. Il existe toute une thorie sur les processus et leur mthode de fonctionnement mais elle dpasse largement le cadre de ce cours. Nous signalerons seulement quelques points de cette thorie qui vous seront utiles dans la pratique. Tout dabord, tout processus correspond un numro unique, appel PID (Process IDenticator). Ce numro sert au systme dexploitation an de bien grer les diffrentes excutions. Ensuite, il est important de savoir quun processus peut tre pre de plusieurs ls, ainsi que les ls eux-mme,. . . En effet, si un processus pre devient dfaillant, tuer les ls ne servira pas faire disparatre le pre. Finalement et trs brivement, un processus peut entrer dans plusieurs tats lors de son excution, il peut tre arrt, suspendu, activ et ractiv et ce, an de mieux partager les ressources du systme avec les autres processus.5.6.2Lister les processusLa commande pour lister lensemble des processus tourant sur la machine est la commande ps. Cette commande est utile car si, un jour, un programme boucle ou plante assez dsagrablement (cela arrive), vous pourrez tuer le processus associ ce programme. Grce la commande ps, vous pourrez connatre le numro du processus (PID) dfaillant an de le tuer. La syntaxe de cette commande est la suivante :ps Selon le numro de version, cette commande admet plusieurs type doptions. Il faut distinguer les options Unix qui peuvent tre groupes et doivent tre prcdes dun tiret, les options BSD qui peuvent tre groupes et qui ne doivent pas tre prcdes dun tiret, et, nalement, les options longues GNU qui sont prcdes quant elles de deux tirets. Ces diffrentes options peuvent tre mlanges entre elles. Nous ne prsenterons ici que les options qui nous semble vraiment intressantes tant elles sont nombreuses. Les plus curieux complteront leur connaissance en consultant la page de manuel. Tout dabord, nous avons les options de slection de processus : -A : Slectionne tous les processus T : Slectionne tous les processus du terminal courant a : Slectionne tous les processus des terminaux, mme ceux des autres utilisateurs r : Slectionne tous les processus dans un tat actif x : Slectionne les processus sans contrler leur terminaux Exemple :Cours Linux - Namur-LUG63$ps T PID TTY 1234 pts/3 1311 pts/3STAT S RTIME COMMAND 0:00 -bash 0:00 ps TEnsuite, nous avons les options de slection par liste. Ces options requiert un argument : -C : Slectionne les processus par nom de commande -t : Slectionne par terminal -u : Slectionne les processus de lutilisateur spci Exemple : $ps -t pts/0 PID TTY 730 pts/0 1217 pts/0 1221 pts/0 TIME 00:00:00 00:00:01 00:00:08 CMD bash xdvi.bin vimAn dobtenir des informations plus dtailles sur chacun des processus, des options de mise en forme sont disponibles. Les plus utilises sont les suivantes : -l : Afchage long format u : Afchage orient utilisateur Signalons que le groupement doptions le plus utilis est aux.5.6.3Tuer un processusAn de tuer le processus rcalcitrant, vous avez votre disposition la commande kill. Sa syntaxe est la suivante :kill [-s ] Pour tuer un processus de manire douce, il suft de donner comme argument la commande, uniquement le PID du processus que vous dsirez tuer. Par exemple, si le processus numro 234 est bloqu ou boucle, alors kill 234 larrtera et lenlvera de la liste des processus. Parfois un simple kill ne suft pas, vous pouvez alors tuer le processus de manire forte en utilisant loption -s 9 ou bien -9. Vous ne pouvez tuer que des processus dont vous tes propritaires.5.75.7.1Installer et dsinstaller des programmesLa notion de packageUn package regroupe lensemble des chiers qui sont ncessaires linstallation dun programme. Il existe trois types de package et ils sont caractriss par leur extension. Tout dabord, nous avons les packages avecCours Linux - Namur-LUG64lextension .rpm. Ce type de package a t cr par la compagnie RedHat. Dautres compagnies, comme Mandrake et Suse, ont repris ce format de package et lont adapt leurs besoins. Ensuite, nous avons les packages dextension .deb : package provenant de la distribution Debian. Enn, nous avons le format .tar.gz ou encore .tgz qui est le format utilis pour livrer les sources. Signalons quil existe des sources qui sont livres en format rpm ou deb. Il existe des programmes qui gre la cration des packages, leur installation, leur dsinstallation et leur dpendance. Ainsi pour le format .rpm, il existe le programme rpm. Pour les packages de format .deb, il existe dpkg et, pour le format .tgz, il existe tar. Nous nous limiterons dans cette section dexpliquer le fonctionnement du programme rpm qui permet dinstaller des packages dextension .rpm.5.7.2(Ds)installer des packages RPMLe Red Hat Package Manager est un outil puissant dinstallation des packages sur votre systme. Le format RPM (chier darchive *.rpm) possde des informations sur : les autres packages installer pour que le programme fonctionne bien ; les composants avec lesquels il entrerait en conit si ceux-ci sont dj installs. Linstallation laide du paramtre -i Pour installer un package, utilisez la syntaxe :rpm -i Pour installer un package, vous devez vous connecter en tant que root. Vous pouvez utiliser la commande su pour bncier des droits de ladministrateur. Les chiers contenus dans le package sont installs et le package est enregistr dans la base de donnes. Vous pouvez combiner le paramtre -i avec les paramtres -v et -h en les concatnant : -ivh. Les options -v et -h ensemble afchent une jolie barre de progression lorsque le package est en cours dinstallation. Si le package est dj install, rpm vous le signale en afchant un message derreur. La syntaxe devient :rpm -ivh Le cas chant, il arrive que dautres packages ou chiers soient ncessaires, les informations correspondantes tant spcies dans le package installer. Dans ce cas, rpm afche un message derreur et vous demande dinstaller les packages dont dpend celui que vous voulez installer. Un problme parfois rencontr est celui des dpendance cyclique entre package : vous ne pouvez installer un package A que si un package B est install et vice-versa. Pour contourner le problme, il vous suft de mentionner dans la mme commande les deux noms de packages :rpm -ivh package_A package_BCours Linux - Namur-LUG65Dautres conits peuvent aussi interrompre linstallation. Un chier ne doit appartenir qu un seul package, par exemple. Vous pouvez contourner le contrle mais cela peut avoir des consquences dommageables dans la base de donnes et vous risquez de ne plus pouvoir mettre jour certains packages par la suite. Dsinstallation avec le paramtre -e : Le paramtre -e permet de supprimer des packages dj installs et inscrits dans la base de donnes. Les packages sont dsigns par leur nom abrg. La syntaxe est la suivante :rpm -e Ne dsinstallez que des packages qui ne sont pas rclams par dautres packages. Cette dpendance est dnie dans la base de donnes. Le cas chant, la dsinstallation est interrompue et la dpendance vous est signale dans un message derreur. Le processus peut-tre excut de force grce certaines options mais nous dconseillons cette mthode. Mise jour avec le paramtre -U Si vous vous tes procur une nouvelle version dun package, vous ntes pas oblig de dsinstaller lancienne version pour installer la nouvelle. Utilisez la mme syntaxe que pour linstallation mais avec le paramtre -U :rpm -U ourpm -Uvh Lors dune mise jour, rpm tient compte de vos chiers de conguration. Sils nont pas t modis depuis linstallation, ils sont remplacs par les nouveaux. Dans le cas contraire, une copie de sauvegarde des chiers de conguration existants est cre avec lextension *.rpmorig ou *.rpmsave. Lecture dinformations avec le paramtre -q : Un package RPM contient de nombreuses informations telles que la liste des chiers qui y sont contenus ou la description du package. Voici quelques moyens de dterminer ces informations. Le paramtre -q vous permet de vous renseigner sur des packages installs :rpm -q En ajoutant le paramtre -l, vous obtenez la liste de tous les chiers du packages :rpm -ql Loption -i fournit la description du package ainsi que dautres informations :rpm -qi Cours Linux - Namur-LUG66Avec le paramtre -f, vous pouvez dterminer quel package appartient un chier :rpm -qf Pour obtenir des informations propos dun package non encore install, utilisez loption -p :rpm -qpl La combinaison de paramtres -qa est galement intressante : elle permet dafcher la liste des packages installs.rpm -qa Vrication avec le paramtre -V : Le programme rpm offre la possibilit de contrler si des packages ont t modis depuis leur installation. Utilisez le paramtre -V avec la syntaxe suivante :rpm -V Les diffrents chiers modis sont afchs. Aucune rponse nest donne la commande sil ny a pas de diffrences avec la version initialement installe. Ce sont les chiers de conguration que lon retrouve le plus souvent dans cette liste.Cours Linux - Namur-LUG67Open Content Licence v1.0Version 1.0, July 14, 1998. This document outlines the principles underlying the OpenContent (OC) movement and may be redistributed provided it remains unaltered. For legal purposes, this document is the license under which OpenContent is made available for use. The original version of this document may be found at http ://opencontent.org/opl.shtml LICENCE Terms and Conditions for Copying, Distributing, and Modifying Items other than copying, distributing, and modifying the Content with which this license was distributed (such as using, etc.) are outside the scope of this license. 1. You may copy and distribute exact replicas of the OpenContent (OC) as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty ; keep intact all the notices that refer to this License and to the absence of any warranty ; and give any other recipients of the OC a copy of this License along with the OC. You may at your option charge a fee for the media and/or handling involved in creating a unique copy of the OC for use ofine, you may at your option offer instructional support for the OC in exchange for a fee, or you may at your option offer warranty in exchange for a fee. You may not charge a fee for the OC itself. You may not charge a fee for the sole service of providing access to and/or use of the OC via a network (e.g. the Internet), whether it be via the world wide web, FTP, or any other method. 2. You may modify your copy or copies of the OpenContent or any portion of it, thus forming works based on the Content, and distribute such modications or work under the terms of Section 1 above, provided that you also meet all of these conditions : (a) You must cause the modied content to carry prominent notices stating that you changed it, the exact nature and content of the changes, and the date of any change. (b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the OC or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License, unless otherwise permitted under applicable Fair Use law. These requirements apply to the modied work as a whole. If identiable sections of that work are not derived from the OC, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the OC, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Exceptions are made to this requirement to release modied works free of charge under this license only in compliance with Fair Use law where applicable. 3. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to copy, distribute or modify the OC. These actions are prohibited by law if you do not accept this License. Therefore, by distributing or translating the OC, or by deriving works herefrom,Cours Linux - Namur-LUG68you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or translating the OC. 4. BECAUSE THE OPENCONTENT (OC) IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE OC, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE OC "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK OF USE OF THE OC IS WITH YOU. SHOULD THE OC PROVE FAULTY, INACCURATE, OR OTHERWISE UNACCEPTABLE YOU ASSUME THE COST OF ALL NECESSARY REPAIR OR CORRECTION. 5. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, 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 USE OR INABILITY TO USE THE OC, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.