Cours Complet Sur Linux

Embed Size (px)

Citation preview

Cours Linuxversion 0.0.9

Anne Acadmique 2001-2002

Auteurs : Frdric BURLET, Fabian BASTIN, Christophe CHISOGNE, Avec laide du NamurLUG

c 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 9

Linux, 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 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.5

Linux, plus quun OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5.1 1.5.2 Logiciels tournant sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Linux vs GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6

GNU/Linux, au-del du technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6.1 Logiciels libres, opensource, licences . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.7 1.8

Pourquoi 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 16

2 Les commandes utiles 2.1

Un peu de thorie... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.1 2.1.2 Notion de systme de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Quelques remarques prliminiaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2

Plus daide ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2

Cours Linux - Namur-LUG

3

2.3

Oprations 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4

Oprations 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.5

Commandes 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 . . . . . . . . . . . . . . . . . . . . . . . . 26

2.6

Les pagers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.6.1 2.6.2 less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 more . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.7

Accs 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.8 2.9

Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Larborescence du systme Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 31

3 Linterprteur de commande : BASH 3.1 3.2 3.3

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Cours Linux - Namur-LUG

4

3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4 3.5

Combinaison 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Regroupement 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 40

4 Les diteurs : Emacs et vi I Lditeur vi 4.1

dition 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 . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2

Concepts 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.3

Utilisation 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.4

Commandes plus avances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4.1 Recherches et remplacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Cours Linux - Namur-LUG

5

4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 II 4.5 4.6 4.7 4.8 4.9

Slection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Coloration syntaxique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Insertion dun autre chier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Lancer un sous-shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Edition multi-chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 48

Lditeur emacs

Description 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.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 . . . . . . . . . . . . . . . . . . . 52

4.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 54

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Commandes de gestion gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.2.1 5.2.2 Passer en superutilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Redmarrer/arrter le systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.3

Gestion 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.4

Gestion des groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.4.1 Un peu de thorie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Cours Linux - Namur-LUG

6

5.4.2 5.4.3 5.4.4 5.4.5 5.5

Ajouter un groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Supprimer un groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Ajouter un utilisateur dans un groupe . . . . . . . . . . . . . . . . . . . . . . . . . 57 Supprimer un utilisateur dun groupe . . . . . . . . . . . . . . . . . . . . . . . . . 57

Les 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.6

Gestion des processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.6.1 5.6.2 5.6.3 Un peu de thorie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Lister les processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Tuer un processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.7

Installer et dsinstaller des programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.7.1 5.7.2 La notion de package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 (Ds)installer des packages RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

RemerciementsMes 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 1

Introduction1.1 propos du cours

Ce 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.1

Namur Linux User Group

8

Cours Linux - Namur-LUG

9

1.2

propos de ce document

Signalons 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 ([email protected]) ou Fabian Bastin ([email protected]) ou encore Christophe Chisogne (chichi@namurlug. org).

1.3

Quest-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.1

Do 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 lentiret

Cours Linux - Namur-LUG

10

de 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.4

Linux, le systme dexploitation

Linux 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.2

Les systmes dexploitation Linux, et les autres OS

Linux 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.3

Linux, 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-LUG

11

1.51.5.1

Linux, plus quun OSLogiciels tournant sous Linux

Contrairement 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.2

Linux vs GNU/Linux

Certains 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.1

GNU/Linux, au-del du techniqueLogiciels libres, opensource, licences

Linclusion 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-LUG

12

1.7

Pourquoi 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.8

O 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.1

Sur son disque local

Lendroit le plus rapide, cest sur le systme lui-mme, savoir sur un disque dur de sa machine.

Cours Linux - Namur-LUG

13

La 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-LUG

14

Les 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.2

Sous forme non lectronique

La 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-LUG

15

1.8.3

Sur Internet

Linux 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 2

Les commandes utiles2.12.1.1

Un peu de thorie...Notion de systme de chiers

Avant 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.

16

Cours Linux - Namur-LUG

17

2.1.2

Quelques remarques prliminiaires

Quelques 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.2

Plus 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 ps

vous 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-LUG

18

Touche PgUP PgDwn Enter Space b q

Effet 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 ;TOUTES

les 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 BUGS

EXAMPLES

Vous 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-LUG

19

Cette 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 x

Les 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.1

Oprations sur les rpertoiresLister les chiers dun rpertoire

Cette 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-LUG

20

-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.2

Crer un rpertoire

Pour 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 B212

2.3.3

Supprimer un rpertoire

Pour 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 B212

2.3.4

Afcher le rpertoire courant

Il existe une commande pour afcher au terminal le chemin du rpertoire courant. la commande est la suivante :pwd

Cette commande ne requiert ni options, ni arguments.

Cours Linux - Namur-LUG

21

2.3.5

Changer de rpertoire

Pour 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 /bin

Permet de passer dans le rpertoire parent Revient dans le rpertoire prcdent le dernier changement de rpertoire

2.3.6

Espace occup par un rpertoire

La 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-LUG

22

Exemple : 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.1

Oprations sur les chiersLa copie de chiers

La 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 /tmp

Exemple-2 : Copier le contenu du rpertoire /.gnome dans le rpertoire /tmp$ cp /.gnome/ /tmp

Exemple-3 : Avec loption -R, le rpertoire et les sous-rpertoires sont copis rcursivement$ cp -R /.gnome/ /tmp

Exemple-4 : Copier un chier sous un autre nom$ cp .bashrc toto

Notez la diffrence entre lexemple 2 et lexemple 3.

Cours Linux - Namur-LUG

23

2.4.2

Dplacement/Renomage de chiers

La 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.html

Exemple-2 : Dplace les chiers page1.html et page2.html dans le rpertoire http-pub/$ mv page1.html page2.html http-pub/

2.4.3

Effacement de chiers

La 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 - -f

Cours Linux - Namur-LUG

24

Exemple : 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 ? n

2.52.5.1

Commandes plus complexeComparer le contenu de deux chiers

Pour 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.2

Concatnation de chiers

Pour 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 imprimables

2.5.3

Chercher un chier

Il 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-LUG

25

find * *

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-LUG

26

which *

Exemple :$ which ping ls /bin/ping /bin/ls

type 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/ping

2.5.4

Chercher une expression dans un chier

La 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 lulu

grep lulu toto

Le 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 ;1

Voir chapitre 3 section 3.3.8 pour plus de dtails

Cours Linux - Namur-LUG

27

Exemple : 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 # MCom

2.6

Les pagers

Un pager est un programme qui permet dafcher lcran le contenu dun chier texte. Nous vous prsentons dans cette section plusieurs pagers.

2.6.1

less

Le 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.2

more

Le 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.1

Accs dautres disquesMonter un systme de chier

Dans 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-LUG

28

La 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/floppy

o 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.2

Aprs 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 chier

Cours Linux - Namur-LUG

29

2.7.3

Espace occup dune partition

La 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% /home

2.8

Divers

Quelques 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.9

Larborescence du systme Linux

Quelque 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-LUG

30

/ /bin /sbin /etc /boot /dev /home /lib /root /tmp /var /mnt /usr

Cest 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 3

Linterprteur de commande : BASH3.1 Introduction

Sous 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.1

Cela varie dune conguration lautre.

31

Cours Linux - Namur-LUG

32

Ainsi, 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.2

Le mcanisme des alias

Un 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 -i

Pour 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 -i

3.3

Redirection et ltre

La 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-LUG

33

Le 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.1

Redirection de la sortie standard

La 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 > toto

Pour 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.2

Double redirection de sortie

Il 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.3

Redirection dentre

Certaines 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 > lulu

La 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.5

Redirection des erreurs

Paralllement 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.6

Redirection de la sortie standard et derreur

Notez que vous pouvez rediriger la fois la sortie standard et la sortie derreur vers un mme chier. Il existe deux formats de syntaxe : &>

ou >& 2

Pour sortir de la commande faites [Ctrl]-[D]

Cours Linux - Namur-LUG

35

Les deux commandes prcites sont quivalentes la suivante : > 2>&1

Attention, 2>&1 1> ne donne pas le mme rsultat, pourquoi ?3

3.3.7

Les ltres

Un ltre (ou une commande ltre) est un programme sachant crire et lire des donnes par les canaux dentre et de sortie standard.

3.3.8

Relier les commandes par un tube

Pour 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.9

Principales commandes de ltre

Les 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.3

Solution : 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-LUG

36

Exemple-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 bash

Exemple-2 : Nous pouvons tendre la recherche prcdente au mot getty en ajoutant un tube supplmentaire :$ ps aux | grep bash | grep getty

Exemple-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 > resultat

3.4

Dans 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 commandes

Cours Linux - Namur-LUG

37

$ pwd /home/linus

Exemple-2 : Lutilisation daccolades agit sur le shell actif$ cd ; pwd /home/linus $ { cd .. ; pwd ; } /home $ pwd /home

3.5

Les substitutions

Il existe deux types de substitution : la substitution de caractres et la substitution de commandes.

3.5.1

La substitution de caractres

La 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.2

La substitution de commande

Lorsque 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-LUG

38

Autre 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.3

Les caractres dchappement

Bien 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 4

Les 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.

39

Cours Linux - Namur-LUG

40

I 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.1

dition de textes sous Linux

Une 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.1

Quest-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.2

Fonctionnalits de vi

Dans 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 shell

Cours Linux - Namur-LUG

41

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.3

Cas o vi est particulirement adapt

Ladministration 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.2

Concepts de base sous vim

Avant 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.1

Edition de chiers

Pour lancer vim, rien de plus simple. Il suft de taper son nom :vim

Pour diter un chier, il suft de passer son nom en paramtre :vim monfichier.txt

Ldition 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.2

Modes utiliss par vim

Les 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-LUG

42

vi 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.3

Changer de mode

Les 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.4

Comment 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-LUG

43

Une autre manire classique est dutiliser la commande simpleZZ

Cette commande (en mode commande, naturellement) fait sortir de vi, mais en enregistrant les ventuelles modications.

4.2.5

Principes gnraux de vim

Dans 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