Apprenez Linux
Apprenez Linux
Apprenez Linux
Sauf mention contraire, le contenu de cet ouvrage est publié sous la licence :
Creative Commons BY-NC-SA 2.0
La copie de cet ouvrage est autorisée sous réserve du respect des conditions de la licence
Texte complet de la licence disponible sur : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
Simple IT 2010 - ISBN : 978-2-9535278-2-7
Avant-propos
i
CHAPITRE 0. AVANT-PROPOS
ii
COMMENT LIRE CE LIVRE ?
iii
CHAPITRE 0. AVANT-PROPOS
Si un site web change d'adresse, nous modierons la redirection mais le code web à
utiliser restera le même. Si un site web disparaît, nous vous redirigerons vers une page
du Site du Zéro expliquant ce qui s'est passé et vous proposant une alternative. Si une
capture d'écran n'est plus à jour, nous vous indiquerons ce qui a changé et comment
procéder.
En clair, c'est un moyen de nous assurer de la pérennité de cet ouvrage sans que vous
ayez à faire quoi que ce soit !
Remerciements
Je tiens à remercier toutes les personnes qui m'ont aidé et soutenu dans la réalisation
de ce livre.
Mes parents, qui me font conance et continuent de suivre attentivement mes projets.
Élodie, qui est toujours là pour me donner la dose de courage dont j'ai besoin.
Pierre Dubuc, qui s'est mis en quatre pour que ce livre soit publié dans les meilleures
conditions possibles.
Nos infographistes, Fan Jiyong (couverture du livre) et Yannick Piault (illustrations
des chapitres), qui nous ont encore fait un superbe travail d'illustration.
L'équipe des zCorrecteurs, qui fait des merveilles pour corriger les fautes et amélio-
rer l'expression de cet ouvrage. Merci tout particulièrement à Philippe Lutun (ptipi-
lou), Martin Wetterwald (DJ Fox), Stéphanie Noardo (Poulpette), Maxence Cordiez
(Ziame), Charles Duprey (Barbatos) et Julian Espérat (Savageman).
L'équipe de Simple IT qui fait un travail formidable pour améliorer le Site du Zéro,
et tous nos visiteurs qui nous font conance ! Merci, merci, merci !
iv
Sommaire
Avant-propos i
À la découverte de Linux avec Ubuntu . . . . . . . . . . . . . . . . . . . . . . i
Qu'allez-vous apprendre en lisant ce livre ? . . . . . . . . . . . . . . . . . . . . ii
Comment lire ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
Ce livre est issu du Site du Zéro . . . . . . . . . . . . . . . . . . . . . . . . . iv
Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv
v
SOMMAIRE
vi
SOMMAIRE
vii
SOMMAIRE
viii
SOMMAIRE
x
SOMMAIRE
xi
SOMMAIRE
xii
Première partie
Découvrir et installer Linux
1
Chapitre 1
Mais c'est quoi, Linux ?
Diculté :
L inux ? Dicile de ne pas en entendre parler aujourd'hui. À moins d'être restés enfermés
dans un bunker antinucléaire coupé de tout lien avec le reste du monde, vous avez
forcément rencontré ce mot quelque part sur Internet ou au cours d'une conversation
entre amis.
Ce n'est pas étonnant : Linux est partout. Sans Linux, beaucoup de sites web et de pro-
grammes n'existeraient pas aujourd'hui.
Mais bon sang, c'est QUOI Linux ?
C'est la question à laquelle ce premier chapitre va répondre, pas de panique. Nous n'allons
rien installer pour le moment, juste découvrir ce que c'est et comment nous en sommes
arrivés là. . . parce que c'est vraiment important ! Alors installez-vous confortablement et
commençons par le commencement. ;-)
3
CHAPITRE 1. MAIS C'EST QUOI, LINUX ?
Un système d'exploitation
Est-ce que vous avez déjà entendu parler de Windows ? 1
Aujourd'hui, la quasi-totalité des PC (si ce n'est plus !) est livrée avec Windows .
Mais savez-vous ce que cela signie ?
4
UN SYSTÈME D'EXPLOITATION
Pourquoi ? Parce qu'il dépend du matériel dont est constitué votre ordinateur. C'est
en eet la carte mère qui ache l'écran de boot. La carte mère est le composant
fondamental de tout ordinateur, c'est elle qui fait travailler le processeur, les disques
durs, le lecteur de CD-ROM, etc.
On a donc dans l'ordre :
1. écran de boot ;
2. démarrage de Windows.
C'est seulement une fois que Windows est chargé que vous pouvez enn utiliser vos
programmes : jeux, Internet, logiciels de dessin, de mail, de musique. . .
Parce que. . . votre ordinateur a besoin d'une sorte de superlogiciel qui soit le chef
d'orchestre. C'est lui qui doit gérer la mémoire de votre ordinateur, la répartir entre
tous les programmes. Il fait le lien entre votre matériel (carte graphique, mémoire,
imprimante) et vos logiciels. Et c'est un sacré boulot, croyez-moi ! ;-)
Ce superlogiciel s'appelle le système d'exploitation. Windows est donc un sys-
tème d'exploitation.
5
CHAPITRE 1. MAIS C'EST QUOI, LINUX ?
le moment est le principe de base de Linux : c'est vous qui contrôlez votre ordinateur.
Ce n'est donc pas par hasard si ce cours s'appelle Reprenez le contrôle à l'aide de
Linux ! . Vous allez enn comprendre ce que vous faites et donc mieux appréhender le
fonctionnement de l'informatique !
Peut-on faire cohabiter deux OS sur son ordinateur ? Je n'ai pas envie de
supprimer Windows pour le remplacer par Linux !
Beaucoup de gens croient qu'il faut faire un choix : Linux ou Windows. Rien n'est plus
faux : vous pouvez très bien avoir deux OS (ou plus !) installés sur votre ordinateur.
Dans ce cas, juste après l'écran de boot, vous aurez un programme appelé Boot Loa-
der qui s'achera pour que vous puissiez faire votre choix. Le boot loader dont nous
parlerons ici porte le doux nom de GRUB. Celui-ci vous proposera de choisir entre
Windows et Linux à chaque démarrage de l'ordinateur. GRUB lancera l'OS par défaut
si vous ne faites pas de choix avant quelques secondes. C'est vous qui choisissez l'OS
par défaut, bien entendu ; on ne vous impose rien.
Le schéma du démarrage de l'ordinateur change donc un peu, comme le montre la
gure 1.3.
Comme vous pouvez déjà le voir sur ce schéma, lorsque vous êtes sous Linux, vous
utilisez des programmes faits pour Linux et non pas les programmes de Windows. En
eet, les programmes Windows ne fonctionnent pas sous Linux et inversement.
6
UN SYSTÈME D'EXPLOITATION
7
CHAPITRE 1. MAIS C'EST QUOI, LINUX ?
Sachez quand même qu'il est possible de faire tourner des programmes Win-
dows depuis Linux à l'aide d'un programme appelé wine. Toutefois, même si
cela fonctionne bien la plupart du temps, il est davantage préférable d'utiliser
des programmes faits pour Linux une fois que vous utilisez cet OS car ils
tournent plus rapidement.
Vous devez déjà vous dire : Aïe, si je ne peux plus utiliser les programmes de Windows
auxquels je suis habitué, je ne vais pas m'en sortir . Pourtant, il ne faut pas longtemps
pour s'adapter 3 et les programmes sous Linux ont d'énormes avantages :
ils sont gratuits : vous verrez que sous Linux, presque tous les programmes sont
gratuits ;
les logiciels sont souvent mis à jour et ce toujours gratuitement ! Vous verrez donc
fréquemment vos logiciels préférés évoluer et n'aurez pas à payer trois cents euros
pour vous mettre à jour !
certains de ces logiciels sont meilleurs que ceux que l'on trouve sous Windows.
D'ailleurs, certains n'existent même pas sous Windows ! Vous découvrirez de nou-
velles fonctionnalités et nirez par gagner du temps tout en utilisant plus ecacement
votre ordinateur.
La naissance de Linux
Voyons les choses en face.
Windows coûte environ 200 ou 300 euros.
Linux est gratuit, soit 0 euro TTC.
On ne peut pas s'empêcher de se dire : Mais si c'est gratuit, c'est que cela doit être
quelque chose de vite fait et de moindre qualité ! . Grossière erreur.
Si Linux est gratuit (comme quasiment tous ses logiciels), il y a des raisons ; pour
comprendre, il faut remonter à 1984.
L'informatique en 1984
Nous sommes donc en 1984. À cette époque, l'informatique n'est pas très développée.
Microsoft vient de sortir son premier OS : MS-DOS. Mais ce dernier est encore loin
d'être abouti.
3. Deux ou trois jours susent, voire même une soirée si vous êtes curieux !
8
LA NAISSANCE DE LINUX
Si vous avez utilisé les premières versions de Windows, vous avez forcément
entendu parler de MS-DOS (gure 1.4). En eet, toutes les versions de Win-
dows 95 à Windows Me étaient basées sur MS-DOS (MS-DOS se lançait
au démarrage juste avant Windows). Ce n'est que depuis Windows XP que
MS-DOS a complètement disparu. Aujourd'hui, il n'est plus développé.
Non ! Il y en avait d'autres mais bien moins connus du grand public. Celui qui était
considéré comme le meilleur s'appelait Unix . Il était beaucoup plus puissant que
MS-DOS mais aussi plus compliqué à utiliser, ce qui explique pourquoi seuls les in-
formaticiens professionnels l'utilisaient. Il est aussi beaucoup plus ancien : ses origines
remontent à 1969 !
Graphiquement, Unix ressemblait beaucoup à MS-DOS : du texte blanc sur un fond
noir. Il faut dire qu'à l'époque les ordinateurs n'étaient pas vraiment capables de faire
mieux.
Le projet GNU
C'est justement à cette époque, en 1984, que Richard Stallman créa le projet GNU.
Richard Stallman était alors chercheur en intelligence articielle au MIT. Il voulait
créer un nouveau système d'exploitation fonctionnant comme Unix (les commandes
restant les mêmes).
9
CHAPITRE 1. MAIS C'EST QUOI, LINUX ?
Pourquoi vouloir créer une copie d'Unix ? Parce qu'Unix était payant et devenait
de plus en plus cher ! Richard Stallman a voulu réagir en proposant une alternative
gratuite : le projet GNU était né.
Bon à savoir : Mac OS X est lui aussi basé sur Unix. En revanche, MS-DOS
et Windows sont complètement à part.
Quelle diérence ?
Un programme libre est un programme dont on peut avoir le code source, c'est-à-dire
la recette de fabrication . Au contraire, Windows est un OS propriétaire dont le
code source est conservé par Microsoft. Imaginez que c'est un peu comme le Coca-
Cola : personne ne connaît la recette de fabrication 4 . On ne peut donc pas le modier
4. Il y a bien des gens qui essaient de l'imiter, mais bon. . .
10
LA NAISSANCE DE LINUX
Quel rapport avec GNU ? Eh bien il se trouve que ces deux projets étaient complé-
mentaires : tandis que Richard Stallman créait les programmes de base (programme
de copie de chier, de suppression de chier, éditeur de texte), Linus s'était lancé dans
la création du c÷ur d'un système d'exploitation : le noyau.
Le projet GNU (programmes libres) et Linux (noyau d'OS) ont fusionné pour créer
GNU/Linux.
11
CHAPITRE 1. MAIS C'EST QUOI, LINUX ?
Vous devriez maintenant avoir une meilleure idée de l'origine des trois principaux sys-
tèmes d'exploitation qui existent aujourd'hui : Mac OS, Linux et Windows. Ainsi, Mac
OS et Linux sont tous les deux basés sur Unix, l'ancêtre des systèmes d'exploitation,
tandis que Windows, issu de MS-DOS, est une branche à part. Globalement, c'est tout
ce que vous avez besoin de retenir.
On dit que Mac OS et Linux sont basés sur Unix car ils ont copié son mode de
fonctionnement. Ce n'est pas péjoratif, bien au contraire : cela fait même honneur à
Unix.
Les programmes Linux n'utilisent pas du tout le même code source que ceux
d'Unix (celui-ci était d'ailleurs propriétaire, donc privé). Ils ont été complète-
ment réécrits mais fonctionnent de la même manière.
Si je vous ai raconté tout cela c'est parce que j'estime que connaître l'origine de Linux
est important. Cela vous permettra de comprendre bon nombre de choses par la suite.
12
LES DISTRIBUTIONS DE LINUX
13
CHAPITRE 1. MAIS C'EST QUOI, LINUX ?
La distribution Debian
Nous, nous allons nous concentrer sur la distribution Debian (gure 1.9).
Figure 1.10 La carte des développeurs de Debian. Chaque point représente une
personne participant à la création de Debian.
14
LES DISTRIBUTIONS DE LINUX
15
CHAPITRE 1. MAIS C'EST QUOI, LINUX ?
En résumé
Le système d'exploitation est l'outil qui fait le lien entre votre machine et vos
programmes.
Windows, Mac OS et Linux sont les systèmes d'exploitation les plus connus.
Linux a la particularité d'être libre, c'est-à-dire que son code source (sa recette de
fabrication) est ouvert : tout le monde peut le consulter. Par opposition, le code
source qui a permis de concevoir Windows et Mac OS est fermé, on dit que ce sont
des systèmes d'exploitation propriétaires.
Il existe de nombreuses variantes de Linux, que l'on appelle distributions.
Ubuntu est une des distributions les plus populaires à l'heure actuelle. C'est celle
que nous utiliserons tout au long de cet ouvrage. Il s'agit d'un dérivé de la distribution
Debian.
16
Chapitre 2
Téléchargez Linux, c'est gratuit !
Diculté :
L e premier chapitre vous aura permis, je l'espère, de vous mettre un peu dans le bain
du monde de Linux. Nous avons vu ce qu'est Linux, comment est né ce dernier et ce
que sont les distributions.
Je vous ai dit en particulier que, sous Linux, nous avons énormément de choix. Il existe en
eet de très nombreuses distributions qui proposent des versions diérentes de Linux, fort
heureusement toutes compatibles entre elles. Dans ce livre, j'ai choisi de vous présenter
Ubuntu car c'est une distribution très populaire et facile à utiliser.
Comme promis, c'est dans ce chapitre que nous passons à la pratique. Nous allons dans un
premier temps découvrir ce que sont les gestionnaires de bureau et choisir en conséquence
la version d'Ubuntu qui nous convient le mieux (eh oui, on va encore devoir faire un choix !).
17
CHAPITRE 2. TÉLÉCHARGEZ LINUX, C'EST GRATUIT !
Il n'y a pas de bonne réponse : cela peut être très beau comme très moche. Comme on
peut très facilement changer l'apparence de son Linux, vous arriverez sans problème
à trouver une apparence qui vous convient. C'est un peu comme sous Windows, où,
vous le savez peut-être, on peut changer l'apparence du système. La diérence, c'est
que sous Linux la personnalisation va plus loin qu'un simple changement de couleurs.
Nous allons voir cela un peu plus en détail.
Ce que je veux que vous sachiez ici c'est que quelle que soit la distribution il existe
deux façons d'utiliser Linux :
en mode console (équivalent à DOS) ;
en mode graphique (équivalent à Windows).
En mode console
Le mode console est un mode qui a tendance à faire peur aux petits nouveaux ; et
pour cause, il n'a pas une tête très accueillante : jugez plutôt (gure 2.1).
En console, le fond est généralement noir (mais ce n'est pas une règle). Il est cependant
possible d'utiliser de la couleur. Autre point important : en console, pas de souris. Tout
se fait au clavier.
Pas du tout ! Comme je vous l'ai dit plus haut, deux modes sont disponibles. La console
n'est qu'un des deux visages de Linux ; il existe aussi un mode graphique (encore
heureux).
Vous vous demandez à coup sûr ce que fait encore le mode console dans Linux. C'est vrai
quoi, si nous avons inventé des écrans plats gigantesques pouvant acher des milliards
de couleurs avec un contraste de 10000:1, ce n'est pas pour retomber à l'âge de pierre !
Et pourtant. . . la console est un outil très puissant, pratiquement incontournable. Elle
18
LES DEUX VISAGES DE LINUX
Figure 2.1 Le mode console. Oui oui, il s'agit bien d'un Linux du XXIe siècle !
est toujours utilisée aujourd'hui par les linuxiens dont vous ferez bientôt partie.
Comment puis-je être aussi sûr de moi ?. . . Parce que je compte bien vous en expliquer
le fonctionnement ! ;-) 1
En mode graphique
Le mode graphique semble beaucoup plus accueillant pour quelqu'un venant de Win-
dows. En fait, cela ressemble un peu à ce dernier : il y a des fenêtres et on clique sur
des croix pour les fermer. Standard, quoi. ;-)
Le truc. . . c'est qu'il y a plusieurs modes graphiques. Tous les modes graphiques sont
basés sur un programme appelé X (voilà un nom court et facile à retenir). X est en
fait la brique de base du mode graphique sous Linux.
Par-dessus X vient se greer un programme appelé le gestionnaire de bureau. Le
rôle du gestionnaire de bureau est de gérer les fenêtres, leur apparence, leurs options,
etc.
Le concept de gestionnaire de bureau n'existant pas sous Windows, il s'agit
donc de quelque chose nouveau pour vous. Certes, sous Windows on peut
changer l'apparence (le skin ), mais cela s'arrête là. Le bureau reste le
même, il y a toujours une barre des tâches avec le menu Démarrer, toujours
un Poste de Travail, etc. Sous Linux en revanche le fonctionnement peut
radicalement changer d'un gestionnaire de bureau à l'autre !
1. En partant de zéro bien sûr, ce n'est pas un Livre du Zéro pour rien. ;-)
19
CHAPITRE 2. TÉLÉCHARGEZ LINUX, C'EST GRATUIT !
20
LES DEUX VISAGES DE LINUX
21
CHAPITRE 2. TÉLÉCHARGEZ LINUX, C'EST GRATUIT !
22
LES DEUX VISAGES DE LINUX
change. Quand on parle d'Ubuntu, on fait donc généralement référence à toutes les
versions d'Ubuntu à la fois.
Le choix du gestionnaire de bureau n'est pas dénitif. On peut sans problème
avoir plusieurs gestionnaires de bureau installés à la fois. Il vous faudra alors
choisir au démarrage, lorsque l'on vous demande votre identiant et votre
mot de passe, le gestionnaire de bureau que vous souhaitez utiliser. Vous
pourrez donc tester et installer d'autres gestionnaires de bureau par la suite.
Sachez d'ailleurs qu'il en existe des moins répandus et qui permettent d'avoir
un bureau vraiment très diérent de Windows.
Enn, une information importante à retenir : tous ces gestionnaires de bureau sont com-
patibles entre eux. Les programmes fonctionnent donc tous quel que soit le gestionnaire
de bureau que vous utilisez. ;-)
23
CHAPITRE 2. TÉLÉCHARGEZ LINUX, C'EST GRATUIT !
Figure 2.6 La console reste la même quel que soit le gestionnaire de bureau
autre ; par contre, l'aspect graphique peut radicalement changer selon le gestionnaire
de bureau que l'on choisit : KDE, Gnome, XFCE, etc.
Télécharger et graver le CD
Intéressons-nous maintenant au concret : comment obtenir Ubuntu sur CD pour le
tester et peut-être l'installer ?
Vous avez deux solutions :
vous pouvez télécharger Ubuntu vous-mêmes. . . ;
. . . ou bien commander des CD par la poste.
Nous allons commencer par voir comment télécharger Ubuntu.
1/ Récupérer l'ISO
Linux se télécharge sous la forme d'un gros chier .iso d'environ 700 Mo. Ce chier
correspond à l'image d'un CD et vous permet donc de graver un CD complet de Linux.
La première étape consiste à récupérer le chier ISO. Là, tout dépend si vous avez
choisi Ubuntu, Kubuntu ou Xubuntu, car ce n'est pas le même ISO.
Utilisez le code web 3 correspondant à la distribution que vous souhaitez obtenir. Si
vous hésitez, je vous conseille de prendre Ubuntu.
B
Télécharger Ubuntu
Code web : 320933
B
Télécharger Kubuntu
Code web : 227215
3. Pour savoir comment utiliser ces codes web, je vous invite à consulter l'avant-propos au début
de cet ouvrage, page iii.
24
TÉLÉCHARGER ET GRAVER LE CD
B
Télécharger Xubuntu
Code web : 821320
Sur la page, cliquez tout simplement sur le lien de téléchargement. Vous allez récupérer
un chier .iso.
2/ Graver le CD
Il vous faut maintenant graver le gros chier .iso que vous venez de télécharger.
Sous Windows 7
Si vous avez Windows 7, un outil de gravure d'images disque .iso est déjà inclus. Il
vous sut de double-cliquer sur le chier .iso, ce qui aura pour eet d'ouvrir la fenêtre
de la gure 2.7.
25
CHAPITRE 2. TÉLÉCHARGEZ LINUX, C'EST GRATUIT !
B
Télécharger CDBurnerXP
Code web : 767566
Insérez un CD-R (CD vierge) dans votre graveur. Lancez ensuite le logiciel CDBur-
nerXP Pro et, lors du démarrage, cliquez sur Créer un CD/DVD de données , comme
vous le montre la gure 2.8.
26
COMMANDER UN CD
Eh bien voilà, ce n'était pas bien compliqué. Vous avez maintenant un CD d'Ubuntu
ambant neuf, gratuit, légal, qui n'attend que d'être essayé.
Nous verrons justement dans le chapitre suivant comment tester Linux. Mais avant
cela, nous allons voir une autre manière d'obtenir un CD d'Ubuntu. . .
Commander un CD
Une autre solution consiste à commander un CD par la poste grâce au service ShipIt
d'Ubuntu.
B
Commander un CD
Code web : 202490
Il faut créer un compte pour commander, mais rassurez-vous, on ne vous spammera
pas. Par ailleurs, l'envoi de CD est gratuit.
Comment peuvent-ils faire cela ? C'est bien beau le libre, mais ce n'est pas
viable économiquement !
En eet : Canonical, la société qui édite Ubuntu, perd de l'argent lorsque vous com-
mandez des CD par la poste. C'est un choix délibéré de leur part pour promouvoir
Ubuntu, mais ils insistent sur le fait qu'il est préférable de télécharger un ISO et ils
vous invitent à faire un don.
Bon à savoir : ShipIt, c'est gratuit. . . mais c'est lent. Le CD peut mettre
plusieurs semaines pour arriver. Mon conseil : si vous le pouvez, téléchargez
Ubuntu, cela ira plus vite.
En résumé
Linux peut être utilisé de deux façons diérentes : en mode console ou en mode
graphique.
Le mode console est puissant mais plus délicat à apprivoiser. Les débutants pré-
fèrent l'éviter au début.
Le mode graphique est similaire à ce que vous connaissez sous Windows et Mac
OS : on y manipule des fenêtres avec une souris.
Il existe plusieurs variantes du mode graphique que l'on appelle gestionnaires de
bureau : Gnome, KDE, XFCE...
Pour obtenir Ubuntu, il sut de télécharger gratuitement une image de disque
(format .iso) et de la graver sur un CD.
27
CHAPITRE 2. TÉLÉCHARGEZ LINUX, C'EST GRATUIT !
28
Chapitre 3
Tester et installer Ubuntu
Diculté :
N ous y voici enn. Dans ce chapitre, vous allez peut-être pour la première fois de votre
vie voir à quoi ressemble Linux sur votre ordinateur et découvrir qu'en fait. . . c'est
beaucoup plus simple que vous ne le pensiez.
Saviez-vous qu'on peut tester Linux sur son ordinateur sans rien installer sur son disque
dur ? On va justement voir maintenant comment faire cela. Ensuite, je vous montrerai
comment installer Linux sur votre disque dur si vous êtes décidés. ;-)
29
CHAPITRE 3. TESTER ET INSTALLER UBUNTU
30
PREMIER DÉMARRAGE D'UBUNTU
Un autre gros avantage de cette méthode est que vous pourrez ensuite dés-
installer Ubuntu le plus simplement du monde en allant dans. . . Ajout /
Suppression de programmes du panneau de conguration de Windows !
Cette méthode a toutefois quelques défauts. Ubuntu sera un peu moins performant
(car il sera installé dans Windows) et nécessitera plus de mémoire vive (512 Mo).
Dans la mesure du possible, je vous conseille d'installer Ubuntu en utilisant la vraie
méthode classique que nous allons voir ci-dessous.
31
CHAPITRE 3. TESTER ET INSTALLER UBUNTU
32
PREMIER DÉMARRAGE D'UBUNTU
Repérez le menu Boot . Il faudra généralement vous déplacer à l'aide des èches du
clavier. La gure 3.5 montre ce que vous devriez voir à peu de choses près 1 .
Ici, on peut dénir l'ordre dans lequel l'ordinateur essaie de démarrer les éléments. À
vous de changer cet ordre pour faire en sorte que votre ordinateur essaie de démarrer
sur le CD avant de démarrer sur le disque dur.
Lisez les instructions sur le côté (certes, en anglais), pour savoir comment faire sur votre
ordinateur. Si vraiment vous êtes bloqués, n'hésitez pas à aller demander de l'aide sur
les forums du Site du Zéro.
33
CHAPITRE 3. TESTER ET INSTALLER UBUNTU
34
INSTALLER UBUNTU
En mode Live CD, tout est chargé depuis le CD. . . or, un CD est beaucoup
plus lent qu'un disque dur ! Si le chargement de Linux s'éternise, ne paniquez
pas, c'est tout à fait normal : la lecture depuis le CD prend beaucoup de
temps. Rassurez-vous : une fois Linux installé sur le disque dur, le chargement
sera bien plus rapide que cela. ;-)
Une fois le chargement eectué, vous allez rapidement vous retrouver sur le gestionnaire
de bureau que vous avez choisi. Si, comme moi, vous avez opté pour Ubuntu, vous serez
donc sous Gnome.
Le bureau de Gnome ressemble à la gure 3.7 (il peut légèrement varier en fonction de
votre version d'Ubuntu).
Alors, qu'en dites-vous ? Ce n'était pas franchement la mer à boire !
Retenez bien : tout ce que vous voyez là a été chargé dans votre mémoire vive. Ubuntu
n'a pas touché à votre disque dur. Vous pouvez donc tester Linux en toute sécurité.
N'hésitez pas à parcourir les menus et à vous familiariser un peu avec l'environnement
de bureau que vous avez choisi.
Installer Ubuntu
Alors, vous avez fait un petit tour dans les programmes fournis avec Ubuntu ?
Sachez que selon la version que vous avez prise (Ubuntu, Kubuntu ou Xubuntu), les
programmes installés par défaut seront diérents. En eet, certains programmes sont
à la base destinés à KDE, mais fonctionnent aussi sans problème sur Gnome. Inverse-
ment : certains programmes sont destinés, à la base, à Gnome, mais on peut très bien
les utiliser sous KDE (c'est le cas de Firefox, par exemple). Il n'y a donc pas d'incom-
patibilité entre les gestionnaires de bureau, mais on préfère généralement installer au
départ les programmes prévus pour KDE sur KDE, histoire d'être. . . logique.
Allez, je vous sens chauds pour une petite installation, là. On y va ?
35
CHAPITRE 3. TESTER ET INSTALLER UBUNTU
36
INSTALLER UBUNTU
Mes captures d'écran sont faites sur la version 10.04 d'Ubuntu. Il est possible
que vous ayez téléchargé une version plus récente, mais rassurez-vous : je vais
vous proposer des codes web sous les principales captures d'écran que vous
pourrez utiliser si la fenêtre que vous avez sous les yeux est diérente de celle
imprimée dans cet ouvrage. Ainsi, il vous sura d'utiliser le code web pour
visualiser les instructions relatives à la toute dernière version d'Ubuntu que
vous venez de télécharger.
La première fenêtre de l'assistant s'ouvre (gure 3.9). Vériez que Français est bien
sélectionné.
Cliquez ensuite sur Suivant pour passer à l'étape no 2.
37
CHAPITRE 3. TESTER ET INSTALLER UBUNTU
38
INSTALLER UBUNTU
que vous habitiez dans un pays qui possède un clavier diérent, comme la Suisse ou le
Canada. Pour les Français, le bon type de clavier est normalement sélectionné d'oce.
Vous pouvez tester votre clavier dans le petit cadre de texte en bas de la fenêtre.
Essayez de taper des symboles spéciaux comme é, à, ô, ï, etc. Si ces symboles
s'achent sans problème, c'est que vous avez indiqué le bon type de clavier.
En résumé
Il est possible d'installer Ubuntu directement depuis Windows, mais la manipulation
classique consiste plutôt à redémarrer l'ordinateur avec le CD d'Ubuntu dans le
lecteur.
La première fois, Ubuntu se charge directement sur le CD, en mode Live CD. Votre
disque dur n'est pas modié et vous pouvez tester Ubuntu tranquillement.
Si vous êtes décidés, il sut de lancer le programme d'installation depuis Ubuntu et
de suivre les étapes.
39
CHAPITRE 3. TESTER ET INSTALLER UBUNTU
40
Chapitre 4
Partitionner son disque
Diculté :
41
CHAPITRE 4. PARTITIONNER SON DISQUE
Bien que les risques soient minimes si vous suivez pas à pas mes instructions,
je vous recommande quand même de faire une sauvegarde de vos données
importantes sous Windows avant de commencer ce chapitre. Le partition-
nement, si vous l'eectuez mal, pourrait aecter la partition Windows. Pas
de panique, tout sera expliqué, mais on n'est jamais trop prudent non plus.
Un disque dur ne doit jamais être ouvert, vous risqueriez d'endommager vos données.
Cependant, et pour des raisons purement pédagogiques, on va en ouvrir un pour bien
comprendre ce qu'il y a à l'intérieur (gure 4.2).
Comme vous le voyez, un disque dur est un empilement de disques, un peu comme des
CD. Ils sont lus par une tête de lecture qui n'est pas sans rappeler la tête de lecture
des disques vinyle.
42
DÉFRAGMENTEZ VOTRE DISQUE
L'importance de la défragmentation
Avant d'aller plus loin, il est très vivement conseillé d'eectuer une défragmentation.
C'est une opération qui consiste en gros à mieux organiser les chiers sur votre disque
dur, à les rassembler pour éviter qu'ils ne soient éparpillés.
On ne dirait pas comme ça, mais vos chiers sont parfois placés un peu n'importe
comment à la surface de votre disque dur ! Voici un petit schéma sur la gure 4.3 pour
bien comprendre dans quel état est votre disque.
43
CHAPITRE 4. PARTITIONNER SON DISQUE
Sous Windows XP
La fenêtre de la gure 4.5 s'ouvre.
Sélectionnez le disque dur que vous voulez défragmenter (celui qui contient Windows,
généralement C:) et cliquez sur le bouton Défragmenter . Vous pouvez sortir prendre
l'air, parce que la défragmentation peut prendre un moment 1 .
Pendant la défragmentation, l'avancement est indiqué en bas de la fenêtre (gure 4.6).
Sous Windows 7
La fenêtre est sensiblement diérente (gure 4.7), mais le principe est le même.
Il sut de sélectionner le disque à défragmenter (si vous en avez plusieurs). Il est
conseillé de tous les défragmenter. Cliquez ensuite sur Défragmenter le disque .
N'éteignez pas votre PC pendant la procédure et attendez sagement. Idéalement, évitez
1. Plusieurs heures si vous n'en avez jamais fait.
44
DÉFRAGMENTEZ VOTRE DISQUE
45
CHAPITRE 4. PARTITIONNER SON DISQUE
46
QU'EST-CE QUE LE PARTITIONNEMENT ?
Figure 4.10 Windows, Linux et vos documents ont chacun leur espace
Ainsi, Linux et Windows pourraient s'échanger vos chiers (photos, documents texte,
etc.) sans interférer l'un avec l'autre. Autre intérêt de cette technique : si par hasard
vous deviez réinstaller Linux ou Windows, vous ne perdriez pas vos documents car
seules les partitions Linux ou Windows seraient formatées ! En quelque sorte, mettre
47
CHAPITRE 4. PARTITIONNER SON DISQUE
vos documents dans une partition séparée, c'est les mettre à l'abri.
48
PRÊTS ? PARTITIONNEZ !
Lequel choisir ?
Actuellement, et pour faire simple, la plupart des ordinateurs sous Windows utilisent
le NTFS et sous Linux, la plupart utilisent l'ext3. Nous allons choisir l'ext4, plus récent
et plus performant.
Je peux vous proposer ceci pour vos partitions :
Linux : ext4 ;
Windows : NTFS (ça ne bouge pas) ;
Documents : ext4.
Le but est que la partition Documents puisse être lue et écrite depuis Windows et
Linux, an que vous puissiez accéder à vos documents, que vous soyez sous Windows
ou Linux.
L'ext4, comme vous le savez, fonctionne parfaitement sous Linux. Cependant, Windows
ne le reconnaît pas. . . à moins d'installer un programme qui lui permettra de l'utiliser.
Je peux vous recommander FS Driver, qui rend utilisables l'ext2, l'ext3 et l'ext4 sous
Windows.
B
Télécharger FS Driver
Code web : 696565
Prêts ? Partitionnez !
Revenons à l'installation d'Ubuntu, et plus précisément à l'étape 4, celle du partition-
nement.
La fenêtre de la gure 4.11 vous propose plusieurs options dans le cas où Windows est
déjà installé.
Installer les deux côte à côte : Ubuntu va se faire automatiquement de la place
sur votre disque dur et créer les partitions pour vous. C'est la solution la plus simple
que vous devriez choisir si vous ne voulez pas entrer dans les détails. En revanche,
vous n'aurez pas de partition spéciale pour les documents dans ce mode-ci. En bas
de la fenêtre, vous pouvez déplacer le curseur pour décider de l'espace que vous
attribuez à Windows et à Ubuntu.
Tout eacer et utiliser le disque entier : tout le disque sera formaté, partition
Windows comprise. Ne faites cela que si vous voulez supprimer Windows ! Ubuntu
sera installé sur l'ensemble du disque dur.
Dénir les partitions manuellement (avancé) : choisissez cette option si vous
voulez créer vous-mêmes les partitions. C'est plus complexe mais cela vous donnera
plus de choix.
En résumé : si vous voulez aller vite et faire simple, choisissez l'option Installer les
deux côte à côte . Sinon, choisissez le mode manuel : nous allons découvrir ci-dessous
comment celui-ci fonctionne.
49
CHAPITRE 4. PARTITIONNER SON DISQUE
50
PRÊTS ? PARTITIONNEZ !
Le partitionnement manuel
Je vais supposer que vous procédez à un partitionnement manuel, et donc vous montrer
pas à pas comment ça fonctionne avec l'outil de partitionnement présent dans le ges-
tionnaire d'installation d'Ubuntu. Mais avant cela, il faut que je vous fasse découvrir
comment sont nommées les partitions du disque !
Si vous avez un seul disque dur sur votre ordinateur, pas de problème, vous ne risquez
pas de vous tromper. Toutefois, si par hasard vous avez plusieurs disques, je pense
que vous apprécierez que je vous explique comment les disques durs sont nommés sous
Linux.
En eet, c'est très diérent de Windows où l'on a l'habitude des sempiternels C:, D:, E:,
etc. On va découvrir les noms des disques sous Linux avec un exemple : hda.
h : la première lettre indique si le disque est de type IDE ou SCSI (un type de
connexion diérent à la carte mère). S'il est de type IDE, la lettre est un h , si
c'est un SCSI (ou un S-ATA), la lettre est un s .
d : cette lettre ne change pas.
a : c'est cette lettre qui indique les diérents disques durs. hda représente le premier
disque dur IDE, hdb le second, hdc le troisième, etc.
Lorsque l'on crée des partitions, on ajoute généralement un chire représentant le
numéro de la partition. Ainsi, si on a trois partitions sur notre disque hda, elles seront
nommées hda1, hda2, hda3 . . .
51
CHAPITRE 4. PARTITIONNER SON DISQUE
52
PRÊTS ? PARTITIONNEZ !
Il se peut que vous ayez plus de partitions que moi. Par exemple, il est
fréquent de voir certains PC achetés dans le commerce équipés d'une toute
petite partition restore , capable de restaurer certains logiciels de votre
ordinateur en cas de formatage. Si vous en avez une, n'y touchez pas. Votre
PC est peut-être tatoué . Pour plus d'informations, lisez la documentation
Ubuntu à ce sujet.
B
Documentation tatouage
Code web : 866792
Si cela vous semble trop compliqué, vous pouvez toujours opter pour
une installation simple depuis Windows qui ne pose pas ce genre de pro-
blème de partitionnement. Nous avons décrit cette procédure d'installation
simpliée au début du chapitre précédent.
53
CHAPITRE 4. PARTITIONNER SON DISQUE
C'est à ce moment-là que la défragmentation se révèle utile. Comme toutes les don-
nées ont été groupées au même endroit, ça évite que certains chiers égarés soient
accidentellement supprimés. Ce serait un tantinet ballot, avouez.
Vous devriez alors avoir de l'espace libre, comme sur la gure 4.14.
54
PRÊTS ? PARTITIONNEZ !
55
CHAPITRE 4. PARTITIONNER SON DISQUE
Choisissez la taille que vous voulez pour cette partition, mais veillez à laisser à peu
près 1 Go (environ 1 000 Mo) de libre sur votre disque pour que l'on puisse créer une
dernière partition après.
Choisissez là encore le système de chiers ext4.
Pour le point de montage, choisissez /home (c'est le dossier Mes documents équi-
valent de Linux).
La n de l'installation
Il nous reste encore quelques petites étapes et nous aurons terminé.
56
LA FIN DE L'INSTALLATION
57
CHAPITRE 4. PARTITIONNER SON DISQUE
La fenêtre suivante (gure 4.19) vous demande votre nom ainsi qu'un login (pseudo-
nyme) qui vous identiera sur votre ordinateur. Choisissez aussi un mot de passe.
En bas, on vous demande le nom que vous voulez attribuer à votre ordinateur. On vous
en propose un par défaut mais vous pouvez changer cela sans risque. Dans mon cas,
comme je suis areusement en manque d'inspiration, je vais laisser mateo21-desktop
comme nom d'ordinateur.
58
LA FIN DE L'INSTALLATION
59
CHAPITRE 4. PARTITIONNER SON DISQUE
Installation !
Ouf ! C'est ni ! Une fenêtre résume tous les choix que vous avez faits. C'est celle de la
gure 4.21.
Il est encore temps de revenir en arrière faire des modications, les partitions de votre
disque ne seront réellement aectées qu'ensuite.
Cliquez sur Installer , et laissez Ubuntu se charger de tout.
60
LA FIN DE L'INSTALLATION
GRUB au démarrage
Lors de chaque démarrage, si vous avez choisi d'installer Linux sur le même disque dur
que Windows, on vous demandera quel OS vous voulez charger (gure 4.22).
En résumé
Un disque dur peut être virtuellement découpé en plusieurs sections diérentes : c'est
le principe du partitionnement.
61
CHAPITRE 4. PARTITIONNER SON DISQUE
Pour installer Linux, vous devez modier le partitionnement de votre disque. L'opé-
ration consiste à réduire l'espace alloué à Windows pour faire de la place à Linux.
Les partitions Windows stockent les chiers selon un système appelé NTFS, tandis
que les partitions sous Linux utilisent plus souvent les systèmes ext3 et ext4.
On crée une partition spéciale appelée swap d'environ 1 Go, qui sert d'extension à
la mémoire vive lorsque celle-ci est pleine.
Après l'installation, un outil appelé GRUB vous demandera à chaque démarrage quel
système d'exploitation vous souhaitez lancer.
62
Chapitre 5
Découverte du bureau Gnome
Diculté :
N ous y voilà enn ! Après avoir découvert ce qu'est Linux et appris comment l'installer,
vous devriez à présent avoir cet OS opérationnel sur votre ordinateur. Parfait. Vous
l'avez installé, et maintenant ?
On n'installe pas Linux juste pour la beauté du geste et pour dire ça y est, je suis sous
Linux ! . Si vous ne savez pas vous en servir, Linux risque davantage de faire oce de
décoration qu'autre chose sur votre ordinateur.
Toute la suite de ce cours sera donc dédiée à la découverte et l'étude approfondie de Linux.
Vous n'imaginez pas encore toutes les choses que vous allez apprendre. ;-)
Nous allons commencer en douceur par la découverte de Gnome. C'est l'un des gestionnaires
de bureau de Linux les plus utilisés, et c'est notamment celui que l'on trouve par défaut dans
Ubuntu. Simple, clair et facile à prendre en main, il conviendra à la plupart des nouveaux
utilisateurs de Linux.
Ce chapitre vous propose une petite visite guidée de l'environnement Gnome.
63
CHAPITRE 5. DÉCOUVERTE DU BUREAU GNOME
Bon, le principe est simple, vous ne devriez pas avoir trop de mal : vous devez rentrer
votre login et votre mot de passe. Ce sont les informations que vous avez indiquées lors
de l'installation d'Ubuntu.
Mais pourquoi faut-il s'authentier à chaque fois que l'on démarre Linux ? Si
je suis seul, ce n'est pas la peine de mettre un mot de passe. . .
Il est vrai que sous Windows on n'a pas trop l'habitude de s'authentier, surtout sur
son ordinateur domestique. . . quoique les habitudes sont en train de changer de ce
côté-là.
Sous Linux, la conception est totalement diérente. C'est un OS qui se veut vraiment
multiutilisateur, c'est-à-dire que plusieurs personnes peuvent utiliser le même ordina-
teur de façon simultanée (en le contrôlant à distance par l'internet par exemple). Il y
a une vraie politique de sécurité et c'est pour cela que même pour l'ordinateur de la
maison chacun doit avoir son login et son mot de passe. Cela permet notamment de
savoir à qui appartient tel ou tel chier.
64
BIENVENUE SUR LE BUREAU GNOME
Les options
Quelques options vous sont proposées au bas de la fenêtre de login. Vous pouvez no-
tamment y choisir votre gestionnaire de bureau (gure 5.2).
65
CHAPITRE 5. DÉCOUVERTE DU BUREAU GNOME
66
NAUTILUS, L'EXPLORATEUR DE FICHIERS
67
CHAPITRE 5. DÉCOUVERTE DU BUREAU GNOME
les dossiers et chiers de votre disque dur et de les ouvrir. C'est donc un programme
que vous risquez de lancer souvent.
Pour ouvrir Nautilus, le plus simple est de se rendre dans le menu Raccourcis et
d'ouvrir Poste de travail, comme l'indique la gure 5.6.
68
NAUTILUS, L'EXPLORATEUR DE FICHIERS
69
CHAPITRE 5. DÉCOUVERTE DU BUREAU GNOME
70
GESTION DES PROGRAMMES
71
CHAPITRE 5. DÉCOUVERTE DU BUREAU GNOME
Il n'y a plus qu'à attendre que tout se fasse pour vous (gure 5.13) !
Et les mises à jour ne peuvent pas se faire automatiquement, sans que j'aie
besoin à chaque fois de cliquer sur Installer les mises à jour ?
Si vous ne voulez pas vous prendre la tête et être sûrs d'avoir un système toujours à
72
GESTION DES PROGRAMMES
73
CHAPITRE 5. DÉCOUVERTE DU BUREAU GNOME
jour, le mieux est de congurer le gestionnaire de mises à jour pour qu'il installe les
nouveautés sans demander votre autorisation.
Retournez dans le menu Applications → Ajouter & Enlever. Dans le bas de la
fenêtre qui s'ouvre, cliquez sur Préférences. Cliquez ensuite sur l'onglet Mises à
jour puis sélectionnez Installer les mises à jour de sécurité sans conrmation
(gure 5.16).
En résumé
Gnome est un des plus célèbres gestionnaires de bureau. Il est installé par défaut
avec Ubuntu.
Vous devez vous connecter au démarrage de la machine, en indiquant votre nom
d'utilisateur et votre mot de passe.
Les menus en haut de l'écran sous Gnome donnent accès à vos programmes et chiers.
La logithèque Ubuntu est un outil simple d'emploi qui vous permet d'installer de
nouveaux programmes.
Les mises à jour de tous les programmes sont centralisées et peuvent s'eectuer
automatiquement.
74
Chapitre 6
Découverte du bureau KDE
Diculté :
A près avoir découvert Gnome, l'environnement de bureau par défaut d'Ubuntu, nous
allons ici nous pencher sur KDE. Celui-ci est utilisé par défaut si vous installez Kubuntu
(une variante d'Ubuntu) mais peut tout aussi bien être installé sous Ubuntu, comme
nous allons le voir.
L'objectif est avant tout de vous montrer la diversité qui règne dans le monde de Linux :
celui-ci peut prendre plusieurs formes selon le gestionnaire de bureau que l'on utilise. KDE
est assez diérent de Gnome, vous allez vite vous en rendre compte, mais il est très plaisant
à utiliser. Ce chapitre sera l'occasion de vous faire une première idée de KDE qui est, avec
Gnome, un des gestionnaires de bureau les plus utilisés et les plus célèbres.
75
CHAPITRE 6. DÉCOUVERTE DU BUREAU KDE
76
CONNEXION AU BUREAU KDE
que cela ne change rien : vous pouvez très bien lancer KDE depuis l'interface de login
de Gnome et vice-versa.
77
CHAPITRE 6. DÉCOUVERTE DU BUREAU KDE
Indiquez votre login et votre mot de passe. S'ils sont bons, KDE se charge alors (gure
6.4).
Le bureau et le menu K
Après un petit instant de chargement, vous vous retrouvez sur le bureau de KDE,
présenté sur la gure 6.5.
Le bureau est assez riche au premier abord. En fait, il est complètement personnali-
sable : on peut y ajouter toute une variété de widgets, appelés Plasmoïdes . Vous
pouvez les congurer en cliquant sur l'icône située tout en haut à droite de l'écran.
En bas de l'écran, on retrouve une barre des tâches qui rappelle en plusieurs points
celle de Windows ; vous ne devriez pas être trop dépaysés. Sous KDE, on l'appelle le
tableau de bord.
78
LE TABLEAU DE BORD
Le tableau de bord
Le tableau de bord, normalement présent en bas de l'écran, est un outil complet qui
vous permet de lancer vos applications, d'accéder à vos chiers ou encore de visualiser
l'état du système. Intéressons-nous dans un premier temps à la partie gauche de ce
tableau de bord.
Le menu K
C'est le menu principal, le plus important de KDE (gure 6.7).
79
CHAPITRE 6. DÉCOUVERTE DU BUREAU KDE
80
LE TABLEAU DE BORD
Dans la fenêtre qui s'ouvre, cliquez sur Select System Language et installez les
traductions lorsqu'on vous le demande (gure 6.9).
81
CHAPITRE 6. DÉCOUVERTE DU BUREAU KDE
L'explorateur QuickAccess
Cette seconde icône du tableau de bord ouvre directement votre répertoire personnel
( home ). Vous pouvez l'utiliser pour accéder rapidement à vos chiers (gure 6.10)
sans passer par le programme Dolphin.
82
L'EXPLORATEUR DE FICHIERS DOLPHIN
Ensuite, une série d'icônes sont présentes dans ce que l'on appelle la zone de noti-
cation. Le principe est exactement le même que sous Windows : certains programmes
qui tournent apparaissent ici et vous informent des événements en cours, du volume
audio, de l'état de la batterie, etc.
Enn, vous avez la date et, tout à droite, une petite icône qui vous permet de person-
naliser complètement le tableau de bord.
Voilà pour ce rapide tour d'horizon du tableau de bord. Bien sûr, ces icônes peuvent
changer d'une version à l'autre d'Ubuntu et vous pouvez recongurer le tableau de
bord comme bon vous semble. N'hésitez pas à le personnaliser jusqu'à ce que vous vous
sentiez un peu plus chez vous . :-)
Notez que le navigateur web de KDE, Konqueror, peut aussi jouer le rôle
d'explorateur de chiers.
Dans un cas comme dans l'autre, la fenêtre de l'explorateur Dolphin s'ouvre (gure
6.13).
Son fonctionnement n'est, là encore, pas très diérent de l'explorateur Windows. Après
quelques minutes de découverte, vous vous serez vite adaptés !
La principale particularité de Dolphin (et de KDE en général) est qu'il faut cliquer une
seule fois pour ouvrir un chier ou un dossier. Inutile donc de double-cliquer à tout va !
Vous pouvez ouvrir plusieurs onglets (comme dans un navigateur web) en eectuant
la combinaison de touches Ctrl + T. Mieux encore, vous pouvez scinder la fenêtre en
deux (gure 6.14) pour voir simultanément deux dossiers diérents ! Pour cela, vous
pouvez appuyer sur la touche F3 ou cliquer sur le bouton Scinder en haut dans la
barre d'outils. Ainsi, vous pouvez facilement déplacer ou copier des chiers d'un dossier
à l'autre !
Ces particularités mises à part, n'ayez crainte, vous trouverez vite vos marques sous
KDE.
Je vous invite maintenant à ouvrir la Conguration du système (équi-
valent du Panneau de conguration de Windows) qui vous permettra
de personnaliser au mieux votre KDE. Pour l'ouvrir, vous savez ce qu'il vous
reste à faire : utiliser le menu K !
83
CHAPITRE 6. DÉCOUVERTE DU BUREAU KDE
84
L'EXPLORATEUR DE FICHIERS DOLPHIN
En résumé
KDE est un autre gestionnaire de bureau très célèbre, installé par défaut si vous avez
téléchargé Kubuntu.
Si vous avez choisi Ubuntu et que vous utilisez donc Gnome, vous pouvez installer
KDE en passant par la logithèque. Il sut d'installer kubuntu-desktop (version
complète avec de nouveaux programmes) ou kde-minimal (version allégée).
Vous pouvez sélectionner votre gestionnaire de bureau au démarrage, sur l'écran de
connexion.
Le tableau de bord de KDE est entièrement personnalisable. Vous pouvez lancer vos
programmes depuis le menu K, similaire au menu Démarrer de Windows.
85
CHAPITRE 6. DÉCOUVERTE DU BUREAU KDE
86
Chapitre 7
Installez Linux dans une machine
virtuelle
Diculté :
87
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
Dans ce chapitre, nous allons découvrir comment lancer Linux à l'intérieur d'une fenêtre
Windows (gure 7.1). C'est le principe de la virtualisation !
Installer VirtualBox
Pour commencer, nous devons télécharger et installer un logiciel de virtualisation. Celui
que je vous recommande s'appelle VirtualBox. Il a l'avantage d'être libre et gratuit, et
il existe en version Windows, Linux et Mac OS X.
Rendez-vous sur le site de VirtualBox pour télécharger la dernière version correspon-
dant à votre système d'exploitation :
B
Télécharger VirtualBox
Code web : 107019
88
INSTALLER VIRTUALBOX
89
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
couper votre accès à Internet (gure 7.4). En eet, VirtualBox doit établir un pont de
connexion entre votre ordinateur et la machine virtuelle pour que celle-ci puisse accéder
à Internet. Cela provoque une rupture temporaire de l'accès à Internet de l'ordre de
quelques secondes 1 .
90
CRÉER UNE NOUVELLE MACHINE VIRTUELLE
91
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
On vous demande dans un premier temps de lui donner un nom. Vous pouvez tout
simplement l'appeler Ubuntu . Vous remarquerez que les champs en dessous se
remplissent automatiquement pour indiquer le type de système d'exploitation qui sera
installé dans la machine virtuelle (gure 7.7).
Vous constaterez que VirtualBox est capable de faire tourner de nombreux systèmes
d'exploitation, de Windows 3.1 à Windows 7 en passant par Linux (Ubuntu, Red Hat,
Debian. . .), Solaris, FreeBSD, etc.
VirtualBox est capable de faire tourner tous ces systèmes d'exploitation, mais
il vous faut le CD d'installation ou l'image disque de ces OS pour les lancer.
VirtualBox n'est pas un outil magique : sans le CD d'installation, il ne saura
pas quoi faire.
Vous devez ensuite indiquer quelle quantité de mémoire vive (RAM) vous souhaitez
réserver à la machine virtuelle (gure 7.8). En eet, pour que celle-ci fonctionne cor-
rectement, il va lui falloir de la mémoire. . . comme pour tout ordinateur normal ! Il
va donc falloir donner un peu de mémoire à la machine : je vous recommande au
moins 512 Mo, voire 1 Go si possible 3 .
Il nous reste maintenant à créer le disque dur de la machine virtuelle. VirtualBox va
créer une sorte de gros chier sur votre disque qui représentera le disque dur de la
machine. Laissez l'option Créer un nouveau disque dur sélectionnée (gure 7.9).
Une nouvelle fenêtre s'ouvre alors : l'assistant de création de disque dur virtuel (gure
7.10).
3. VirtualBox peut occuper jusqu'à 50% de votre mémoire vive. Je dispose de 3 Go, la quantité
maximale que l'on me propose est donc 1,5 Go.
92
CRÉER UNE NOUVELLE MACHINE VIRTUELLE
93
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
N'oubliez pas que la taille de l'image disque correspond à la taille maximale qui
pourra être utilisée par la machine virtuelle. Si vous avez l'intention d'installer
de gros programmes, prévoyez un peu plus de place. Pour une installation
classique et basique d'Ubuntu, 8 Go devraient cependant sure.
Les assistants de création sont enn terminés, ouf ! :-) Ils ne sont pas si complexes en
réalité ; il y a quelques années, la création de machine virtuelle était plutôt réservée
aux experts. En quelques clics, nous avons conguré la machine, qui est maintenant
prête à être lancée !
94
CRÉER UNE NOUVELLE MACHINE VIRTUELLE
95
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
Congurer le lecteur CD
Avant de lancer la machine virtuelle, vous avez besoin du CD d'installation d'Ubuntu,
exactement comme si vous démarriez votre ordinateur pour y installer Linux. Deux
choix s'orent à vous.
Vous avez déjà gravé Ubuntu sur CD : il sut d'insérer le CD dans le lecteur avant
de lancer la machine virtuelle. Il s'agit du cas le plus simple.
Vous avez téléchargé l'image (.iso) mais ne l'avez pas gravée sur CD : inutile d'uti-
liser un CD pour cela, VirtualBox est capable de lire directement l'image ISO.
Dans le cas où vous avez l'image ISO sur votre disque dur et où vous ne souhaitez pas
graver de CD, vous devez congurer la machine virtuelle pour qu'elle utilise le chier
.iso comme CD.
Sur l'écran d'accueil d'Ubuntu, cliquez tout d'abord sur le nom de la machine virtuelle
disponible dans la liste puis cliquez sur le bouton Conguration .
96
LANCER LA MACHINE VIRTUELLE
Dans la fenêtre qui s'ouvre, sélectionnez Stockage dans la liste de gauche puis
sélectionnez la ligne Vide sous Contrôleur IDE (gure 7.14).
97
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
Ubuntu se charge sous vos yeux ébahis dans la machine virtuelle (gure 7.18), et en
moins de temps qu'il n'en faut pour le dire, vous voilà sur le bureau d'Ubuntu (gure
7.19) !
À partir de là, vous pouvez tester Ubuntu et l'installer sans aucun risque.
Je vous invite donc à l'installer : tout se fera dans le disque virtuel (celui que nous
avons créé tout à l'heure, qui est en fait un gros chier sur votre disque dur). Vous
verrez d'ailleurs à l'installation que vous disposez d'un disque dur de 8 Go, sous réserve
que vous ayez déni un disque virtuel de cette taille.
Vous pouvez utiliser Ubuntu comme s'il était véritablement installé sur votre ordina-
teur ! Les performances sont légèrement moindres (car Windows tourne toujours en
arrière-plan), mais cela est négligeable aujourd'hui, à moins que vous n'utilisiez des
applications gourmandes comme les jeux.
Un des gros avantages de la machine virtuelle est qu'il est possible d'en-
registrer son état à n'importe quel moment. C'est une sorte de sauvegarde
instantanée. Pour y accéder, allez dans le menu Machine → Prendre un
instantané. Vous pourrez par la suite revenir au moment exact de la sau-
vegarde.
Vous pouvez, si vous le désirez, acher Ubuntu en plein écran. Il sut d'eectuer
la combinaison de touches Ctrl Droite + F (vous pouvez aussi aller dans le menu
Machine → Passer en plein écran). Malheureusement, comme vous allez le consta-
ter, Ubuntu n'occupe pas tout votre écran. Pour y remédier, il va falloir installer les
99
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
100
INSTALLATION DES ADDITIONS INVITÉ
additions invité. . .
101
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
102
INSTALLATION DES ADDITIONS INVITÉ
Vous devrez à nouveau indiquer votre mot de passe par mesure de sécurité. Une console
s'ouvre et les additions s'installent dans Ubuntu. Patientez jusqu'à ce que l'on vous
demande d'appuyer sur Entrée ( Return en anglais) pour fermer la fenêtre (gure
7.23).
Figure 7.23 Les additions sont installées ! Il faut alors appuyer sur Entrée et redé-
marrer.
Les additions sont installées ! Pour qu'elles soient prises en compte, vous devrez ensuite
redémarrer Ubuntu.
Vous pouvez maintenant partager un dossier entre Windows et Ubuntu :
rendez-vous dans le menu Périphériques → Dossiers partagés. Vous
pourrez y indiquer un dossier existant de Windows et le nom du dossier équi-
valent dans Ubuntu.
En résumé
VirtualBox est un outil qui permet de faire tourner un ordinateur virtuel au sein
d'un système d'exploitation.
Nous utilisons ici VirtualBox pour installer Linux à l'intérieur de Windows. Il n'y a
aucun risque de conit entre les deux car la machine virtuelle est cloisonnée.
Vous pouvez utiliser la machine virtuelle comme un véritable ordinateur mais vous
perdez légèrement en performances. Cette technique est à réserver à ceux qui sou-
haitent ne prendre aucun risque lors de l'installation d'Ubuntu ou qui désirent sim-
plement essayer la distribution.
Une fois Ubuntu installé dans la machine virtuelle, il est conseillé d'installer les
additions invité. Cela améliorera les performances et vous permettra notamment
d'utiliser Ubuntu en plein écran, de partager des dossiers et le presse-papier, etc.
103
CHAPITRE 7. INSTALLEZ LINUX DANS UNE MACHINE VIRTUELLE
104
Deuxième partie
Manipuler la console et les
chiers
105
Chapitre 8
La console, ça se mange ?
Diculté :
T out au long de la première partie du livre, nous avons passé notre temps à découvrir en
douceur Linux, son bureau et son interface graphique. Par rapport à d'autres systèmes
d'exploitation comme Windows, c'est un peu dépaysant au début, mais mine de rien,
on retrouve beaucoup de concepts similaires. Je pense donc que vous n'aurez plus besoin
de moi pour être capables de manipuler correctement l'interface graphique.
Les choses intéressantes commencent maintenant. C'est à partir d'ici qu'un utilisateur
classique de Windows met les pieds dans un environnement totalement nouveau. Vous
ne pouvez pas avoir d'a priori, et il y a de fortes chances que ce soit un domaine de
l'informatique que vous n'ayez jamais approché (non, non, DOS ne compte pas).
Vous n'avez pas idée de la richesse quasi-innie oerte par la console. Personne ne peut
d'ailleurs prétendre la maîtriser entièrement, c'est vous dire ! Vous aurez donc toujours
quelque chose à découvrir. :-)
107
CHAPITRE 8. LA CONSOLE, ÇA SE MANGE ?
Que nenni ! Il y a une explication à tout ; voici une réponse point par point.
108
POURQUOI AVOIR INVENTÉ LA CONSOLE ?
109
CHAPITRE 8. LA CONSOLE, ÇA SE MANGE ?
ls -l | grep jpg | wc -l
510
La première ligne est la commande que j'ai tapée, la seconde le résultat. Il y avait donc
510 images JPEG dans le dossier, et on a obtenu le résultat en moins d'une seconde !
On peut même faire encore plus fort et enregistrer directement ce nombre dans un
chier texte :
ls -l | grep jpg | wc -l > nb_jpg.txt
. . . et on peut aussi envoyer le chier nb_jpg.txt sur Internet par FTP ou à un ami
par e-mail, le tout en une ligne ! La console n'est donc pas morte et n'a pas du tout
prévu de l'être !
La plupart des commandes de la console de Linux sont des copies d'Unix, ce vieil
OS dont je vous ai parlé au tout début, ancêtre parmi les ancêtres. N'allez pas croire
que les programmes d'Unix ont été copiés ou piratés par Linux ; c'est juste que leur
mode d'emploi est le même. Les programmes ont été réécrits par un groupement de
programmeurs issus de ce qu'on appelle le projet GNU. Ce projet a fusionné au bout
de quelque temps avec le c÷ur du système d'exploitation Linux pour donner au nal
GNU/Linux, qu'on écrit en pratique juste Linux car c'est plus court. Mais tout ça,
je vous l'ai déjà dit dans le premier chapitre.
L'avantage ? Les commandes n'ont pas bougé et ne bougent pas depuis l'époque d'Unix
(soit depuis les années 60). Ce sont les mêmes. Quelqu'un qui utilisait Unix dans les
années 60 est capable de se débrouiller avec un Linux d'aujourd'hui. Et il y a fort à
parier que ce sera pareil pour les nombreuses années à venir. Vous avez donc juste
à apprendre à vous en servir une fois. O.K., il y aura du boulot, mais après ce sera
quelque chose qui pourra vous servir toute votre vie !
Ce que vous apprendrez dans les chapitres suivants sera l'utilisation de com-
mandes de type Unix. L'avantage, c'est que ça ne marchera pas seulement
sous Linux mais aussi sous tous les OS également basés sur Unix ! En eet, à
quelques exceptions près, tout ce que vous verrez pourra donc être fait sous
les OS basés sur Unix, en particulier Mac OS X. Si vous avez Mac OS X et
que vous souhaitez ouvrir une console, faites Pomme + Shift + U pour ou-
vrir les Utilitaires, et sélectionnez Terminal comme le montre la capture
d'écran de la gure 8.2.
110
LA CONSOLE, LA VRAIE, CELLE QUI FAIT PEUR
Les moyens sont variés, très variés. Il y a donc le choix, un peu comme partout sous
Linux me direz-vous.
Nous allons commencer par la solution la plus basique et que vous utiliserez pro-
bablement le moins souvent. Elle vous permet d'accéder à la vraie console (si tant est
qu'il y ait une vraie console) en pressant une combinaison de touches.
Lisez bien tous les paragraphes qui suivent avant d'exécuter les commandes
que je vais vous donner. Ce n'est pas dangereux rassurez-vous, mais c'est
juste que si vous vous retrouvez en console avant d'avoir lu comment en
sortir, vous aurez l'air bien embêtés. ;-)
Je vais supposer que vous vous êtes connectés, c'est-à-dire que vous avez entré votre
login et votre mot de passe. Vous êtes donc sur votre gestionnaire de bureau, ici Gnome
(gure 8.3).
Vous trouvez qu'il y a trop de couleurs ? Que ça manque de mots compliqués ? Pas de
problème ! Voici les raccourcis à connaître pour accéder à la console :
Ctrl + Alt + F1 : terminal 1 (tty1) ;
Ctrl + Alt + F2 : terminal 2 (tty2) ;
Ctrl + Alt + F3 : terminal 3 (tty3) ;
Ctrl + Alt + F4 : terminal 4 (tty4) ;
Ctrl + Alt + F5 : terminal 5 (tty5) ;
Ctrl + Alt + F6 : terminal 6 (tty6) ;
Ctrl + Alt + F7 : retour au mode graphique (ouf !).
111
CHAPITRE 8. LA CONSOLE, ÇA SE MANGE ?
Attention : pensez bien, si vous testez, que vous serez alors en mode console.
Vous devrez donc utiliser Ctrl + Alt + F7 pour revenir en mode graphique.
N'oubliez pas !
Pour tester, tapez Ctrl + Alt + F1. Votre écran va peut-être clignoter quelques ins-
tants ; ne paniquez pas. Vous allez ensuite entrer en mode console plein écran (gure
8.4).
112
LA CONSOLE, LA VRAIE, CELLE QUI FAIT PEUR
Le login
Vous ne pouvez pas utiliser tout de suite la console : il faut d'abord vous logger. C'est
ce que vous demande la dernière ligne :
mateo21-desktop login:
mateo21-desktop : c'est le nom que vous avez donné à votre ordinateur lors de l'instal-
lation. Votre ordinateur se présente et vous rappelle où vous êtes, en quelque sorte. Ça
a l'air inutile comme ça, mais avec Linux on peut se connecter à un autre PC facilement
en console (on en parlera plus loin), et parfois on ne sait plus si on est dans la console
de son PC ou dans celle d'un autre.
Bon, entrez votre login ; dans mon cas c'est mateo21.
On vous demande ensuite votre mot de passe :
Password:
Là, vous rentrez votre mot de passe. Dans mon cas c'est ooops euh. . . j'ai rien dit.
Ne soyez pas étonnés si les lettres que vous tapez n'apparaissent pas. En fait, il n'y
a même pas d'étoiles qui s'achent à l'écran. Cela permet d'éviter qu'une personne
derrière vous compte le nombre de caractères de votre mot de passe 3 .
Si tout va bien, vous devriez voir l'écran de la gure 8.5.
113
CHAPITRE 8. LA CONSOLE, ÇA SE MANGE ?
mateo21@mateo21-desktop:~$ _
Sous toute machine Linux, il y a donc non pas une mais six consoles qui fonctionnent en
simultané (d'où les six raccourcis diérents de Ctrl + Alt + F1 à Ctrl + Alt + F6).
Vous pouvez savoir dans quel terminal vous êtes lors du chargement : il est en eet
marqué tty1 si vous êtes sur le terminal no 1. Regardez de plus près mon image
(gure 8.6).
L'information est un peu cachée mais elle est là. Au pire, vous changez de terminal
jusqu'à retrouver celui sur lequel vous êtes ; dès que vous en avez marre, vous pouvez
retourner au mode graphique avec Ctrl + Alt + F7.
114
LA CONSOLE EN MODE GRAPHIQUE
Sous KDE
Pour KDE, il faut se rendre dans le menu K / Système / Konsole. La console de
KDE est visible sur la gure 9.1.
Vous pouvez vous amuser à changer la couleur de fond ou à insérer une image à la
115
CHAPITRE 8. LA CONSOLE, ÇA SE MANGE ?
place : vous trouverez ça quelque part dans les menus. Personnellement, je suis adepte
de la console en blanc sur fond noir, le plus sobre et le plus agréable pour une utilisation
hmmm. . . prolongée.
Sous Gnome
Si vous êtes sous Gnome, rendez-vous dans Applications / Accessoires / Terminal.
Voyez la console de Gnome sur la gure 8.8.
Vous noterez que les deux types de console permettent d'ouvrir plusieurs
onglets. Pour celle de KDE, il y a une petite icône en bas à gauche, et pour
celle de Gnome il y a le menu Fichier / Ouvrir un onglet. Les onglets
sont en général très pratiques car ils permettent de multiplier les consoles et
donc de faire plusieurs choses en même temps.
116
L'ACCÈS À DISTANCE EN SSH AVEC PUTTY
Une des grosses forces de la console, c'est d'être accessible à distance par Internet. Il
sut que votre machine soit connectée au réseau pour que vous puissiez vous logger
de n'importe quel ordinateur dans le monde et faire comme si vous étiez chez vous ! Ça
peut être pratique pour une foule de choses, comme surveiller l'état d'un téléchargement
un peu long, lancer l'exécution d'un programme pour qu'il soit prêt lorsque vous serez
rentrés chez vous. . . mais surtout, c'est comme ça que l'on administre un serveur sous
Linux.
Un serveur est pour faire simple un ordinateur tout le temps connecté à Internet.
Il permet d'orir des services divers et variés aux internautes. Par exemple, il y a des
serveurs web dont le rôle est de. . . distribuer des pages web. La grande majorité des
serveurs tourne sous Linux. Lorsque vous allez sur un site, il y a de très fortes chances
pour que ce soit un serveur Linux qui vous réponde. Les serveurs Windows existent
aussi, mais ils sont plus rares et on apprécie en général la stabilité de Linux ainsi que
la possibilité de l'administrer à distance en ligne de commande.
On aura l'occasion de reparler de serveurs Linux plus tard (c'est un vaste sujet), mais je
souhaite déjà vous montrer rapidement comment on fait pour se connecter à distance.
Telnet et SSH
Pour communiquer entre votre ordinateur et le serveur, il faut un protocole. C'est un
ensemble de règles pour que deux ordinateurs puissent discuter entre eux. . . un peu
comme si deux personnes devaient parler la même langue pour avoir une conversation.
117
CHAPITRE 8. LA CONSOLE, ÇA SE MANGE ?
Il existe des tonnes et des tonnes de protocoles pour communiquer par Internet, mais
pour ce qui est d'accéder à la ligne de commande à distance, c'est-à-dire à la console,
il y en a deux principaux.
Telnet : le protocole le plus basique, qui présente le gros défaut de ne pas crypter les
données échangées entre vous et le serveur. Si un pirate écoute vos échanges par
un moyen ou un autre, il pourrait récupérer des informations sensibles, en particulier
votre mot de passe lorsque vous l'envoyez à la connexion. Ce moyen de connexion
reste utilisé mais peu par rapport à SSH.
SSH : c'est de très loin le protocole le plus utilisé (et que l'on préfère) car il permet
de crypter les données et de sécuriser ainsi la connexion avec le serveur.
Vous l'aurez compris, vous entendrez donc davantage parler de SSH que d'autre chose.
PuTTY
Pour accéder à distance à un ordinateur sous Linux connecté à Internet, vous avez
besoin d'un programme spécial capable de restituer la ligne de commande à distance.
Ce qui est bien, c'est que vous n'avez pas forcément besoin d'être sous Linux pour
vous connecter à un autre ordinateur utilisant cet OS ; on peut très bien le faire depuis
Windows, et c'est d'ailleurs la procédure que je vais vous montrer ici.
Il existe plusieurs programmes capables de se connecter en SSH à un serveur Linux. Le
plus célèbre sous Windows est sûrement PuTTY : il est gratuit, léger et ne nécessite
même pas d'installation (juste un exécutable à lancer).
B
Télécharger PuTTY
Code web : 396111
Pour le télécharger, allez sur le site web du logiciel grâce au code web ci-dessus. Rendez-
vous sur la page Download et cliquez sur putty.exe .
Lorsque vous le lancez, la fenêtre de conguration s'ache (gure 8.9).
Il y a beaucoup de pages d'options, comme le montre la section à gauche de la fenêtre.
Dans la majeure partie des cas, vous n'aurez pas besoin d'y aller, heureusement. Seule
la première page est en fait vraiment importante : vous devez indiquer en haut dans le
champ Host Name le nom d'hôte du serveur (dans mon cas bart.siteduzero.com) ou
encore l'adresse IP de l'ordinateur, ce qui marche aussi bien (c'est juste plus dicile
à retenir). Vériez que le type de connexion sélectionné en dessous est bien SSH, puis
cliquez sur le bouton Open tout en bas.
Après avoir cliqué sur Open, une fenêtre vous demandera lors de la première connexion
au serveur si vous voulez stocker l'empreinte de ce dernier. C'est une sécurité pour
vérier que le serveur n'a pas changé depuis la dernière connexion et donc pour éviter
118
L'ACCÈS À DISTANCE EN SSH AVEC PUTTY
que quelqu'un se fasse passer pour le serveur auquel vous avez l'habitude de vous
connecter (le monde des pirates est sans pitié !). Par la suite, on ne vous embêtera
normalement plus jamais avec cette fenêtre.
La fenêtre principale de PuTTY s'ache alors (gure 8.10).
Voilà, vous n'avez plus qu'à vous connecter. Indiquez votre login (par exemple mateo21),
puis tapez Entrée. On vous demande ensuite votre mot de passe ; tapez-le puis faites
Entrée.
Encore une fois, il est normal de ne pas voir d'étoiles lorsque vous tapez votre
mot de passe. C'est une sécurité supplémentaire pour éviter que quelqu'un
derrière vous ne compte le nombre de caractères. Soyez donc rassurés, le
serveur reçoit bien votre mot de passe. Tapez-le comme si de rien n'était.
Si le login et le mot de passe sont bons, vous avez accès à la console du serveur sous
Linux comme si vous étiez devant (gure 8.11) !
Ne soyez pas surpris par tous les caractères que vous voyez sur ma capture
d'écran. On a juste personnalisé le message de bienvenue du serveur Bart
du Site du Zéro pour qu'il ache la tête de Bart en lettres à la connexion. ;-)
Changer le message de bienvenue se fait facilement mais n'est en général pas
très utile.
Dans l'immédiat, vous ne devriez pas avoir à vous connecter à votre ordinateur à
distance en utilisant SSH. Tout ce qu'on va faire sera plutôt eectué en local, c'est-à-
dire directement sur votre machine. On utilisera la méthode décrite plus haut, à savoir
la console en mode graphique.
Au moins, vous savez désormais qu'il est aussi possible de communiquer à distance.
Nous reparlerons plus en détails du protocole SSH plus loin dans ce livre, lorsque nous
nous intéresserons à l'administration de serveurs.
120
L'ACCÈS À DISTANCE EN SSH AVEC PUTTY
En résumé
Bien que rebutante au premier abord, la console nous ore une puissance importante.
Elle nous permet d'exécuter des actions simples comme complexes, qui sont parfois
impossibles à réaliser avec une interface graphique.
On peut lancer une console en plein écran avec les touches Ctrl + Alt + F1 à F6,
mais il est plus simple aujourd'hui d'ouvrir une console via une interface graphique
à l'aide du programme Terminal (sous Gnome) ou Konsole (sous KDE).
On peut se connecter en console à distance à son ordinateur sous Linux grâce au
protocole SSH. Cette technique est très fréquemment utilisée pour administrer des
serveurs sur Internet équipés de Linux.
121
CHAPITRE 8. LA CONSOLE, ÇA SE MANGE ?
122
Chapitre 9
Entrer une commande
Diculté :
C hers amis, le grand jour est enn arrivé ! Vous allez rentrer votre première commande
en console ! Ça va, pas trop stressés ?
Je vous rassure, nous allons commencer par des choses très simples pour nous familiariser
avec la console. Nous allons vraiment voir le B.A.-BA, le guide de survie élémentaire en
quelque sorte.
123
CHAPITRE 9. ENTRER UNE COMMANDE
L'invite de commandes
Je suppose à partir de maintenant que vous avez ouvert une console. Si vous ne savez
pas faire, c'est que vous n'avez pas lu le chapitre précédent. Le mieux, comme je vous
l'ai dit, est d'ouvrir une console dans le mode graphique. Le programme Konsole sous
KDE ou Terminal sous Gnome fera donc très bien l'aaire (gure 9.1).
mateo21@mateo21-desktop:~$
Ça, c'est ce que vous voyez à l'écran. Vous n'avez encore rien écrit, mais l'ordinateur
vous dit bonjour à sa manière 1 .
Ce que vous voyez là est ce qu'on appelle l'invite de commandes. C'est un message
qui vous invite à rentrer une commande en vous donnant par la même occasion une
foule d'informations. Cette invite s'ache avant chaque commande que vous tapez.
Bien : décortiquons cette invite de commandes parce qu'elle est très intéressante.
mateo21 : le premier élément est votre pseudonyme. C'est le pseudo sous lequel vous
vous êtes loggés. En eet, rappelez-vous : on peut créer plusieurs comptes utilisa-
teurs sous Linux. Il est en général conseillé d'en générer un par personne susceptible
d'utiliser l'ordinateur (un pour chaque membre de la famille, par exemple). Nous
verrons plus tard comment rajouter des comptes utilisateurs.
1. Bon, O.K., j'avoue que c'est une façon très spéciale de dire bonjour.
124
L'INVITE DE COMMANDES
Comme un peu tout sous Linux, l'invite de commandes est totalement para-
métrable. Vous pouvez la raccourcir si vous trouvez qu'elle est trop longue,
ou la rallonger si vous trouvez qu'elle ne donne pas assez d'informations.
Vous pouvez en théorie mettre vraiment tout ce que vous voulez dans l'in-
vite, comme par exemple l'heure actuelle (par contre, pour la température
extérieure il faudra repasser). Nous verrons comment changer cela lorsque
vous aurez appris à vous servir d'un éditeur de texte !
125
CHAPITRE 9. ENTRER UNE COMMANDE
Commandes et paramètres
On travaille dans la console en tapant ce qu'on appelle des commandes. Ces dernières
étant nombreuses, vous ne pourrez jamais toutes les connaître. . . et ce n'est pas le
but : le but, c'est que vous sachiez vous servir par c÷ur de la plupart des commandes
courantes et, pour les moins courantes, que vous soyez capables d'apprendre à vous
en servir en lisant leur manuel d'utilisation.
Le manuel d'utilisation est la véritable bible de tous les linuxiens. Vous verrez
rapidement qu'ils ne jurent que par ça. Pourquoi ? Parce que c'est tout simplement un
outil de référence, là où l'on peut trouver la réponse à TOUTES ses questions pour
peu qu'on sache lire le manuel et qu'on prenne la peine de le faire. Un chapitre entier
du livre vous apprendra à lire le manuel : c'est vraiment très important.
Pour information, il est courant de voir un linuxien dire RTFM aux dé-
butants qui posent des questions qu'il estime simples . RTFM est l'abré-
viation de Read the fucking manual ! , ce qui veut dire grosso modo Lis
le p*** de manuel ! . Ce n'est pas vraiment une insulte en fait, mais plutôt
une sorte de. . . soupir d'exaspération. Pour éviter qu'on vous dise ça un jour,
je vous conseille donc de bien ouvrir vos oreilles quand je vous expliquerai
comment utiliser le manuel. ;-)
mateo21@mateo21-desktop:~$ date
lundi 20 septembre 2010, 15:39:51 (UTC+0200)
La première ligne contient l'invite de commandes suivie de la commande que j'ai tapée.
La seconde ligne est la réponse de l'ordinateur à cette commande.
Je suppose que vous avez deviné comme des grands ce que l'on vient de faire : on a
demandé quelles étaient la date et l'heure !
Vous en voulez encore ? O.K., alors essayons une toute autre commande : tapez ls. C'est
l'abréviation de list , qui signie lister les chiers et dossiers du répertoire
actuel .
mateo21@mateo21-desktop:~$ ls
Desktop Examples Images
Cela signie que le répertoire actuel est constitué de trois dossiers : Desktop, Examples
et Images. En général, le système colore les éléments pour que l'on puisse distinguer
126
COMMANDES ET PARAMÈTRES
facilement les dossiers des chiers. Si vous n'avez aucune réponse, c'est que vous êtes
dans un dossier qui ne contient ni chier ni dossier.
Voilà, c'est aussi simple que cela. Une commande est constituée d'un mot et ne contient
aucun espace. Dans des cas très simples comme ceux que l'on vient de voir, il sut
juste de taper la commande pour avoir une réponse ; mais dans la quasi-totalité des cas
on peut (et parfois on DOIT) rentrer des options, qu'on appelle paramètres.
Les paramètres
Les paramètres sont des options que l'on écrit à la suite de la commande. La commande
et les paramètres sont séparés par un espace, comme ceci :
Les paramètres peuvent eux-mêmes contenir des espaces, des lettres, des chires. . . un
peu de tout, en fait. Il n'y a pas de règle véritable sur la forme des paramètres, mais
heureusement les programmeurs ont adopté une sorte de convention pour que l'on
puisse reconnaître les diérents types de paramètres.
commande -d
commande -d -a -U -h
commande -daUh
127
CHAPITRE 9. ENTRER UNE COMMANDE
mateo21@mateo21-desktop:~$ ls -a
. .gconfd .mozilla-thunderbird
.. .gimp-2.2 .nautilus
.bash_history .gksu.lock .profile
.bash_logout .gnome .recently-used
.bashrc .gnome2 .recently-used.xbel
.config .gnome2_private .ssh
Desktop .gstreamer-0.10 .sudo_as_admin_successful
.dmrc .gtkrc-1.2-gnome2 .themes
.esd_auth .ICEauthority .thumbnails
.evolution .icons .Trash
Examples .lesshst tutos
.face .local .update-manager-core
.fontconfig .macromedia .update-notifier
.gaim .metacity .Xauthority
.gconf .mozilla .xsession-errors
Cela ache tout le contenu du dossier, même les chiers cachés. Un chier caché
sous Linux est un chier qui commence par un point. Normalement, si vous vous trouvez
dans votre répertoire home, vous devriez avoir une bonne opée de chiers cachés. Ce
sont en général des chiers de conguration de programmes.
commande --parametre
Cette fois, pas le choix : si vous voulez mettre plusieurs paramètres longs, il faudra
ajouter un espace entre chacun d'eux :
On peut aussi combiner les paramètres longs et les paramètres courts dans une com-
mande :
128
COMMANDES ET PARAMÈTRES
Testons cela sur la commande ls avec le paramètre --all, qui signie tout en
anglais :
mateo21@mateo21-desktop:~$ ls --all
. .gconfd .mozilla-thunderbird
.. .gimp-2.2 .nautilus
.bash_history .gksu.lock .profile
.bash_logout .gnome .recently-used
.bashrc .gnome2 .recently-used.xbel
.config .gnome2_private .ssh
Desktop .gstreamer-0.10 .sudo_as_admin_successful
.dmrc .gtkrc-1.2-gnome2 .themes
.esd_auth .ICEauthority .thumbnails
.evolution .icons .Trash
Examples .lesshst tutos
.face .local .update-manager-core
.fontconfig .macromedia .update-notifier
.gaim .metacity .Xauthority
.gconf .mozilla .xsession-errors
Comme vous le voyez, --all est un synonyme de -a. Ceci illustre ce que je vous
disais à l'instant, comme quoi parfois une commande propose deux façons d'utiliser un
paramètre : une courte et une longue.
commande -p 14
. . . cela indique que l'on associe la valeur 14 au paramètre p. Avec ce genre de technique,
on peut par exemple faire comprendre à l'ordinateur : Je veux voir la liste de
tous les chiers de plus de 14 Mo .
Si c'est un paramètre long, on fait en général comme ceci :
commande --parametre=14
Le résultat sera le même, il est juste plus lisible mais aussi plus long à écrire.
129
CHAPITRE 9. ENTRER UNE COMMANDE
mateo21@mateo21-desktop:~$ ls Examples
Experience ubuntu.ogg logo-Ubuntu.png oo-payment-schedule.ods
fables_01_01_aesop.spx oo-about-these-files.odt oo-presenting-kubuntu.odp
gimp-ubuntu-splash.xcf oo-about-ubuntu-ru.rtf oo-presenting-ubuntu.odp
kubuntu-leaflet.png oo-cd-cover.odg oo-trig.xls
logo-Edubuntu.png oo-derivatives.doc oo-welcome.odt
logo-Kubuntu.png oo-maxwell.odt ubuntu Sax.ogg
Autocomplétion de commande
Le premier truc à connaître, c'est l'autocomplétion de commande. Prenons la
commande date par exemple : vous êtes un peu tête en l'air et vous ne savez plus
comment elle s'écrit. Par contre, vous êtes sûrs des premières lettres de la commande.
mateo21@mateo21-desktop:~$ da
dash date
mateo21@mateo21-desktop:~$ da
En tapant deux fois sur Tabulation, vous avez demandé à l'ordinateur la liste des
commandes qui commencent par da . On vous a répondu dash et date . Il y
130
RETROUVER UNE COMMANDE
a donc deux commandes qui commencent par da , et vous venez de retrouver celle
que vous cherchiez, c'est-à-dire date .
Bien sympathique, l'ordinateur a réécrit l'invite de commandes en dessous ainsi que le
début de la commande que vous aviez tapée. Vous n'avez plus qu'à compléter avec les
lettres te qui manquent et à taper Entrée, et ce sera bon. :-)
L'autocomplétion
Plus sympa encore, s'il n'y a qu'un seul résultat correspondant à votre recherche,
l'ordinateur complètera avec les lettres qui manquent et vous n'aurez plus qu'à taper sur
Entrée ! Par exemple, il n'y a qu'une commande qui commence par dat . Tapez donc
dat dans la console, puis appuyez une seule fois sur Tabulation. La commande se
complète comme par magie.
Trop de commaaaandes !
Parfois, il y a trop de commandes correspondant à votre recherche. Faites un essai un
peu brutal : ne rentrez aucun début de commande et faites deux fois Tab (Tabulation).
Cela demande de faire la liste de toutes les commandes disponibles sur votre ordinateur.
mateo21@mateo21-desktop:~$
Display all 2173 possibilities? (y or n)
Sauvage, n'est-ce pas ? Il y a 2 173 commandes disponibles sur mon ordinateur. Plus
j'installerai de programmes, plus j'aurai de commandes utilisables. N'espérez donc pas
toutes les connaître, de nouveaux programmes sortent tous les jours.
À cette question, vous pouvez répondre y (yes ) et la liste s'achera page par page.
Quelques raccourcis à connaître quand une liste s'ache page par page :
tapez Espace pour passer à la page suivante ;
tapez Entrée pour aller à la ligne suivante ;
tapez q pour arrêter la liste.
Si vous répondez n (no ), il ne se passera rien ; c'est dans le cas où vous vous diriez
Ouh là, 2 173 possibilités : autant chercher une aiguille dans une botte de foin. . . je
vais peut-être aner ma recherche .
131
CHAPITRE 9. ENTRER UNE COMMANDE
Ce raccourci vaut de l'or : appuyez sur la èche directionnelle Haut (gure 9.2) ; vous
verrez apparaître la dernière commande que vous avez tapée. Si vous appuyez de nou-
veau sur la èche directionnelle Haut, vous verrez l'avant-dernière commande, puis
l'avant-avant-dernière, etc.
152 date
153 ls
154 ls -a
155 ls --all
156 history
La dernière commande tapée sera toujours history, forcément. Vous remarquerez que
les commandes sont numérotées : ainsi, on peut savoir que date est la 152e commande
que j'ai tapée dans le terminal.
132
QUELQUES RACCOURCIS CLAVIER PRATIQUES
Là, vous pouvez taper n'importe quelle suite de lettres correspondant à une vieille com-
mande. Par exemple, faites Ctrl + R puis tapez all . Linux retrouve la commande
ls --all qui contenait justement le mot all . Vous n'avez plus qu'à taper Entrée
pour relancer la commande ! :-)
(reverse-i-search)`all': ls --all
Si ce n'est pas la commande que vous cherchiez, appuyez à nouveau sur Ctrl + R pour
remonter dans la liste des commandes contenant all .
Ça a peut-être l'air bête sur une commande comme ça, mais certaines sont vraiment
très longues et c'est un vrai bonheur de ne pas avoir à les réécrire en entier !
133
CHAPITRE 9. ENTRER UNE COMMANDE
En résumé
La console ache une invite de commandes au début de la ligne. Cette invite rappelle
votre nom d'utilisateur, le nom de la machine ainsi que le dossier dans lequel vous
vous trouvez.
On rentre des commandes dans la console pour demander à l'ordinateur d'exécuter
des actions.
Chaque commande peut être complétée de paramètres qui agissent comme des
options pour modier l'action de la commande.
Les paramètres sont généralement constitués d'une lettre précédée d'un tiret (-a) ou
de plusieurs lettres précédées de deux tirets (all).
Après avoir saisi les premières lettres d'une commande, on peut compléter son nom
à l'aide de la touche Tabulation.
On peut retrouver les commandes précédentes à l'aide des èches directionnelles Haut
et Bas ou encore eectuer une recherche parmi les commandes précédentes avec Ctrl
+ R.
Il existe de nombreux autres raccourcis clavier qu'il est recommandé de connaître
pour pouvoir proter pleinement de la console.
134
Chapitre 10
La structure des dossiers et chiers
Diculté :
A hhh, les chiers sous Linux, tout un programme. Vous croyez savoir ce que sont les
chiers et dossiers ? Vous croyez que votre disque dur s'appelle C: ? Que le lecteur CD
c'est D: ou peut-être E: ?
Les choses ne fonctionnent pas du tout de la même manière sous Linux et sous Windows.
Or, savoir comment se déplacer de dossier en dossier et savoir lister les chiers, c'est quand
même sacrément important ! C'est pour cela que nous allons voir ensemble le fonctionne-
ment des chiers sous Linux dès maintenant.
135
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
Mais comment on fait pour savoir si le dossier dans lequel on est appartient au
premier disque dur, au second disque dur, au lecteur CD. . . ? C'est le bazar,
non ?
C'est ce qu'on pourrait croire au premier abord, mais en fait c'est juste une autre façon
de penser la chose. ;-)
La racine
Dans un système de chiers, il y a toujours ce qu'on appelle une racine, c'est-à-dire un
gros dossier de base qui contient tous les autres dossiers et chiers .
Sous Windows, il y a en fait plusieurs racines. C:\ est la racine de votre disque dur,
D:\ est la racine de votre lecteur CD (par exemple). Sous Linux, il n'y a qu'une et
une seule racine : / . Comme vous le voyez, il n'y a pas de lettre de lecteur car
justement, Linux ne donne pas de nom aux lecteurs comme le fait Windows. Il dit juste
La base, c'est / .
Il n'y a pas de dossier de plus haut niveau que /, c'est-à-dire qu'il n'existe pas
de dossier qui contienne le dossier /. Quand on est à la racine, on ne peut
pas remonter en arrière car. . . on est déjà tout au début.
136
ORGANISATION DES DOSSIERS
Il n'est PAS nécessaire de retenir cette liste par c÷ur. D'ailleurs je n'ai mis
que les dossiers principaux, et elle est quand même longue. Servez-vous-en
juste si vous avez besoin de savoir à quoi correspond grosso-modo tel ou tel
dossier, mais ne vous en faites pas si vous ne maîtrisez pas à fond le sens de
chacun de ces dossiers.
bin : contient des programmes (exécutables) susceptibles d'être utilisés par tous les
utilisateurs de la machine.
boot : chiers permettant le démarrage de Linux.
dev : chiers contenant les périphériques. En fait on en reparlera plus tard ce
dossier contient des sous-dossiers qui représentent chacun un périphérique. On y
retrouve ainsi par exemple le chier qui représente le lecteur CD.
1. Et l'on ne risque pas de trouver de dossier qui s'appelle Windows !
137
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
138
PWD & WHICH : OÙ. . . OÙ SUIS-JE ?
comptez donc pas sur moi pour vous faire la liste complète des dossiers et chiers que
vous possédez, ce n'est pas réaliste.
En revanche, je vais vous apprendre maintenant à vous repérer dans l'arborescence des
dossiers. Vous saurez alors à tout moment où vous êtes sur votre disque. C'est un peu
comme avoir une carte routière, en quelque sorte !
mateo21@mateo21-desktop:~$
Si vous vous souvenez bien, le nom du dossier est situé entre le : et le $ . Donc
ici, on se trouve dans le dossier ~ .
Rappel : je l'ai dit dans le chapitre précédent mais ça ne fait pas de mal de le
répéter, sous Linux le symbole ~ est un synonyme de votre dossier personnel.
Chez moi cela signie donc /home/mateo21.
Cette indication de l'invite de commandes est pratique mais il faut savoir qu'il y a un
autre moyen de connaître le nom du dossier actuel. C'est la commande pwd. pwd est
l'abréviation de Print Working Directory , c'est-à-dire Acher le dossier actuel .
C'est une commande très simple qui ne prend aucun paramètre 2 , vous pouvez la tester :
2. On commence doucement, hein !
139
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
mateo21@mateo21-desktop:~$ pwd
/home/mateo21
Cela conrme bien ce que je vous disais : je me trouve en ce moment dans le dossier
/home/mateo21 (gure 10.2).
pwd se trouve donc dans le dossier /bin/ ! Le pwd à la n n'est pas un dossier mais
le nom du programme lui-même.
140
LS : LISTER LES FICHIERS ET DOSSIERS
Vous noterez que les programmes sous Linux ne possèdent en général pas
d'extension (contrairement à Windows où l'extension utilisée est en général
.exe).
Tous les programmes ne sont pas situés dans un même dossier. Pour vous en rendre
compte, testez l'emplacement d'une autre commande. . . tenez, par exemple la com-
mande which !
On va donc devoir écrire which which dans la console 3 :
Cette fois, le programme ne se trouve pas dans /bin/ mais dans /usr/bin/ !
mateo21@mateo21-desktop:~$ ls
Desktop Examples images log tutos
Ubuntu active la coloration des chiers et dossiers par défaut, vous devriez donc voir
des couleurs chez vous. Les dossiers apparaissent en bleu foncé. Vous remarquerez que
le dossier Examples est en bleu clair : cela signie que c'est un raccourci vers un dossier
qui se trouve en fait ailleurs sur le disque.
141
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
mateo21@mateo21-desktop:~$ ls -a
. .gnome .nano_history
.. .gnome2 .nautilus
.armagetron .gnome2_private .openoffice.org2
.bash_history .gnome_private .pgadmin3
.bash_logout .gstreamer-0.10 .pgpass
.bashrc .gtkrc-1.2-gnome2 .profile
.blender .gweled .qt
.config .ICEauthority .recently-used
.DCOPserver_mateo21-desktop__0 .icons .recently-used.xbel
.DCOPserver_mateo21-desktop_:0 images .ssh
Desktop .inkscape .sudo_as_admin_success
.dmrc .java .themes
.emilia .jedit .thumbnails
.esd_auth .kde .Trash
.evolution .lesshst .tsclient
Examples .lgames tutos
.face .local .update-manager-core
.fontconfig log .update-notifier
.gaim .macromedia .vlc
.gconf .mcop .wormux
.gconfd .mcoprc .Xauthority
.geany .metacity .xine
.gimp-2.2 .mozilla .xsession-errors
.gksu.lock .mozilla-thunderbird
Vous comprenez peut-être mieux maintenant pourquoi tous ces chiers et dossiers sont
cachés : c'est encombrant. Certains éléments commençant par un point . sont des
dossiers, d'autres sont des chiers. La meilleure façon de faire la distinction est de
comparer les couleurs : les dossiers en bleu, le reste dans la couleur par défaut (par
exemple, le blanc ou le noir).
Les deux premiers éléments sont assez intrigants : . et .. . Le premier représente
en fait le dossier actuel, et .. représente le dossier parent, c'est-à-dire le dossier
précédent dans l'arborescence. Par exemple, là je suis dans /home/mateo21, ..
représente donc le dossier /home.
142
LS : LISTER LES FICHIERS ET DOSSIERS
mateo21@mateo21-desktop:~$ ls -F
Desktop/ Examples@ images/ log/ tutos/
Grâce à ça on peut voir que tous les éléments sont des dossiers, sauf Examples qui est
un raccourci (d'où la présence du @).
-l : liste détaillée
Le paramètre -l (la lettre L en minuscule) est un des plus utiles. Il ache une liste
détaillant chaque élément du dossier :
mateo21@mateo21-desktop:~$ ls -l
total 16
drwxr-xr-x 2 mateo21 mateo21 4096 2007-09-24 17:22 Desktop
lrwxrwxrwx 1 mateo21 mateo21 26 2007-09-19 18:31 Examples
,→ -> /usr/share/example-content
drwxr-xr-x 2 mateo21 mateo21 4096 2007-09-25 15:17 images
drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-25 11:11 log
drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-19 19:51 tutos
Vous noterez aussi que dans le cas du raccourci (on parle de lien symbo-
lique), la commande nous précise vers où pointe le raccourci (en l'occurrence
/usr/share/example-content).
143
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
mateo21@mateo21-desktop:~/Examples$ ls -l
total 9500
-rw-r--r-- 1 root root 3576296 2007-04-03 17:05 Experience ubuntu.ogg
-rw-r--r-- 1 root root 229674 2007-04-03 17:05 fables_01_01_aesop.spx
-rw-r--r-- 1 root root 848013 2007-04-03 17:05 gimp-ubuntu-splash.xcf
-rw-r--r-- 1 root root 1186219 2007-04-03 17:05 kubuntu-leaflet.png
-rw-r--r-- 1 root root 47584 2007-04-03 17:05 logo-Edubuntu.png
mateo21@mateo21-desktop:~/Examples$ ls -lh
total 9,3M
-rw-r--r-- 1 root root 3,5M 2007-04-03 17:05 Experience ubuntu.ogg
-rw-r--r-- 1 root root 225K 2007-04-03 17:05 fables_01_01_aesop.spx
-rw-r--r-- 1 root root 829K 2007-04-03 17:05 gimp-ubuntu-splash.xcf
-rw-r--r-- 1 root root 1,2M 2007-04-03 17:05 kubuntu-leaflet.png
-rw-r--r-- 1 root root 47K 2007-04-03 17:05 logo-Edubuntu.png
Grâce à ça, on voit alors bien que le chier Experience ubuntu.ogg fait 3,5 Mo,
logo-Edubuntu.png fait 47 Ko, etc.
mateo21@mateo21-desktop:~$ ls -lt
total 16
drwxr-xr-x 2 mateo21 mateo21 4096 2007-09-25 15:17 images
drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-25 11:11 log
drwxr-xr-x 2 mateo21 mateo21 4096 2007-09-24 17:22 Desktop
drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-19 19:51 tutos
lrwxrwxrwx 1 mateo21 mateo21 26 2007-09-19 18:31 Examples
,→ -> /usr/share/example-content
144
LS : LISTER LES FICHIERS ET DOSSIERS
De toute évidence, le dernier chier (ici, c'est un dossier) modié est images . En
revanche, comme je n'ai jamais touché à Examples , il est normal qu'il apparaisse
en dernier.
En pratique, je combine -t avec -r qui renverse l'ordre d'achage des chiers. Je
préfère en eet avoir le dernier chier modié en bas de la liste, c'est plus pratique à
l'usage dans la console. Et comme je suis un gros bourrin, je combine un peu tous les
paramètres que l'on vient de voir, ce qui donne un beau ls -larth qui contient toutes
les options que j'aime. ;-)
mateo21@mateo21-desktop:~$ ls -larth
total 380K
-rw------- 1 mateo21 mateo21 26 2007-09-19 16:40 .dmrc
-rw-r--r-- 1 mateo21 mateo21 89 2007-09-19 16:40 .gtkrc-1.2-gnome2
-rw------- 1 mateo21 mateo21 16 2007-09-19 16:40 .esd_auth
drwx------ 2 mateo21 mateo21 4,0K 2007-09-19 16:40 .update-notifier
lrwxrwxrwx 1 mateo21 mateo21 26 2007-09-19 18:31 Examples
,→ -> /usr/share/example-content
-rw-r--r-- 1 mateo21 mateo21 220 2007-09-19 18:31 .bash_logout
drwxr-xr-x 4 root root 4,0K 2007-09-19 18:31 ..
drwxr-xr-x 10 mateo21 mateo21 4,0K 2007-09-25 16:03 .jedit
-rw-r--r-- 1 mateo21 mateo21 1,1K 2007-09-25 16:03 .pgadmin3
drwxr-xr-x 47 mateo21 mateo21 4,0K 2007-09-25 16:03 .
-rw------- 1 mateo21 mateo21 1,8K 2007-09-25 16:38 .bash_history
-rw------- 1 mateo21 mateo21 17K 2007-09-25 16:52 .recently-used
drwx------ 2 mateo21 mateo21 4,0K 2007-09-25 16:54 .gconfd
-rw------- 1 mateo21 mateo21 39 2007-09-25 17:18 .lesshst
-rw-r--r-- 1 mateo21 mateo21 53K 2007-09-25 17:21 .xsession-errors
Le chier caché .xsession-errors est donc le dernier qui a été modié dans ce dossier
sur mon ordinateur.
Plutôt que d'avoir à réécrire ls -larth à chaque fois (c'est un peu long),
on peut créer un alias, c'est-à-dire une commande synonyme. Par exemple,
j'ai créé l'alias ll (deux fois L ) qui est automatiquement transformé par
Linux en ls -larth. On verra comment créer des alias lorsqu'on saura se
servir d'un éditeur de chiers.
145
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
cd : changer de dossier
Bon : mine de rien, depuis tout à l'heure on est coincé dans notre dossier home et on
aimerait bien bouger de là. Le moment est venu de déplacer le navire, moussaillon !
La commande que nous allons étudier ici s'appelle cd, abréviation de Change Direc-
tory (changer de dossier). C'est une commande très importante que vous allez utiliser
quelques milliers de fois dans votre vie (au moins).
Contrairement à ls, la commande cd ne prend pas plein de paramètres mais juste un
seul : le nom du dossier dans lequel vous souhaitez aller.
Si on veut aller à la racine, il sut de taper cd / :
mateo21@mateo21-desktop:~$ cd /
mateo21@mateo21-desktop:/$ pwd
/
mateo21@mateo21-desktop:/$ ls -F
bin/ dev/ initrd/ lib/ mnt/ root/ sys/ var/
boot/ etc/ initrd.img@ lost+found/ opt/ sbin/ tmp/ vmlinuz@
cdrom@ home/ initrd.img.old@ media/ proc/ srv/ usr/ vmlinuz.old@
mateo21@mateo21-desktop:/$ cd usr
mateo21@mateo21-desktop:/usr$ ls -F
bin/ games/ include/ lib/ local/ sbin/ share/ src/ X11R6/
Chez moi, il n'y a que des dossiers. Hummm, le dossier games m'intrigue, voyons voir
ce que j'ai comme jeux :
mateo21@mateo21-desktop:/usr$ cd games
mateo21@mateo21-desktop:/usr/games$
146
CD : CHANGER DE DOSSIER
mateo21@mateo21-desktop:/usr/games$ cd ..
mateo21@mateo21-desktop:/usr$
mateo21@mateo21-desktop:/usr/games$ cd ../..
mateo21@mateo21-desktop:/$
147
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
mateo21@mateo21-desktop:/usr$ cd games
En faisant cela, on utilise un chemin relatif, c'est-à-dire relatif au dossier actuel. Quand
on met juste le nom d'un dossier comme ici, cela indique que l'on veut aller dans un
sous-dossier.
Si on fait cd games depuis la racine, ça va planter :
mateo21@mateo21-desktop:/$ cd games
bash: cd: games: Aucun fichier ou répertoire de ce type
Je crois que le message d'erreur est assez clair : il n'y a aucun dossier games dans /.
Pour se rendre dans games, il faut d'abord indiquer le dossier qui le contient (usr) :
mateo21@mateo21-desktop:/$ cd usr/games
mateo21@mateo21-desktop:/usr/games$
mateo21@mateo21-desktop:~$ cd /usr/games
mateo21@mateo21-desktop:/usr/games$
148
CD : CHANGER DE DOSSIER
Le schéma 10.5 montre bien qu'on part de la racine / pour indiquer où on veut aller.
Si on avait voulu faire la même chose à coup de chemin relatif, il aurait fallu écrire :
mateo21@mateo21-desktop:~$ cd ../../usr/games/
mateo21@mateo21-desktop:/usr/games$
Ce qui signie reviens en arrière (donc dans /home) puis reviens en arrière
(donc dans /), puis va en avant dans usr, puis va en avant dans games .
Voyez en gure 10.6.
149
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
mateo21@mateo21-desktop:/usr/games$ cd /home/mateo21/
mateo21@mateo21-desktop:~$
La maligne : plus court et plus pratique, vous pouvez utiliser l'alias ~ qui signie
la même chose. Cela donne :
mateo21@mateo21-desktop:/usr/games$ cd ~
mateo21@mateo21-desktop:~$
mateo21@mateo21-desktop:/usr/games$ cd
mateo21@mateo21-desktop:~$
Autocomplétion du chemin
Cette astuce est vitale ; si vous ne vous en servez pas, vous passez à côté d'une des plus
importantes astuces de la console.
L'idée est simple : taper cd /usr/games/trucbidule c'est bien, mais c'est parfois un
peu long de tout écrire. On a la emme. Vous avez la emme. Oui, vous. Alors vous
allez justement demander à l'ordinateur de compléter le chemin tout seul !
L'autocomplétion de chemin fonctionne de la même manière que l'autocomplétion de
commande qu'on a vue dans le chapitre précédent : avec la touche Tab (Tabulation).
Faites le test avec moi. Commencez par vous placer dans /usr :
150
DU : TAILLE OCCUPÉE PAR LES DOSSIERS
mateo21@mateo21-desktop:~$ cd /usr
mateo21@mateo21-desktop:/usr$
Tapez ensuite juste cd ga, puis appuyez sur Tab. C'est magique, le nom du dossier a
été automatiquement complété !
mateo21@mateo21-desktop:/usr$ cd games/
Revenez maintenant dans /usr (en faisant cd .. par exemple) et essayez de taper juste
cd l, puis faites Tab. Rien ne se passe : cela signie que l'ordinateur n'a pas trouvé de
dossier qui corresponde au début de votre recherche, ou alors qu'il y en plusieurs qui
commencent par l . Faites à nouveau Tab :
mateo21@mateo21-desktop:/usr$ cd l
lib/ local/
mateo21@mateo21-desktop:/usr$ cd l
On vient de vous donner la liste des dossiers qui commencent par l ! Cela signie
qu'il faut préciser votre recherche parce que sinon, l'ordinateur ne peut pas deviner
dans quel dossier vous voulez entrer. Ça tombe bien, la commande a été réécrite en
dessous, vous n'avez plus qu'à ajouter une lettre plus précise : par exemple o pour
que Linux devine que vous voulez aller dans le dossier local. Tapez donc o , puis
à nouveau Tab, et le nom sera complété !
mateo21@mateo21-desktop:/usr$ cd local/
Faites des tests pour vous entraîner à utiliser l'autocomplétion, c'est vraiment très
important. Vous allez voir, c'est intuitif et vraiment pratique !
mateo21@mateo21-desktop:~$ cd /usr/games
mateo21@mateo21-desktop:/usr/games$ du
5732 .
151
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
mateo21@mateo21-desktop:/usr/games$ cd
mateo21@mateo21-desktop:~$ du
400 ./.Trash
4 ./.themes
32 ./.mozilla-thunderbird/8vyw6pqo.default/Mail/Local Folders
36 ./.mozilla-thunderbird/8vyw6pqo.default/Mail
12 ./.mozilla-thunderbird/8vyw6pqo.default/US
...
...
264 ./.jedit/jars
4 ./.jedit/macros
380 ./.jedit/settings-backup
856 ./.jedit
82484 .
mateo21@mateo21-desktop:~$ du -h
400K ./.Trash
4,0K ./.themes
32K ./.mozilla-thunderbird/8vyw6pqo.default/Mail/Local Folders
36K ./.mozilla-thunderbird/8vyw6pqo.default/Mail
12K ./.mozilla-thunderbird/8vyw6pqo.default/US
...
...
264K ./.jedit/jars
4,0K ./.jedit/macros
380K ./.jedit/settings-backup
856K ./.jedit
81M .
152
DU : TAILLE OCCUPÉE PAR LES DOSSIERS
Mon dossier home prend donc 81 Mo d'espace disque, son sous-dossier caché .jedit
prend 856 Ko, etc.
mateo21@mateo21-desktop:~$ du -ah
...
8,0K ./.jedit/settings-backup/abbrevs~5~
24K ./.jedit/settings-backup/history~1~
8,0K ./.jedit/settings-backup/abbrevs~4~
380K ./.jedit/settings-backup
44K ./.jedit/pluginMgr-Cached.xml.gz
856K ./.jedit
81M .
mateo21@mateo21-desktop:~$ du -sh
81M .
Je vois ainsi que mon dossier home fait 81 Mo (rappel : le symbole point . signie
le dossier actuel ).
En résumé
Sous Linux, tout est organisé sous forme de chiers. Il n'y a pas de lecteur du type
C: comme sous Windows.
Les dossiers sont imbriqués entre eux à partir du dossier parent principal /. On
l'appelle la racine.
Le dossier dans lequel les utilisateurs stockent leurs documents est /home. Si votre
login est patrick, alors votre dossier personnel sera /home/patrick.
La commande pwd permet de savoir en console dans quel dossier on se situe.
ls ache la liste des chiers présents dans le dossier actuel.
cd permet de changer de dossier.
153
CHAPITRE 10. LA STRUCTURE DES DOSSIERS ET FICHIERS
154
Chapitre 11
Manipuler les chiers
Diculté :
A près avoir vu comment étaient organisés les chiers sous Linux, nous allons apprendre
à les manipuler !
Par exemple, comment faire pour acher le contenu d'un chier ? Comment le déplacer,
le copier, le supprimer ?
C'est donc un chapitre à la fois simple et riche qui vous attend, tout au long duquel
vous allez apprendre beaucoup de nouvelles commandes basiques de Linux qu'il vous faut
connaître absolument !
155
CHAPITRE 11. MANIPULER LES FICHIERS
Mais. . . pourquoi deux commandes pour acher un chier ? Une seule n'au-
rait pas su ?
En fait, chacune a ses spécicités ! Nous allons les voir dans le détail.
Pour nos exemples, nous allons travailler sur un chier qui existe déjà : syslog. Il se
trouve dans le dossier /var/log. Commencez par vous y rendre :
mateo21@mateo21-desktop:~$ cd /var/log
Ce dossier contient plusieurs chiers de log, c'est-à-dire des chiers qui gardent une
trace de l'activité de votre ordinateur. Vous pouvez en faire la liste si vous le voulez,
en tapant ls :
mateo21@mateo21-desktop:/var/log$ ls
acpid daemon.log.0 kern.log.0 scrollkeeper.log.2
acpid.1.gz daemon.log.1.gz kern.log.1.gz syslog
acpid.2.gz daemon.log.2.gz kern.log.2.gz syslog.0
acpid.3.gz daemon.log.3.gz kern.log.3.gz syslog.1.gz
acpid.4.gz debug lastlog syslog.2.gz
apparmor debug.0 lpr.log syslog.3.gz
apport.log debug.1.gz mail.err syslog.4.gz
apport.log.1 debug.2.gz mail.info syslog.5.gz
apport.log.2.gz debug.3.gz mail.log syslog.6.gz
apport.log.3.gz dist-upgrade mail.warn udev
apport.log.4.gz dmesg messages unattended-upgrades
apport.log.5.gz dmesg.0 messages.0 user.log
apt dmesg.1.gz messages.1.gz user.log.0
auth.log dmesg.2.gz messages.2.gz user.log.1.gz
auth.log.0 dmesg.3.gz messages.3.gz user.log.2.gz
auth.log.1.gz dmesg.4.gz news user.log.3.gz
auth.log.2.gz dpkg.log popularity-contest uucp.log
auth.log.3.gz dpkg.log.1 popularity-contest.0 wtmp
bittorrent dpkg.log.2.gz popularity-contest.1.gz wtmp.1
boot faillog popularity-contest.2.gz wvdialconf.log
bootstrap.log fontconfig.log popularity-contest.3.gz Xorg.0.log
156
CAT & LESS : AFFICHER UN FICHIER
Le chier sur lequel nous allons travailler, syslog, contient des informations de log de
ce qui s'est passé récemment sur l'ensemble de votre ordinateur.
Vous noterez qu'il est fréquent de voir des chiers sans extension sous Li-
nux. Notre chier s'appelle syslog tout court, et non pas syslog.txt ou
syslog.log comme on pourrait avoir l'habitude de le voir sous Windows.
Un chier sans extension peut être ouvert et lu sans aucun problème comme
n'importe quel autre chier.
157
CHAPITRE 11. MANIPULER LES FICHIERS
,→ 'AP_SCAN 0'
Nov 14 00:45:16 mateo21-desktop NetworkManager: nm_act_request_get_ap:
,→ assertion `req != NULL' failed
Nov 14 00:45:16 mateo21-desktop NetworkManager: nm_act_request_get_stage:
,→ assertion `req != NULL' failed
Nov 14 00:45:16 mateo21-desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:45:21 mateo21-desktop NetworkManager: nm_act_request_get_ap:
,→ assertion `req != NULL' failed
Nov 14 00:45:21 mateo21-desktop NetworkManager: ap_is_auth_required:
,→ assertion `ap != NULL' failed
Nov 14 00:45:21 mateo21-desktop NetworkManager: <info> Activation
,→ (eth1/wireless): association took too long (>120s), asking for new key.
Nov 14 00:45:21 mateo21-desktop NetworkManager:
,→ nm_dbus_get_user_key_for_network assertion `req != NULL' failed
Nov 14 00:47:45 mateo21-desktop init: tty4 main process (4517) killed
,→ by TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty5 main process (4518) killed
,→ by TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty2 main process (4520) killed
,→ by TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty3 main process (4522) killed
,→ by TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty1 main process (4524) killed
,→ by TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty6 main process (4525) killed
,→ by TERM signal
Nov 14 00:47:46 mateo21-desktop avahi-daemon[5390]: Got SIGTERM, quitting.
Nov 14 00:47:48 mateo21-desktop exiting on signal 15
Nov 14 00:48:42 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.
...
Comme le chier est très gros (il fait plusieurs centaines de lignes), je n'ai pas copié tout
ce qui s'est aché dans ma console. Ne vous étonnez pas si vous voyez tout s'acher
d'un coup : c'est normal, c'est le but. La commande cat vous envoie tout le chier à
la gure. Elle est plus adaptée lorsque l'on travaille sur de petits chiers que sur des
gros, car dans un cas comme celui-là, on n'a pas le temps de lire tout ce qui s'ache à
l'écran.
Il y a peu de paramètres vraiment intéressants à utiliser avec la commande cat, car
c'est une commande somme toute très basique. On notera quand même le paramètre
-n qui permet d'acher les numéros de ligne :
158
CAT & LESS : AFFICHER UN FICHIER
...
Notez qu'il existe aussi une commande très proche : more. Pour faire simple,
la diérence entre more et less c'est que more est vieux et possède peu de
fonctionnalités, tandis que less est beaucoup plus puissant et rapide. Bref,
utilisez less, mais si vous voyez un jour quelqu'un utiliser more, ne soyez pas
surpris.
159
CHAPITRE 11. MANIPULER LES FICHIERS
Ce qui est intéressant pour nous ici, c'est que la commande less a arrêté la lecture du
chier au bout de quelques lignes (la taille d'un écran de console). Cela vous laisse le
temps de lire le début du chier.
On n'a lu pour le moment que les toutes premières lignes du chier.
La casse des caractères est importante. Ainsi, si je vous dis qu'il faut appuyer
sur la touche d , ce n'est pas un D majuscule (si vous essayez, vous
verrez que ça ne fonctionne pas). Sous Linux, on fait souvent la diérence
entre majuscules et minuscules : souvenez-vous-en !
160
CAT & LESS : AFFICHER UN FICHIER
,→ TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty3 main process (4522) killed by
,→ TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty1 main process (4524) killed by
,→ TERM signal
Nov 14 00:47:45 mateo21-desktop init: tty6 main process (4525) killed by
,→ TERM signal
Nov 14 00:47:46 mateo21-desktop avahi-daemon[5390]: Got SIGTERM, quitting.
Nov 14 00:47:48 mateo21-desktop exiting on signal 15
Nov 14 00:48:42 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:48:42 mateo21-desktop kernel:
,→ Inspecting /boot/System.map-2.6.22-14-generic
Nov 14 00:48:42 mateo21-desktop kernel: Loaded 25445 symbols from
,→ /boot/System.map-2.6.22-14-generic.
Nov 14 00:48:42 mateo21-desktop kernel: Symbols match kernel version 2.6.22.
Nov 14 00:48:42 mateo21-desktop kernel: No module symbols loaded -
,→ kernel modules not enabled.
Nov 14 00:48:42 mateo21-desktop kernel: [ 0.000000] Linux version
,→ 2.6.22-14-generic (buildd@palmer) (gcc version 4.1.3 20070929 (prerelease)
1. Je ne vais pas vous faire un cours sur les expressions régulières ici, ce serait trop long, mais il
y en a un dans mon cours sur le PHP Concevez votre site Web avec PHP et MySQL dans la même
collection.
161
CHAPITRE 11. MANIPULER LES FICHIERS
Eh oui. Et gurez-vous que celles-là aussi valent le coup d'être connues. Comme quoi
on en fait des commandes, rien que pour lire un chier !
Ces deux commandes sont un peu à l'opposé l'une de l'autre : la première permet
d'acher le début du chier, la seconde permet d'acher la n.
Si vous avez juste besoin de récupérer les premières lignes d'un chier, head est donc
la commande qu'il vous faut. Simple, net, ecace.
Comment ? Vous voulez des paramètres ? Je n'en ai pas beaucoup à vous orir, mais
celui-là au moins est à connaître : -n, suivi d'un nombre. Il permet d'acher le nombre
de lignes que vous voulez. Par exemple, si vous ne voulez que les trois premières lignes,
tapez :
162
HEAD & TAIL : AFFICHER LE DÉBUT ET LA FIN D'UN FICHIER
Et voilà le travail !
On peut là encore utiliser -n suivi d'un nombre pour acher les x dernières lignes :
Mais ce n'est pas tout ! Il y a un autre paramètre à côté duquel vous ne pouvez pas
passer : -f (f pour follow, suivre en anglais).
Ce paramètre magique ordonne à tail de suivre la n du chier au fur et à mesure
de son évolution. C'est extrêmement utile pour suivre un chier de log qui évolue
souvent. Vous pouvez tester sur syslog par exemple :
163
CHAPITRE 11. MANIPULER LES FICHIERS
Le problème de syslog c'est qu'il n'évolue pas forcément toutes les secondes. Mais si
vous êtes patients et que vous regardez votre console, vous devriez le voir écrire de
nouvelles lignes sous vos yeux au bout d'un moment.
Faites Ctrl + C (Ctrl et C en même temps) pour arrêter la commande tail.
164
TOUCH & MKDIR : CRÉER DES FICHIERS ET DOSSIERS
mateo21@mateo21-desktop:/var/log$ cd
mateo21@mateo21-desktop:~$
mateo21@mateo21-desktop:~$ ls -F
Desktop/ Examples@ Images/ Modèles/ Public/ Vidéos/
Documents/ images/ log/ Musique/ tutos/
165
CHAPITRE 11. MANIPULER LES FICHIERS
Autre information intéressante : vous pouvez créer plusieurs chiers en une seule com-
mande. Il vous sut de les lister l'un après l'autre, séparés par des espaces. Ainsi, on
aurait pu créer nos deux chiers comme ceci :
Entourez-le de guillemets !
mkdir mondossier
On peut créer deux dossiers (ou plus !) en même temps en les séparant là aussi par des
espaces :
Si vous faites un ls, vous verrez que les dossiers ont bien été créés. :-)
Il y a un paramètre utile avec mkdir : -p. Il sert à créer tous les dossiers intermédiaires.
Par exemple :
166
CP & MV : COPIER ET DÉPLACER UN FICHIER
mkdir -p animaux/vertebres/chat
cp : copier un chier
La commande cp (abréviation de CoPy, copier en anglais) vous permet comme son
nom l'indique de copier un chier. . . mais aussi de copier plusieurs chiers à la fois, et
même de copier des dossiers !
Si on essayait de copier le chier fichierbidon qu'on a créé tout à l'heure ? Ça fonc-
tionne comme ceci :
cp fichierbidon fichiercopie
cp fichierbidon mondossier/
167
CHAPITRE 11. MANIPULER LES FICHIERS
Si vous voulez copier fichierbidon dans mondossier sous un autre nom, faites comme
ceci :
cp fichierbidon mondossier/fichiercopie
Avec cette commande, on aura créé une copie de fichierbidon dans mondossier sous
le nom fichiercopie !
Enn là, j'utilise des répertoires relatifs, mais je peux aussi écrire un répertoire en
absolu :
cp fichierbidon /var/log/
cp -R animaux autresanimaux
. . . cela aura pour eet de copier animaux ainsi que tous ses sous-dossiers sous le nom
autresanimaux. Faites des ls après pour vérier que les sous-dossiers sont bien là et
que je ne vous mène pas en bateau !
Utiliser le joker *
Le symbole * est appelé joker, ou encore wildcard en anglais sous Linux. Il vous permet
de copier par exemple tous les chiers image .jpg dans un sous-dossier :
cp *.jpg mondossier/
Vous pouvez aussi vous en servir pour copier tous les chiers dont le nom commence
par so :
168
CP & MV : COPIER ET DÉPLACER UN FICHIER
cp so* mondossier/
Le joker est un atout très puissant, n'hésitez pas à l'utiliser ! C'est avec des outils
comme le joker que la console deviendra pour vous progressivement plus puissante que
l'explorateur de chiers que vous manipulez à la souris.
mv : déplacer un chier
Très proche de cp, la commande mv (MoVe, déplacer en anglais) a en fait deux
utilités :
déplacer un chier (ou un dossier) ;
renommer un chier (ou un dossier).
Vous allez comprendre pourquoi.
Déplacer un chier
La commande mv s'utilise pratiquement comme cp :
mv fichierbidon mondossier/
Au lieu de copier fichierbidon dans mondossier comme on l'a fait tout à l'heure, ici
on a juste déplacé le chier. Il n'existe plus dans son dossier d'origine.
Vous pouvez déplacer des dossiers aussi simplement :
mv animaux/ mondossier/
mv *.jpg mondossier/
Renommer un chier
La commande mv permet de faire quelque chose d'assez étonnant : renommer un chier.
En eet, il n'existe pas de commande spéciale pour renommer un chier en console sous
Linux, c'est la commande mv qui est utilisée pour ça.
Par exemple :
169
CHAPITRE 11. MANIPULER LES FICHIERS
mv fichierbidon superfichier
mv fichierbidon mondossier/superfichier
Et voilà le travail !
Je vous conseille fortement de vous entraîner à utiliser cp et mv dans tous les sens :
avec ou sans joker, en déplaçant, renommant des dossiers, en déplaçant / renommant à
la fois, en utilisant des chemins relatifs et absolus, etc. C'est assez intuitif normalement,
mais il faut pratiquer et pas seulement se contenter de lire ce que j'écris pour que ça
rentre.
N'oubliez pas d'utiliser l'autocomplétion de chiers et dossiers avec la touche
Tab ; si vous ne le faites pas dès maintenant, vous perdrez du temps et vous
trouverez la console nulle alors que vous devriez la trouver géniale. Autre
chose : le symbole .. signie dossier précédent , et . signie dossier
dans lequel je me trouve . Vous pourriez en avoir besoin lorsque vous copiez
ou déplacez un chier.
Si vous avez la tête qui tourne à force de copier et déplacer des chiers dans des dossiers,
c'est normal. Ça commence à devenir un beau bazar dans vos dossiers d'ailleurs, non ?
Il est temps de faire un peu de ménage avec la commande permettant de supprimer :
rm !
rm : supprimer un chier
La commande rm (pour ReMove, supprimer en anglais) peut supprimer un chier,
plusieurs chiers, des dossiers, voire même votre ordinateur entier si vous le voulez.
170
RM : SUPPRIMER DES FICHIERS ET DOSSIERS
Il faut donc l'utiliser avec précaution. Commençons par des choses simples, supprimons
ce fichierbidon :
rm fichierbidon
rm fichierbidon fichiercopie
-i : demander conrmation
La commande -i permet de vous demander une conrmation pour chacun des chiers :
mateo21@mateo21-desktop:~$ rm -i fichierbidon
rm: détruire fichier régulier vide `fichierbidon'?
Lorsqu'on vous demande une conrmation de type oui/non comme ici, vous devez
répondre par une lettre :
o : signie Oui . Sur certains systèmes anglais, il faudra peut-être utiliser y de
Yes ;
n : signie Non .
Tapez ensuite sur Entrée pour valider.
rm -f fichierbidon
171
CHAPITRE 11. MANIPULER LES FICHIERS
Vous voyez au fur et à mesure de l'avancement ce qui est en train d'être fait. Très
pratique !
rm -r animaux/
. . . supprime le dossier animaux ainsi que tout ce qu'il contenait (sous-dossiers vertebres
et chat).
Notez qu'il existe aussi la commande rmdir. La grosse diérence avec rm -r,
c'est que rmdir ne peut supprimer un dossier que s'il est vide ! Il faudra y
avoir fait le ménage auparavant.
Je vais vous montrer quelque chose d'horrible, d'areux, d'interdit aux moins
de 18 ans, bref vous m'avez compris, le truc à ne faire sous aucun prétexte,
même pas en cauchemar.
Je me suis permis de mettre du texte avant pour vous éviter la tentation de recopier
bêtement la commande pour rigoler , pour voir ce que ça fait . Je vais vous
l'expliquer dans le détail, parce que c'est quand même l'erreur no 1 à ne pas faire
sous Linux.
172
LN : CRÉER DES LIENS ENTRE FICHIERS
rm : commande la suppression ;
-r : supprime de manière récursive tous les chiers et dossiers ;
-f : force la suppression sans demander la moindre conrmation ;
/* : supprime tous les chiers et dossiers qui se trouvent à la racine (/) quel que soit
leur nom (joker *).
En clair, cette commande supprime tout votre disque dur depuis la racine, sous-dossiers
compris, et ne demande aucune conrmation. Aucune possibilité de récupération, votre
PC est foutu. Vous êtes bons pour une réinstallation de Linux, et aussi de Windows
si la partition de Windows était accessible depuis Linux.
Mais ils sont bêtes les gens qui ont créé cette commande ! Pourquoi autoriser
de faire une chose aussi risquée ?
rm -rf *
173
CHAPITRE 11. MANIPULER LES FICHIERS
Ces raccourcis , qu'on appelle des liens sous Linux, sont un peu plus complexes
que ceux que vous avez l'habitude de voir sous Windows. En eet, on peut créer deux
types de liens :
des liens physiques ;
des liens symboliques.
Ces deux types ne fonctionnent pas de la même manière. Pour comprendre ce qui les
diérencie, il faut savoir comment un OS tel que Linux gère les chiers sur le disque
dur. Allons, allons, ne faites pas cette tête-là, un peu de théorie sur le fonctionnement
des OS, c'est toujours très intéressant ! :-)
174
LN : CRÉER DES LIENS ENTRE FICHIERS
Pour créer un lien physique, nous allons utiliser la commande ln. Je vous propose tout
d'abord de créer un répertoire pour nos tests :
mkdir tests
cd tests
Une fois dans ce dossier, créez un chier avec la commande touch par exemple :
touch fichier1
Nous voulons maintenant créer un lien physique : nous allons créer un fichier2 qui
partagera le même inode (le même contenu) que fichier1. Tapez :
ln fichier1 fichier2
Si vous listez les chiers du répertoire, vous avez l'impression d'avoir deux chiers
diérents :
175
CHAPITRE 11. MANIPULER LES FICHIERS
mateo21@mateo21-desktop:~/tests$ ls -l
total 0
-rw-r--r-- 2 mateo21 mateo21 0 2008-07-31 13:55 fichier1
-rw-r--r-- 2 mateo21 mateo21 0 2008-07-31 13:55 fichier2
A priori, rien ne nous permet ici de deviner que ces chiers modient le même contenu.
Le lien physique est donc un lien dur, pas évident à détecter au premier coup d'÷il.
Supprimez le fichier2 que nous avons créé tout à l'heure (sous forme de lien phy-
sique) :
rm fichier2
Créons maintenant un nouveau fichier2, cette fois sous forme de lien symbolique. On
utilise là encore la commande ln, mais avec le paramètre -s (s comme symbolique) :
ln -s fichier1 fichier2
mateo21@mateo21-desktop:~/tests$ ls -l
total 0
-rw-r--r-- 1 mateo21 mateo21 0 2008-07-31 13:55 fichier1
lrwxrwxrwx 1 mateo21 mateo21 8 2008-07-31 14:15 fichier2 -> fichier1
En résumé
cat permet d'acher tout le contenu d'un chier, mais lorsque celui-ci est long, il
est préférable d'utiliser less qui ache le chier page par page.
On peut obtenir uniquement le début ou la n d'un chier avec head et tail. En
utilisant tail -f on peut suivre l'évolution d'un chier en temps réel, ce qui est
utile sur les chiers de log qui enregistrent l'activité du système.
177
CHAPITRE 11. MANIPULER LES FICHIERS
178
Chapitre 12
Les utilisateurs et les droits
Diculté :
L inux est un système multi-utilisateur. Cela signie que plusieurs personnes peuvent
travailler simultanément sur le même OS, en s'y connectant à distance notamment.
Puisque plusieurs utilisateurs peuvent être connectés à Linux en même temps, celui-ci doit
avoir une excellente organisation dès le départ. Ainsi chaque personne a son propre compte
utilisateur, et il existe un ensemble de règles qui disent qui a le droit de faire quoi. Je vous
propose de découvrir tous ces mécanismes dans ce chapitre.
179
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
Lorsque vous avez installé Ubuntu, on vous a demandé le nom du compte utilisateur que
vous vouliez créer. Par exemple dans mon cas j'ai créé l'utilisateur mateo21 . Dans
la plupart des distributions Linux on vous proposera de créer un compte utilisateur
avec des droits limités, comme c'est le cas pour mon compte mateo21 .
Attends, c'est nous qui avons installé Linux mais on n'a pas le droit de faire
tout ce que l'on veut dessus ?
Oui, et c'est une sécurité. Bien sûr, comme vous êtes aux commandes, vous pouvez à
tout moment dire : Bon allez on passe en mode chef-qui-peut-tout-faire . Mais c'est
une sécurité de ne pas avoir le droit de tout faire par défaut, car certaines commandes
peuvent être dangereuses pour la stabilité et la sécurité de votre ordinateur. Avoir des
droits limités, cela signie aussi qu'on s'empêche par exemple d'exécuter la commande
de la mort qui tue qu'on a vue dans le chapitre précédent (rm -rf /*).
Nous allons d'abord commencer par voir comment sont organisés les utilisateurs sous
Linux, puis nous verrons comment devenir le chef . Plus loin dans le chapitre, nous
apprendrons à créer et supprimer des utilisateurs en ligne de commande.
On peut créer autant d'utilisateurs que l'on veut, eux-mêmes répartis dans des groupes.
Il y a un utilisateur spécial , root, aussi appelé superutilisateur. Celui-ci a tous les
droits sur la machine.
Vous pouvez voir ce que ça donne sur la gure 12.1.
Au départ, chez moi, deux utilisateurs sont créés : root et mateo21.
On ne se connecte en root que très rarement, lorsque c'est nécessaire. Certaines
commandes de Linux que nous allons voir dans ce chapitre ne sont accessibles qu'à
root. Le reste du temps, on utilise le compte limité que l'on a créé (mateo21 dans
mon cas).
Cette simple protection permet de largement limiter les dégâts en cas de fausse ma-
nipulation, de virus sur votre PC, etc. En eet, un virus ne peut rien faire de plus
que vous quand vous êtes connectés avec des droits limités. En revanche, si vous êtes
en root il pourra tout faire, même détruire votre ordinateur. Sous Windows, vous êtes
toujours connectés en administrateur par défaut (équivalent de root), ce qui explique
pourquoi les virus y sont si dangereux.
180
SUDO : EXÉCUTER UNE COMMANDE EN ROOT
sudo commande
On vous demandera normalement votre mot de passe (au moins la première fois) pour
exécuter la commande. Ce mot de passe est le même que celui de votre compte utilisa-
teur limité.
181
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
Par exemple, vous pouvez exécuter un simple ls avec les droits root (vous ne risquez
rien, rassurez-vous) :
mateo21@mateo21-desktop:/home$ sudo ls
[sudo] password for mateo21:
autredossier Desktop Examples Images Modèles Musique tutos
autresanimaux Documents images log mondossier Public Vidéos
Comme vous le voyez, on vous demande d'abord le mot de passe, par sécurité. Faire
un ls en tant que root n'apporte rien de bien spécial, c'était simplement pour avoir
un exemple sûr avec lequel vous ne risquez pas d'endommager votre ordinateur.
mateo21@mateo21-desktop:/home$ sudo su
[sudo] password for mateo21:
root@mateo21-desktop:/home#
root@mateo21-desktop:/home/mateo21# exit
exit
mateo21@mateo21-desktop:~$
182
ADDUSER, DELUSER : GESTION DES UTILISATEURS
de celles-là. Si vous essayez de les appeler avec votre utilisateur normal, on vous dira
que vous n'avez pas le droit de les utiliser. Seul root peut gérer les utilisateurs.
Pensez à rajouter un sudo devant la commande si vous n'êtes pas déjà root ; pour cela,
tapez sudo adduser patrick. Moi je n'ai pas eu à le faire car j'ai choisi de rester root
indéniment en tapant sudo su auparavant. Si vous tentez d'exécuter la commande
avec votre compte limité, vous aurez une erreur de ce genre : adduser : Seul le
superutilisateur peut ajouter un utilisateur ou un groupe sur le système .
Le répertoire personnel de patrick est automatiquement créé (/home/patrick) et son
compte est préconguré. On vous demande ensuite de taper son mot de passe :
Tapez le mot de passe de patrick puis faites Entrée. Retapez-le pour valider. Encore
une fois, si vous ne voyez pas d'étoiles * quand vous tapez le mot de passe, c'est normal ;
c'est une sécurité pour qu'on ne puisse pas compter le nombre de caractères derrière
votre épaule.
On vous propose ensuite de rentrer quelques informations personnelles sur patrick,
comme son nom, son numéro de téléphone. . . Si vous voulez le faire, faites-le, mais
sinon sachez que vous pouvez taper Entrée sans rien écrire ; on ne vous embêtera pas.
183
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
À la n, on vous demande de conrmer par un o (oui) que tout est bon. Tapez
Entrée et ça y est, le compte de patrick est créé !
deluser patrick
184
ADDGROUP, DELGROUP : GESTION DES GROUPES
adduser et deluser sont des commandes qui n'existent que sous Debian et
tous ses descendants, dont Ubuntu. Partout ailleurs on doit utiliser useradd
et userdel, qui sont les commandes Unix traditionnelles fonctionnant par-
tout. Elles font globalement la même chose mais de manière beaucoup plus
basique : si vous n'appelez pas passwd vous-mêmes, le compte ne sera pas
activé et n'aura pas de mot de passe.
Oui mais dans ce cas, à quel groupe appartiennent les utilisateurs mateo21
et patrick ? On n'a rien déni, nous !
En eet, si vous ne dénissez rien, un groupe du même nom que l'utilisateur sera
automatiquement créé : ainsi, mateo21 appartient au groupe mateo21 et patrick au
groupe patrick.
On peut le vérier en regardant à qui appartiennent les dossiers dans /home via un
ls -l :
root@mateo21-desktop:~# cd /home
root@mateo21-desktop:/home# ls -l
total 24
drwx------ 2 root root 16384 2007-09-19 18:22 lost+found
drwxr-xr-x 65 mateo21 mateo21 4096 2007-11-15 22:40 mateo21
drwxr-xr-x 2 patrick patrick 4096 2007-11-15 23:00 patrick
185
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
Faites très attention en utilisant usermod ! Lorsque vous avez recours à -G,
l'utilisateur change de groupe et ce peu importe les groupes auxquels il ap-
partenait auparavant. Si vous voulez ajouter des groupes à un utilisateur
(sans perdre les groupes auxquels il appartenait avant cela), utilisez -a :
usermod -aG amis patrick
delgroup amis
186
CHOWN, CHGRP : GESTION DES PROPRIÉTAIRES D'UN FICHIER
mateo21@mateo21-desktop:~$ ls -l rapport.txt
-rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt
On peut voir ensuite que patrick est bien le nouveau propriétaire du chier :
root@mateo21-desktop:/home/mateo21# ls -l rapport.txt
-rw-r--r-- 1 patrick mateo21 0 2007-11-15 23:14 rapport.txt
187
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
root@mateo21-desktop:/home/mateo21# ls -l rapport.txt
-rw-r--r-- 1 patrick amis 0 2007-11-15 23:14 rapport.txt
Cela aectera le chier à l'utilisateur patrick et au groupe amis. Il sut de séparer par
un symbole deux points ( : ) le nom du nouvel utilisateur (à gauche) et le nom du
nouveau groupe (à droite).
Résultat :
root@mateo21-desktop:/home# ls -l
total 24
drwx------ 2 root root 16384 2007-09-19 18:22 lost+found
drwxr-xr-x 62 mateo21 mateo21 4096 2007-11-15 23:19 mateo21
drwxr-xr-x 2 mateo21 mateo21 4096 2007-11-15 23:00 patrick
188
CHMOD : MODIFIER LES DROITS D'ACCÈS
mateo21@mateo21-desktop:~$ ls -l
total 40
drwxr-xr-x 2 mateo21 mateo21 4096 2007-11-13 21:53 Desktop
drwxr-xr-x 2 mateo21 mateo21 4096 2007-11-13 13:46 Documents
lrwxrwxrwx 1 mateo21 mateo21 26 2007-09-19 18:31 Examples
,→ -> /usr/share/example-content
drwxr-xr-x 2 mateo21 mateo21 4096 2007-09-25 20:28 images
drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Images
drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-25 11:11 log
drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Modèles
drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Musique
drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Public
-rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt
drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-19 19:51 tutos
drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Vidéos
Vous voyez tous ces d, r, w et x au début ? Ce sont ce qu'on appelle les droits d'accès
du chier ou dossier.
On peut voir cinq lettres diérentes. Voici leur signication :
d (Directory) : indique si l'élément est un dossier ;
l (Link) : indique si l'élément est un lien (raccourci) ;
r (Read) : indique si on peut lire l'élément ;
w (Write) : indique si on peut modier l'élément ;
x (eXecute) : si c'est un chier, x indique qu'on peut l'exécuter. Ce n'est utile
que pour les chiers exécutables (programmes et scripts). Si c'est un dossier, x
indique qu'on peut le traverser , c'est-à-dire qu'on peut voir les sous-dossiers qu'il
contient si on a le droit de lecture dessus.
1. Je sais, je suis vraiment trop diabolique.
189
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
Si la lettre apparaît, c'est que le droit existe. S'il y a un tiret à la place, c'est qu'il n'y
a aucun droit.
mateo21@mateo21-desktop:~$ ls -l rapport.txt
-rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt
190
CHMOD : MODIFIER LES DROITS D'ACCÈS
Souvenez-vous d'une chose : root a TOUS les droits. Il peut tout faire : lire, modier,
exécuter n'importe quel chier.
Droit Chire
r 4
w 2
x 1
Si vous voulez combiner ces droits, il va falloir additionner les chires correspondants.
Ainsi, pour attribuer le droit de lecture et de modication, il faut additionner 4 + 2, ce
qui donne 6. Le chire 6 signie donc Droit de lecture et d'écriture .
Voici la liste des droits possibles et la valeur correspondante :
C'est compris ? Avec ça, on peut calculer la valeur d'un triplet de droits. Il faut faire le
191
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
même calcul pour les droits que l'on veut attribuer au propriétaire, au groupe et aux
autres.
Par exemple, 640 indique les droits du propriétaire, du groupe et des autres (dans
l'ordre).
6 : droit de lecture et d'écriture pour le propriétaire.
4 : droit de lecture pour le groupe.
0 : aucun droit pour les autres.
Le droit maximal que l'on puisse donner à tout le monde est 777 : droit de lecture,
d'écriture et d'exécution pour le propriétaire, pour son groupe et pour tous les autres.
Bref, avec un tel droit tout le monde peut tout faire sur ce chier. Au contraire, avec
un droit de 000, personne ne peut rien faire. . . à part root, bien sûr.
Pour changer les droits sur le chier rapport.txt, et être le seul autorisé à le lire et
l'éditer, je dois exécuter cette commande :
mateo21@mateo21-desktop:~$ ls -l rapport.txt
-rw------- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt
Bingo ! On a bien conrmation que seul le propriétaire du chier, c'est-à-dire moi, peut
le lire et le modier !
192
CHMOD : MODIFIER LES DROITS D'ACCÈS
chmod +x rapport.txt
Signication : Aecter tous les droits au propriétaire, juste la lecture au groupe, rien
aux autres .
Voilà, ouf ! J'ai préféré vous expliquer le fonctionnement à travers des exemples concrets
plutôt que de faire un cours théorique sur la syntaxe d'une des utilisations possibles de
chmod. Normalement si vous suivez mes exemples vous devriez être capables de tout
faire !
C'est tout !
193
CHAPITRE 12. LES UTILISATEURS ET LES DROITS
En résumé
Chaque personne qui utilise une machine Linux possède un compte utilisateur.
Les utilisateurs sont classés par groupes.
Il existe un superutilisateur qui a tous les droits : root. C'est l'administrateur de
la machine, le seul à être autorisé à installer des programmes ou eectuer certaines
modications sur le système.
Certaines commandes ne fonctionnent que lorsqu'on est root et nécessitent donc de
se transformer en root à l'aide de sudo. C'est le cas de la commande d'ajout d'uti-
lisateur (adduser), de suppression d'utilisateur (deluser) ou encore de changement
de propriétaire d'un chier (chown).
On peut modier les droits d'accès à un chier avec chmod. Il existe trois types de
droits : r (droit de lecture), w (droit d'écriture) et x (droit d'exécution).
194
Chapitre 13
Nano, l'éditeur de texte du débutant
Diculté :
N ous avons découvert plusieurs façons de voir le contenu d'un chier en console. Mais. . .
aucune des commandes que nous avons étudiées ne nous permettait d'éditer un chier.
Pourquoi ai-je repoussé le moment où je vous parlerais des éditeurs de texte ? Parce que
c'est un des domaines les plus riches de la console ! Parmi les plus célèbres éditeurs de texte
console de Linux, il faut connaître : Nano, Vim et Emacs.
Que de jolis noms, n'est-ce pas ? Des trois que je viens de citer, Nano est de loin le plus
simple à utiliser. Ce n'est pas pour rien que ce chapitre s'intitule Nano, l'éditeur de texte
du débutant .
Nous découvrirons Vim plus loin dans ce livre, car il est plus complexe et nécessite déjà un
bon niveau.
195
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
Chaque fois que vous devez éditer un chier de texte brut. Sous Windows, vous avez
l'habitude de voir des chiers de texte brut au format .txt. Sous Linux, vous savez
que l'extension importe peu (on peut trouver des chiers en texte brut sans extension).
Les éditeurs de texte sont parfaits pour les programmeurs en particulier : ils permettent
d'éditer des chiers .c, .cpp, .h, .rb, .py, etc. 1 Même si vous ne programmez pas,
vous aurez besoin d'utiliser un éditeur de texte pour modier des chiers de congu-
ration. Ces chiers n'ont pas d'extension particulière, mais à force vous apprendrez à
les reconnaître.
Après avoir appris à utiliser Nano, nous nous ferons les dents sur nos premiers chiers
de conguration : le nanorc et le bashrc. Ce sera l'occasion pour vous de personnaliser
votre Nano et votre console. ;-)
196
PREMIERS PAS AVEC NANO
Découverte de Nano
Le nom complet de Nano est GNU nano , en référence au projet GNU dont je vous
ai parlé dans le tout premier chapitre. Il s'agit d'un logiciel qui s'inspire de pico ,
un éditeur de texte plus ancien qui se voulait lui aussi très simple d'utilisation.
Pour démarrer le logiciel, il vous sut simplement de taper nano dans la console :
nano
197
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
La recherche
La combinaison de touches Ctrl + W lance une recherche dans le chier (gure 13.4).
Il vous sut d'écrire le mot que vous recherchez (gure 13.5). . .
. . . puis de taper Entrée (gure 13.6).
Le curseur est automatiquement positionné à la première occurrence trouvée. Si le
curseur est à la n, la recherche recommence du début.
198
PREMIERS PAS AVEC NANO
199
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
Si vous souhaitez aller au résultat suivant (au deux suivant), faites à nouveau
Ctrl + W pour lancer une recherche. La recherche précédente est sauvegardée et ap-
paraît entre crochets. Si vous voulez rechercher le même mot (et donc aller au résultat
suivant), tapez juste Entrée sans écrire de mot à rechercher (gure 13.7).
Enregistrer et quitter
Pour enregistrer à tout moment, faites Ctrl + O. Si vous essayez de quitter (Ctrl + X)
sans enregistrer auparavant, un message vous demandera si vous voulez sauvegarder
(gure 13.8).
Si vous appuyez sur la touche o, vous passerez en mode enregistrement.
Si vous appuyez sur la touche n, Nano quittera sans enregistrer.
Si vous utilisez la combinaison Ctrl + C, vous annulerez votre demande de sortie de
Nano et ne quitterez donc pas le logiciel.
En appuyant sur o, vous vous retrouvez en mode enregistrement. Tapez juste le nom
du chier que vous voulez créer puis pressez Entrée (gure 13.9).
Après ça, Nano sera fermé et vous retrouverez votre bonne vieille ligne de commandes.
200
PREMIERS PAS AVEC NANO
201
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
nano salut.txt
202
CONFIGURER NANO AVEC .NANORC
Si je veux lancer Nano avec toutes ces options à la fois, je peux donc écrire :
Pourquoi .nanorc ?
La plupart des chiers de conguration commencent par un point. Cela permet de
cacher le chier quand on fait un ls. Bien entendu, comme vous devriez maintenant
le savoir, les chiers cachés peuvent toujours être achés en utilisant le paramètre -a :
ls -a.
Chaque utilisateur de la machine peut créer son propre chier de conguration .nanorc
dans son répertoire personnel (home). Chez moi, ce chier doit être placé à la position :
/home/mateo21/.nanorc. Ce chier est lu par Nano à chaque fois que vous le démarrez.
Je viens de regarder la liste des chiers de mon home, mais même en incluant
les chiers cachés avec -a je ne vois pas de chier appelé .nanorc !
En eet, il se peut que le chier .nanorc n'existe pas chez vous. Si tel est le cas, Nano
sera chargé avec les options par défaut.
Création du .nanorc
Pas de .nanorc ? Pas de problème, il sut de le créer. On peut par exemple faire ceci :
nano .nanorc
Cette commande ouvre Nano. Comme le chier .nanorc n'existe pas, un document
vide est ouvert (gure 13.10). Le chier .nanorc sera créé lorsque vous enregistrerez.
203
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
Figure 13.10 Un .nanorc neuf (et vide). Notez que le nom du chier est déjà indiqué
en haut de l'écran.
Dans ce chier, vous devez écrire une commande par ligne. Chaque commande com-
mence par un set (pour activer) ou un unset (pour désactiver) suivi de l'option qui
vous intéresse.
Par exemple, pour activer la souris, écrivez :
set mouse
Ainsi Nano sera automatiquement chargé avec la prise en charge de la souris. Vous
n'aurez pas besoin de réécrire systématiquement le paramètre -m qu'on a vu tout à
l'heure.
On peut faire de même pour éviter d'avoir à taper à chaque fois les paramètres -i et
-A avec d'autres séries de set. Au nal, on écrira ceci :
set mouse
set autoindent
set smarthome
Enregistrez le chier avec Ctrl + O. Comme vous avez déjà mentionné le nom du
chier en paramètre lors de l'ouverture de Nano, celui-ci sera automatiquement écrit
pour vous (gure 13.11).
Vous pouvez ensuite faire Ctrl + X pour quitter Nano. Je vous rappelle que pour que
ces options soient prises en compte, il faut démarrer une nouvelle session de Nano (c'est
204
CONFIGURER NANO AVEC .NANORC
pour ça que la souris n'a pas automatiquement fonctionné dès que vous avez enregistré
le chier).
Si vous relancez Nano ensuite, vous pouvez constater que la souris fonctionne et que
les options d'indentation automatique et de retour à la ligne intelligent sont elles aussi
opérationnelles. :-)
Normalement, ce chier existe déjà. Comme vous pouvez le constater sur la gure 13.12,
il est bien rempli.
2. Attention : il n'y a pas de point devant, cette fois.
205
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
Il sert en fait de chier d'exemple. Toutes les options disponibles dans un .nanorc sont
présentes, mais elles sont précédées d'un # qui signie qu'il s'agit d'un commentaire.
Les commentaires sont ignorés par Nano.
Le début du chier vous explique (en anglais) que c'est un chier d'initialisation
d'exemple de Nano.
Après le petit blabla d'introduction, vous avez la liste des options disponibles. Toutes
sont commentées. La première est autoindent.
# set autoindent
set autoindent
Vous pouvez parcourir le chier à la recherche d'options intéressantes que vous voulez
activer.
Vers la n, vous verrez une section appelée color setup , qui commence par ces
lignes-là :
## Nanorc files
# include "/usr/share/nano/nanorc.nanorc"
206
CONFIGURER SA CONSOLE AVEC .BASHRC
## C/C++
# include "/usr/share/nano/c.nanorc"
## HTML
# include "/usr/share/nano/html.nanorc"
Je vous invite à décommenter toutes les lignes d'include. Cela permettra d'activer la
coloration intelligente de vos chiers selon leur type. Vous pourrez ainsi avoir des
chiers HTML colorés, des chiers C colorés, des chiers nanorc colorés, etc.
Enregistrez le chier puis quittez Nano.
Si vous avez une erreur lors de l'enregistrement, cela signie que vous n'avez
pas ouvert le chier en root. Seul root a le droit de modier ce chier. Fermez
Nano et relancez-le avec un sudo cette fois.
mateo21@mateo21-desktop:/usr/share/nano$ cd
mateo21@mateo21-desktop:~$ nano .bashrc
Nous n'allons pas nous intéresser au .bashrc en détail. Nous allons seulement voir
quelques lignes faciles à éditer qui vous permettront de personnaliser un peu votre
console.
mateo21@mateo21-desktop:~$
207
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
Rendez-vous plus bas dans le chier, jusqu'à ce que vous tombiez sur ces lignes :
# Comment in the above and uncomment this below for a color prompt
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:
,→ \[\033[01;34m\]\w\[\033[00m\]\$ '
Dans les commentaires, on vous dit que vous pouvez activer l'invite de commandes
colorée en commentant les lignes du dessus et en décommentant la dernière ligne.
Rajoutez donc un # devant les deux premiers PS1, et enlevez le # devant le dernier PS1
pour que la coloration de l'invite de commandes puisse fonctionner :
# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:
,→ \[\033[01;34m\]\w\[\033[00m\]\$ '
Enregistrez. Il faudra ouvrir une nouvelle console pour que la modication soit prise
en compte an de proter d'une invite de commandes en couleurs.
Si vous êtes en forme, vous pouvez éditer la ligne que vous venez de décommenter :
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:
,→ \[\033[01;34m\]\w\[\033[00m\]\$ '
C'est en fait elle qui indique ce que l'invite de commandes doit acher. Les séquences
de type \033 servent à paramétrer la couleur (ce n'est pas simple, je vous l'accorde).
208
CONFIGURER SA CONSOLE AVEC .BASHRC
Celui-ci active la coloration des résultats d'un ls à chaque fois que vous tapez ls.
En fait, ls est systématiquement et automatiquement transformé par la console en
ls --color=auto. C'est quand même plus rapide que de réécrire sans cesse ces para-
mètres.
Il y a un autre alias que j'ai l'habitude d'utiliser, c'est ll (deux fois la lettre L mi-
nuscule). Cela permet de faire un ls en mode détaillé. Personnellement, j'ai un peu
complété l'alias pour utiliser plus d'options à la fois, comme j'en ai parlé dans le cha-
pitre sur ls :
3. Mais faites quand même attention à ne pas mettre le bazar là-dedans, hein. ;-)
209
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
. . . signie que la commande ll fera appel à ls avec les options qui permettent d'acher
le détail de chaque chier, d'acher les chiers cachés, d'acher les chiers dans l'ordre
inverse de dernière modication (le chier le plus récent sera en bas) et d'acher des
tailles de chiers lisibles pour un humain (-h).
La commande ls appellera automatiquement l'alias ls --color=auto, ce qui fait qu'un
ll sera aussi coloré. Bref, c'est un peu un alias en chaîne.
Vous pouvez vous aussi dénir vos propres alias. Comme vous pouvez le voir, c'est très
simple car cela fonctionne sur le modèle :
alias nom='commande'
210
CONFIGURER SA CONSOLE AVEC .BASHRC
Les éléments du bashrc personnel ont la priorité sur ceux du bashrc global.
Si un même alias est déni dans les deux, c'est celui du bashrc personnel
qui sera pris en compte.
Et aussi. . . le .profile
De même qu'il existe un ~/.bashrc et un /etc/bash.bashrc, il existe un ~/.profile
et un /etc/profile. Quelle est la diérence ?
En gros, le .prole est lu à chaque nouvelle console dans laquelle vous vous loggez
(vous rentrez votre login / mot de passe). C'est le cas des consoles que vous ouvrez
avec Ctrl + Alt + F1 à F6 (tty1 à tty6). Le .bashrc est lu lorsque vous ouvrez une
console dans laquelle vous ne vous loggez pas. C'est le cas des consoles que vous ouvrez
en mode graphique (Terminal sous Gnome, Konsole sous KDE).
C'est un peu compliqué pour pas grand-chose au nal. Dans la pratique, le .profile
fait par défaut appel au .bashrc. . . Donc il sut d'éditer votre .bashrc et vous modi-
erez ainsi les options de toutes vos consoles : celles avec et sans login. Voilà pourquoi
je vous ai fait éditer dès le début le .bashrc. ;-)
Pour bien comprendre comment ça fonctionne, tout est résumé dans le schéma de la
gure 13.13.
Le shell est le programme qui interprète les commandes que vous tapez (vous
pouvez considérer que c'est un synonyme de console ).
211
CHAPITRE 13. NANO, L'ÉDITEUR DE TEXTE DU DÉBUTANT
En résumé
Un éditeur de texte est un programme qui ouvre des chiers texte (un peu comme
Bloc-Notes sous Windows). On en a régulièrement besoin sous Linux pour modier
des chiers de conguration, par exemple.
Il existe de nombreux éditeurs de texte en console qui peuvent être très complets,
comme Vim et Emacs.
L'éditeur Nano est un des éditeurs en console les plus simples à utiliser ; nous com-
mençons donc par découvrir celui-ci.
On utilise plusieurs raccourcis clavier dans un éditeur de texte comme Nano. Ctrl + W
lance une recherche, Ctrl + O enregistre le chier, Ctrl + X permet de quitter, etc.
On peut utiliser Nano pour modier son chier de conguration .bashrc et person-
naliser sa console. On peut notamment s'en servir pour colorer l'invite de commandes
et créer des alias.
212
Chapitre 14
Installer des programmes avec apt-get
Diculté :
Q uand vous êtes sous Windows et que vous voulez télécharger un nouveau programme,
que faites-vous ? En général une petite recherche sur un moteur de recherche, un
tour sur les sites de téléchargement comme telecharger.com, clubic.com. . . et
vous trouvez votre bonheur. Vous récupérez un programme d'installation, vous faites Sui-
vant , Suivant , Suivant , Terminer et c'est installé. Parfois, il faut répondre
à des questions un peu techniques comme Dans quel répertoire voulez-vous installer ce
programme ? .
Sous Linux (et notamment sous Ubuntu), ça ne fonctionne pas du tout comme ça : c'est
encore plus simple. Mieux : vous allez vite vous rendre compte que c'est un vrai plaisir
d'installer de nouveaux programmes et que c'est même un des points forts d'un système
comme Ubuntu par rapport à Windows. Vous allez voir.
213
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
214
LES DÉPÔTS
On dit que les programmes dépendent d'autres programmes pour fonctionner : ils ont
des dépendances.
Par exemple, le programme de dessin The GIMP (équivalent de Photoshop) ne peut
pas fonctionner seul. Il dépend de bibliothèques de lecture des images (qui lui disent
comment lire une image JPEG) par exemple. Parfois, ces dépendances ont elles-mêmes
des dépendances !
Les dépôts
Comme je vous l'ai dit un peu plus haut, tous les paquets sont regroupés au sein d'un
même endroit appelé dépôt. Il s'agit d'un serveur qui propose tous les paquets qui
existent (ou presque), ce qui simplie grandement vos recherches.
Sous Windows, les programmes sont éparpillés aux quatre coins du Net. Sous Linux,
on a décidé de ne pas refaire la même erreur. On a choisi de mettre tout le monde
d'accord et de placer tous les programmes (paquets) au même endroit.
Ceci est possible en partie grâce au fait que la plupart des programmes sous
Linux sont libres. En eet, les programmes étant libres , tout le monde
est autorisé à les diuser ; ça ne pose donc aucun problème de les voir tous
rassemblés au même endroit. Sous Windows, la majorité des programmes
étant propriétaire, leurs auteurs n'auraient jamais donné leur accord pour que
ceux-ci soient diusés au même endroit (gratuitement, qui plus est).
La notion de dépôt
L'endroit où tous les paquets se trouvent est appelé dépôt (repository en anglais).
Bonne remarque, vous avez tout à fait raison. On peut certes mettre un gros serveur
215
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
avec une grosse bande passante (qui permet à plusieurs centaines de personnes de
télécharger en même temps), mais on peut dicilement imaginer que tous les linuxiens
de la planète aillent se servir au même endroit au même moment !
C'est pour cela qu'il existe en fait un grand nombre de dépôts. La plupart proposent
exactement les mêmes paquets (les dépôts sont donc des copies les uns des autres).
Certains dépôts spéciaux proposent toutefois des programmes que l'on ne trouve nulle
part ailleurs, mais il est rare que l'on ait besoin de se servir dans ces dépôts.
En règle générale, avoir un seul bon dépôt sut à installer la plupart des
programmes qui existent sous Linux !
216
LES DÉPÔTS
ment vite).
En France, par défaut, Ubuntu utilise le dépôt fr.archive.ubuntu.com. Ce n'est pas
toujours une bonne idée de garder le dépôt par défaut car en cas de nouvelle version
d'Ubuntu et de ses logiciels, celui-ci est surchargé et devient alors très lent.
Si vous êtes chez Free, je vous recommande d'utiliser le dépôt de Free. Si vous êtes
chez Wanadoo / Orange, je vous recommande d'utiliser le dépôt Oleane (appartenant
à Orange).
Nous allons voir comment changer de dépôt.
. . . et vous modierez le chier en tant que root. Soit vous passez root dénitivement
en faisant sudo su d'abord.
Le chier que vous avez devrait ressembler à ceci :
## Major bug fix updates produced after the final release of the
## distribution.
deb http://fr.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://fr.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
2. J'avais tout calculé, qu'est-ce que vous croyez ?
217
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://fr.archive.ubuntu.com/ubuntu/ hardy-backports main restricted
,→ universe multiverse
# deb-src http://fr.archive.ubuntu.com/ubuntu/ hardy-backports main restricted
,→ universe multiverse
Les lignes commençant par un # sont des lignes de commentaires. Elles seront ignorées.
Normalement, chaque ligne du chier commence par une de ces deux directives :
deb : pour télécharger la version compilée (binaire) des programmes. C'est ce que
vous voudrez faire dans la plupart des cas car c'est la version prête à l'emploi ;
deb-src : permet de récupérer le code source du programme. Généralement, vous
n'en avez pas besoin, sauf si vous êtes curieux et que vous voulez voir la source d'un
programme 3 .
A priori seules les lignes deb nous intéressent. On pourrait même supprimer (ou com-
menter) les lignes deb-src, récupérer les sources n'ayant aucun intérêt pour nous.
Voici une ligne type :
3. C'est l'avantage des logiciels libres de pouvoir consulter la source des programmes !
218
LES DÉPÔTS
Bonne question. . . à laquelle je ne peux pas répondre. A priori tout le monde peut
créer un dépôt, il peut donc très bien exister des dizaines, voire des centaines de dépôts
diérents que vous pourriez utiliser. Je ne les connais pas tous et je ne vais pas me
risquer à dresser une liste ici, mais si vous recherchez dépôts ubuntu avec votre
moteur de recherche favori, vous devriez trouver des réponses.
219
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
220
LES OUTILS DE GESTION DES PAQUETS
Ensuite, le logiciel vous fera remarquer que votre cache n'est pas à jour. En eet, pour
des raisons de performances, Ubuntu avait téléchargé la liste des paquets proposés par
l'ancien serveur. Comme vous venez d'en changer, il se peut que la liste des paquets ait
changé elle aussi. Il faut récupérer la liste des paquets proposés par le nouveau serveur
et la mettre en cache. Cliquez sur Actualiser pour mettre à jour la liste des logiciels
disponibles (gure 14.7).
221
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
Je vous ai proposé de changer de dépôt mais sachez que ce n'est pas obligatoire, vous
pouvez vous contenter de celui par défaut.
Sous Ubuntu, on peut utiliser un programme graphique qui gère les paquets pour nous :
nous avions justement découvert la logithèque Ubuntu au début de ce cours.
Ici, nous nous intéressons aux manipulations en console. Les deux programmes console
de gestion des paquets les plus connus sont :
apt-get ;
aptitude.
Lequel des deux utiliser ? Le premier est sûrement le plus célèbre ; le second est gé-
néralement reconnu comme étant plus ecace lors de la désinstallation de paquets (il
supprime aussi les dépendances inutilisées). Cependant apt-get sous Ubuntu a évolué
aussi et peut supprimer les dépendances inutilisées.
Après, c'est un peu une question d'habitude. Pour ma part, j'ai toujours été habitué
à apt-get, c'est donc celui que j'utilise et que je vais vous montrer. Que vous utilisiez
l'un ou l'autre ne fera pas beaucoup de diérence.
Nous devons généralement suivre trois étapes pour télécharger un paquet :
apt-get update (optionnel) : pour mettre notre cache à jour si ce n'est pas déjà
fait ;
apt-cache search monpaquet (optionnel) : pour rechercher le paquet que nous vou-
lons télécharger si nous ne connaissons pas son nom exact ;
apt-get install monpaquet : pour télécharger et installer notre paquet.
C'est très simple, vous allez voir. Nous verrons aussi comment supprimer un paquet et
comment mettre tous nos paquets à jour en une seule commande !
222
APT-GET UPDATE : METTRE À JOUR LE CACHE DES PAQUETS
apt-get update
Après avoir tapé cette commande, vous allez automatiquement télécharger la dernière
liste des paquets proposés par vos dépôts :
223
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
Voilà : ça fait un peu peur la première fois mais en général, c'est assez rapide. Je vous
rappelle que vous n'avez pas besoin d'exécuter cette commande à chaque fois que vous
voulez installer un paquet mais seulement de temps en temps pour être sûrs d'avoir la
liste la plus à jour possible.
Cette commande eectue une recherche de paquet dans votre cache. Cela évite d'avoir
à aller sur Internet pour faire la recherche, ce qui aurait été lent.
Bon ! Que veut-on télécharger ? Un éditeur de texte ? Un navigateur ? Allez : pour
s'amuser, je vous propose de rechercher un jeu, par exemple un jeu de casse-briques
(breakout en anglais).
Faites la recherche suivante :
root@mateo21-desktop:~# apt-cache search breakout
briquolo - Fast paced 3d Breakout
briquolo-data - Fast paced 3d Breakout data files
circuslinux - The clowns are trying to pop balloons to score points!
circuslinux-data - data files for circuslinux
gnome-breakout - Clone of the classic game Breakout, written for GNOME
lbreakout2 - A ball-and-paddle game with nice graphics
lbreakout2-data - A ball-and-paddle game with nice graphics (DATA FILES)
libfreebob0 - FreeBoB API
libfreebob0-dev - FreeBoB API - development files
tecnoballz - breaking block game ported from the Amiga platform
La commande apt-cache search breakout a listé tous les paquets qui avaient un
rapport avec les casse-briques. À gauche vous avez le nom du paquet, à droite une
courte description.
224
APT-GET INSTALL : INSTALLER UN PAQUET
Astuce : vous pouvez installer plusieurs paquets d'un coup en les listant un à
un : apt-get install paquet1 paquet2 paquet3
225
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
226
APT-GET INSTALL : INSTALLER UN PAQUET
227
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
14.10, vous pouvez voir OpenArena, basé sur le célèbre jeu Quake III Arena dont le
code source est devenu libre.
Le paquet sera alors désinstallé de votre ordinateur. Toutefois, cela ne supprime pas
les dépendances du paquet devenues inutiles. Pour demander à apt-get de supprimer
aussi les dépendances inutiles, on utilise autoremove :
4. Notez toutefois qu'il est fortement conseillé d'avoir installé les pilotes de votre carte graphique
avant d'y jouer.
228
APT-GET UPGRADE : METTRE À JOUR TOUS LES PAQUETS
apt-get analyse le paquet, vérie les dépendances qu'il peut supprimer sans risque
(c'est-à-dire les dépendances qui ne sont plus utilisées par aucun autre paquet) et
calcule la taille d'espace disque libéré (un peu plus de 5 Mo dans mon cas).
Faites O pour conrmer que vous voulez bien désinstaller le paquet et ses dépen-
dances. Vous voyez alors les paquets se faire désinstaller par apt-get :
apt-get upgrade
229
CHAPITRE 14. INSTALLER DES PROGRAMMES AVEC APT-GET
Pensez à faire un apt-get update pour mettre à jour le cache des paquets
sur votre machine avant de lancer un upgrade. En eet, apt-get compare
la version de vos paquets installés avec ceux présents dans le cache. Si votre
cache est ancien , apt-get se dira Oh bah, il n'y a rien de nou-
veau, pas besoin d'une mise à jour . Veillez donc à faire régulièrement un
apt-get update pour être 100 % sûrs que votre cache est à jour.
On vous demandera une conrmation après avoir listé tous les paquets qui ont besoin
d'une mise à jour. Vous n'avez pas besoin de faire autre chose. Tous vos paquets installés
seront mis à jour (ça peut être un peu long, par contre).
Si tous vos paquets sont déjà dans leur version la plus récente, vous verrez le message
suivant :
Tous ces 0 de la dernière ligne nous indiquent que rien ne s'est passé car il n'y avait
rien à faire. Cela signie que votre système est à jour.
En résumé
La plupart des distributions Linux proposent un moyen centralisé de télécharger et
d'installer des logiciels facilement. L'installation de programmes y est généralement
beaucoup plus simple que sous Windows !
Sous Ubuntu, on peut utiliser des interfaces graphiques pour télécharger et installer
des logiciels. En console, on fait appel au programme apt-get.
On télécharge les programmes depuis des serveurs (fournis par Ubuntu, votre four-
nisseur d'accès ou une université) qui font oce de dépôts.
apt-get update met à jour la liste des programmes (appelés paquets ) qui existent.
apt-cache search permet de rechercher dans la liste des paquets.
apt-get install télécharge et installe un paquet.
apt-get upgrade met à jour tous les paquets installés.
apt-get autoremove permet de supprimer un paquet.
230
Chapitre 15
RTFM : lisez le manuel !
Diculté :
Q uand on vient de Windows, on n'a pas trop l'habitude de lire des documentations.
Parfois les logiciels sont livrés avec des modes d'emploi, mais honnêtement, qui ici
prend la peine de les lire ?
Sous Linux, lire la documentation doit devenir un réexe. En eet, bien que cela fasse
un peu peur au premier abord, la documentation est vraiment le meilleur endroit pour en
savoir plus sur les commandes que vous utilisez.
Les livres que j'écris ne pourront jamais rivaliser avec la documentation. Je peux vous mon-
trer les commandes et les paramètres qui me semblent les plus utiles, mais pour connaître
certains paramètres dont vous avez besoin moins souvent, vous n'y couperez pas : vous
aurez besoin de lire la doc. Ce chapitre est justement là pour démystier le manuel
et vous apprendre à le lire. C'est peut-être un des chapitres les plus importants du cours, car
si vous savez lire la doc, vous êtes capables d'apprendre tout ce dont vous avez besoin. . .
et vous pourrez donc tout faire !
231
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
man mkdir
232
MAN : AFFICHER LE MANUEL D'UNE COMMANDE
s'ache page par page, à la manière de less qu'on a vue dans un chapitre précédent.
Si comme moi vous avez ouvert votre manuel dans une console graphique,
vous pouvez aussi utiliser la molette de la souris !
233
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
SEE ALSO : cette section vous propose de voir aussi d'autres commandes en
rapport avec celle que vous êtes en train de regarder. C'est une section parfois inté-
ressante.
Pour faire simple, les trois premières sections sont vraiment les plus importantes (NAME,
SYNOPSIS et DESCRIPTION). Ce sont celles que nous regarderons dans la plupart des
cas et c'est aussi pour cela qu'elles sont au début du manuel. ;-)
Eh mais. . . c'est tout en anglais ! Tout le monde n'est pas un crack en an-
glais. . . comment on fait, nous, si on a du mal à lire l'anglais ?
Vous n'allez peut-être pas apprécier, mais je tiens à vous donner un conseil, le meilleur :
familiarisez-vous avec l'anglais. Si vous voulez travailler dans l'informatique, c'est de
toute façon une langue incontournable ; il est impossible de l'ignorer ou ce serait alors
du pur suicide.
Bon. Malgré tout, il y en a peut-être parmi vous qui ne comptent pas forcément tra-
vailler dans l'informatique mais qui aimeraient éviter d'avoir à apprendre l'anglais pour
se servir de Linux, ce que je peux très bien comprendre. Si l'évocation du mot an-
glais provoque chez vous des éruptions cutanées inexplicables, alors voici une bonne
nouvelle : il existe une version française des pages de manuel !
Vous pouvez l'installer grâce à la commande apt-get qu'on a justement apprise dans
le chapitre précédent comme par hasard 1 :
Dans la suite de ce livre, je considérerai que vous travaillez avec les pages du manuel en
anglais. C'est vraiment ce que je recommande. Utilisez la version française uniquement
1. Rien n'est laissé au hasard, je vous l'ai dit.
2. créer des répertoires parent... Ne sont-ils pas plusieurs, ces répertoires ? Il manque un s
à parent !
234
COMPRENDRE LE SYNOPSIS
si vous ne comprenez rien à l'anglais, sinon faites un petit eort ; je vous assure que ça
vaut le coup.
Je vais donc désinstaller les pages du manuel en français et revenir à la version anglaise
pour la suite de ce chapitre :
Bien, les présentations étant faites, passons à la suite ! Nous allons apprendre à lire la
section SYNOPSIS, une des sections les plus importantes.
Comprendre le SYNOPSIS
Le SYNOPSIS est une des sections les plus importantes mais aussi une des plus diciles
à lire.
Son rôle est de lister toutes les façons possibles d'utiliser la commande. En
clair, le SYNOPSIS vous ache toutes les combinaisons de paramètres que l'on peut
235
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
réaliser avec cette commande. Certains SYNOPSIS sont simples, d'autres plus compli-
qués. Je pense que le mieux est de voir des exemples pour bien comprendre comment
ça fonctionne.
man mkdir
Commençons par le man de mkdir. La section d'introduction du manuel nous dit
mkdir - make directories , ce qui signie que mkdir sert à créer des répertoires.
SYNOPSIS
Pourquoi mkdir est écrit en gras tandis que OPTION et DIRECTORY sont
soulignés ?
Les mots du SYNOPSIS écrits en gras sont des mots à taper tels quels. Les mots soulignés,
eux, doivent être remplacés par le nom approprié.
C'est logique : on doit bel et bien écrire précisément mkdir, par contre on ne doit
pas écrire DIRECTORY mais le nom du répertoire. La présence d'un paramètre souligné
signie donc : Remplacez le mot souligné par un mot qui convient à votre cas .
Exemples d'utilisation
D'après le SYNOPSIS, on doit au minimum écrire le nom du dossier. Par exemple :
236
COMPRENDRE LE SYNOPSIS
mkdir images
Comme on l'a vu, les points de suspension après DIRECTORY nous indiquent qu'on peut
répéter le nom du répertoire autant de fois que l'on veut, ce qui nous permet d'en créer
plusieurs d'un coup. On peut donc aussi utiliser mkdir comme ceci :
. . . ce qui aura pour eet de créer trois dossiers : images, videos et musiques.
Maintenant, on peut aussi préciser des options facultatives. Ces options sont listées
dans la section DESCRIPTION du man juste un peu plus bas :
DESCRIPTION
Create the DIRECTORY(ies), if they do not already exist.
-m, --mode=MODE
set file mode (as in chmod), not a=rwx - umask
-p, --parents
no error if existing, make parent directories as needed
-v, --verbose
print a message for each created directory
-Z, --context=CTX
set the SELinux security context of each created directory to
CTX
--version
output version information and exit
Toutes ces options peuvent être utilisées à la place de [OPTION] dans le SYNOPSIS. Par
exemple, l'option -v (ou --verbose, c'est pareil mais plus long) ache un message
après chaque répertoire créé. On peut donc écrire :
Résultat :
237
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
man cp
Essayons une commande un peu plus complexe : cp. Je vous rappelle que cette com-
mande sert à copier des chiers et des répertoires.
SYNOPSIS
238
COMPRENDRE LE SYNOPSIS
Exemples d'utilisation
Ça fait beaucoup de façons d'utiliser cp, en fait.
Si on se base sur la première ligne, on peut juste écrire :
cp photo.jpg photo_copie.jpg
Comme le chier existait déjà, on m'a demandé conrmation. La dernière ligne est le
résultat du mode verbeux qu'on a demandé.
Bien. Tout ça c'était juste pour la première ligne, dans le cas où l'on veut copier un
chier. Essayons un peu ce que propose la seconde ligne : copier un ou plusieurs chiers
dans un dossier.
cp photo.jpg photo_copie.jpg images/
239
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
DESCRIPTION
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Cette phrase est claire, pour peu que l'on comprenne l'anglais.
Elle signie que l'on peut copier le paramètre appelé SOURCE vers
DEST, ou encore (cas de la seconde ligne) plusieurs chiers SOURCE vers un
répertoire (DIRECTORY).
man apt-get
Plus joyeux encore : le SYNOPSIS de la commande apt-get (gure 15.5).
240
COMPRENDRE LE SYNOPSIS
Vous remarquerez qu'à l'intérieur les mots sont séparés par des barres verticales | .
Ces barres verticales signient OU , ce qui veut dire que vous devez mettre une et
une seule option issue de la liste entre accolades. Parmi ces options possibles, il y en a
que vous devez connaître maintenant, comme :
update : met à jour le cache des paquets disponibles sur votre ordinateur ;
upgrade : met à jour tous les paquets installés si une nouvelle version est disponible ;
install paquet... : installe le ou les paquets demandés. La présence des points de
suspension après paquet signie que vous pouvez indiquer plusieurs paquets à
installer d'un coup ;
etc.
Il y a bien d'autres mots clés utilisables. Pour voir la signication de chacun d'eux, je
vous invite à lire la section DESCRIPTION du man qui sert précisément à expliquer cela.
Exemples d'utilisation
Le SYNOPSIS indique donc qu'on doit choisir une des options entre accolades séparées
par des barres verticales. On peut donc écrire :
Ou encore :
apt-get update
Ou encore :
apt-get autoclean
INTERDIT :
apt-get update install monpaquet
Le SYNOPSIS nous avait bien dit : Utilisez update OU install OU upgrade (OU
...), mais pas deux éléments de cette liste à la fois . Souvenez-vous donc que les
barres verticales signient OU et tout ira bien.
241
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
apropos sound
. . . ce qui va rechercher toutes les commandes qui parlent de son (sound) dans leur
page du manuel.
Résultat :
alsamixer
Et si vous voulez en savoir plus sur la commande alsamixer, vous savez maintenant
comment faire !
242
D'AUTRES FAÇONS DE LIRE LE MANUEL
man alsamixer
Son SYNOPSIS, présenté sur la gure 15.7, est ridiculement simple. Pfeuh ! Même pas
drôle.
apt-get -h
243
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
mateo21@mateo21-desktop:~$ apt-get -h
apt 0.7.9ubuntu15 pour amd64 compilé sur Mar 14 2008 00:00:28
Usage: apt-get [options] command
apt-get [options] install|remove pkg1 [pkg2 ...]
apt-get [options] source pkg1 [pkg2 ...]
Commands:
update - Retrieve new lists of packages
upgrade - Perform an upgrade
install - Install new packages (pkg is libc6 not libc6.deb)
remove - Remove packages
autoremove - Remove all automatic unused packages
purge - Remove and purge packages
source - Download source archives
build-dep - Configure build-dependencies for source packages
dist-upgrade - Distribution upgrade, see apt-get(8)
dselect-upgrade - Follow dselect selections
clean - Erase downloaded archive files
autoclean - Erase old downloaded archive files
244
D'AUTRES FAÇONS DE LIRE LE MANUEL
Options:
-h This help text.
-q Loggable output - no progress indicator
-qq No output except for errors
-d Download only - do NOT install or unpack archives
-s No-act. Perform ordering simulation
-y Assume Yes to all queries and do not prompt
-f Attempt to correct a system with broken dependencies in place
-m Attempt to continue if archives are unlocatable
-u Show a list of upgraded packages as well
-b Build the source package after fetching it
-V Show verbose version numbers
-c=? Read this configuration file
-o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp
See the apt-get(8), sources.list(5) and apt.conf(5) manual
pages for more information and options.
This APT has Super Cow Powers.
Parfois, il n'y a pas de page de manuel pour une commande (man ne fonctionne
pas pour cette dernière) mais le -h ou le --help fonctionne. Pensez-y !
La commande whatis
La commande whatis est une sorte de man très allégé. Elle donne juste l'en-tête du
manuel pour expliquer en deux mots à quoi sert la commande. Par exemple pour mkdir :
whatis mkdir
Ça vous permet d'éviter de sortir l'artillerie lourde juste pour savoir à quoi sert la
commande.
245
CHAPITRE 15. RTFM : LISEZ LE MANUEL !
En résumé
Sous Linux, toutes les commandes et leurs paramètres sont documentés dans le ma-
nuel. Il est recommandé de lire le manuel à chaque fois que vous avez des questions
sur une commande car la réponse s'y trouve la plupart du temps.
On fait appel au manuel avec la commande man suivie du nom de la commande sur
laquelle on veut avoir plus d'informations. Par exemple : man mkdir.
Dans le manuel, on se déplace avec les touches échées ou Page Up et Page Down,
on fait une recherche avec la touche / (slash) et on quitte avec la touche Q.
Le manuel d'une commande commence toujours par son SYNOPSIS : c'est un résumé
des diérentes manières d'utiliser la commande. Les options facultatives sont écrites
entre crochets.
Pour trouver une commande correspondant à un certain usage, utilisez apropos.
Ainsi, apropos sound achera toutes les commandes ayant un rapport avec le son.
246
Chapitre 16
Rechercher des chiers
Diculté :
S ous Linux, les chiers sont organisés d'une façon assez particulière. Nous l'avons vu en
achant la liste des répertoires à la racine avec un ls /, il y a une foule de dossiers
aux noms assez variés : var, opt, etc, bin, dev. . .
Une partie de ces répertoires est là pour des raisons historiques, depuis l'époque d'Unix. Le
problème, c'est qu'il peut être dicile de retrouver le chier dont on a besoin dans cette
foule de répertoires.
Pas de panique ! On dispose heureusement sous Linux d'outils très puissants pour rechercher
un chier sur le disque dur. Certains d'entre eux sont très rapides, d'autres plus lents mais
aussi plus complets.
Partons à la recherche de ces chiers !
247
CHAPITRE 16. RECHERCHER DES FICHIERS
Utiliser locate
Son utilisation est intuitive, il sut d'indiquer le nom du chier que vous voulez re-
trouver. Par exemple :
La commande a retrouvé notre chier notes.txt qui était situé dans /home/mateo21.
Essayons maintenant de retrouver ces vieilles photos d'Australie. . .
locate vous donne tous les chiers qui contiennent le mot australie dans leur nom.
Que ce soient des chiers ou des dossiers, elle ne fait pas la diérence. Elle vous donne
la liste complète des chiers qu'elle a trouvés.
Il existe aussi la commande slocate qui est un peu plus récente, mais on ne
la retrouve pas sur toutes les distributions par défaut. Vous pouvez toutefois
l'installer rapidement avec un apt-get si vous ne l'avez pas. La commande
slocate est identique à locate, à la diérence près qu'elle vérie les droits
des chiers avant de les lister. Avec slocate, un utilisateur ne pourra donc
pas voir un nom de chier apparaître s'il n'a pas le droit de le lire, tandis
qu'avec un locate le nom du chier serait apparu dans les résultats quand
même.
C'est justement le défaut de locate dont je voulais vous parler : la commande ne fait
pas la recherche sur votre disque dur entier, mais seulement sur une base de données
de vos chiers (gure 16.1).
248
FIND : UNE RECHERCHE APPROFONDIE
Votre problème, c'est que les chiers viennent tout juste d'être créés et n'ont pas encore
été répertoriés dans la base de données. Ils ne seront donc pas découverts par locate.
Une fois par jour, votre système mettra à jour la base de données. Donc, si vous
réessayez demain, il est probable que locate trouve enn votre chier.
sudo updatedb
La mise à jour de la liste des chiers peut être un peu longue, il faudra patienter. Une
fois que c'est ni, réessayez de faire un locate, il devrait maintenant trouver votre
chier.
En résumé, locate est pratique car rapide et facile à utiliser. Cependant, locate donne
parfois trop de résultats car elle recherche dans tous les répertoires du disque dur, elle
n'est donc pas très précise. De plus, les chiers qui viennent tout juste d'être créés ne
seront pas découverts, à moins d'exécuter updatedb.
Quand locate ne sut pas, on a besoin d'une commande plus puissante. On sort
l'artillerie lourde : find.
249
CHAPITRE 16. RECHERCHER DES FICHIERS
Avec cette méthode de recherche, vous ne risquez pas de rater un chier récent qui
aurait pu être créé aujourd'hui. Et ce n'est pas le seul avantage, loin de là !
250
FIND : UNE RECHERCHE APPROFONDIE
Le -name "logo.png" est un paramètre qui demande de retrouver un chier qui s'ap-
pelle très exactement logo.png.
Voici le résultat :
Si la recherche n'ache rien, cela signie qu'aucun chier n'a été trouvé.
Comme nous n'avons pas précisé où rechercher, find a cherché dans le ré-
pertoire dans lequel nous nous trouvions et dans ses sous-répertoires. Le ~ de
l'invite de commandes signie que j'étais dans mon home, c'est-à-dire dans
/home/mateo21/. Tous les sous-répertoires ont été analysés.
Maintenant, si je suis dans mon home mais que je veux rechercher dans un autre
répertoire, il faudra préciser en premier paramètre le répertoire dans lequel chercher.
Par exemple, si je veux retrouver tous les chiers qui s'appellent syslog situés dans
/var/log (et ses sous-répertoires), je dois écrire :
Essayons ça !
Les paramètres correspondent à ceux que je vous ai présentés un peu plus tôt :
251
CHAPITRE 16. RECHERCHER DES FICHIERS
Ici, nous avons aché tous les chiers qui commençaient par syslog .
Si on avait voulu avoir la liste des chiers qui se terminent par syslog , on aurait
écrit "*syslog". De même, si on avait voulu avoir la liste des chiers qui contiennent
syslog , que ce soit au début, au milieu ou à la n, on aurait écrit "*syslog*".
L'étoile est donc un joker qui signie il peut y avoir n'importe quel caractère à cet
endroit .
Facile, il sut d'indiquer le répertoire racine /. Je vous rappelle que sous Linux, tous
les dossiers sont situés dans un sous-niveau de /. C'est un petit peu l'équivalent du C:
sous Windows.
252
FIND : UNE RECHERCHE APPROFONDIE
Au lieu de se baser sur le nom, on se base ici sur la taille (-size). Le +10M indique que
l'on recherche des chiers de plus de 10 Mo. On peut aussi utiliser k pour les Ko, G pour
les Go, etc. Vous pouvez aussi utiliser un moins - à la place du + pour obtenir
par exemple les chiers de moins de 10 Mo. Et si vous enlevez le + , la commande
cherchera des chiers de 10 Mo exactement (ni plus, ni moins).
J'ai combiné ici une recherche par le nom avec une recherche par la date. Si je ne me
souvenais même plus de l'extension du chier, j'aurais dû utiliser seulement -atime,
mais ça m'aurait probablement donné beaucoup de chiers (en fait, tous les chiers
modiés depuis 7 jours dans mon répertoire personnel !).
Là encore, vous pouvez utiliser un + à la place. . . ou même enlever le signe pour
rechercher un chier auquel on aurait accédé il y a exactement 7 jours.
253
CHAPITRE 16. RECHERCHER DES FICHIERS
. . . est équivalent à :
-print signie acher les résultats trouvés . Si le -print n'est pas écrit, la com-
mande comprend toute seule qu'elle doit acher la liste des chiers.
On peut cependant remplacer ce -print par d'autres paramètres.
254
FIND : UNE RECHERCHE APPROFONDIE
Je vous conseille fortement de lire la doc', à la section -printf (faites une recherche).
Direction : man find ! Vous y trouverez tous les éléments utilisables avec -printf, en
plus du %p et du %u.
Soyez bien sûrs de ce que vous faites ! Il n'y aura pas de conrmation !
Pour chaque chier .jpg trouvé, on exécute la commande qui suit -exec :
cette commande ne doit PAS être entre guillemets ;
les accolades {} seront remplacées par le nom du chier ;
la commande doit nir par un \; obligatoirement.
C'est un peu compliqué au premier abord, mais c'est très puissant ! Vous pouvez faire
ce que vous voulez avec ça.
Exercice : essayez de regrouper tous les chiers .jpg éparpillés dans votre répertoire
home dans un dossier images.
255
CHAPITRE 16. RECHERCHER DES FICHIERS
En résumé
Pour rechercher un chier sur tout le disque, la commande locate est très rapide
mais ne trouvera pas les chiers qui viennent d'être créés dans la journée. On peut
mettre à jour la liste des chiers qu'elle connaît en appelant updatedb.
find est une commande plus puissante mais plus lente qui va parcourir votre disque
à la recherche de vos chiers. Elle peut s'utiliser avec trois paramètres, dans l'ordre :
où chercher, que chercher et que faire avec.
On peut rechercher des chiers en fonction de leur nom (-name), de leur taille
(-size), de leur date de dernier accès (-atime). . .
Au lieu d'acher les chiers trouvés, on peut automatiquement les supprimer avec
-delete ou exécuter la commande de son choix sur chacun d'eux avec -exec.
256
Troisième partie
Contrôler les processus et les
ux de données
257
Chapitre 17
Extraire, trier et ltrer des données
Diculté :
C omme vous le savez déjà, la plupart des commandes de Linux sont basées sur le
modèle du système d'exploitation Unix. Ce sont les mêmes. Certaines s'utilisent de la
même manière depuis les années 60 ! Avantage pour les informaticiens : pas besoin de
réapprendre à utiliser les mêmes commandes tous les trois mois.
Mais la question que vous devez vous poser est la suivante : comment se fait-il que la
plupart de ces commandes n'aient pas changé depuis si longtemps ? La réponse vient du
fait qu'elles n'ont pas eu besoin de changer. En eet, la plupart des commandes que vous
découvrez sont très basiques : elles accomplissent une tâche et le font bien, mais pas plus.
Ce sont les briques de base du système.
Dans ce chapitre, nous allons découvrir une série de commandes basiques qui permettent
d'extraire, trier et ltrer des données dans des chiers. Vous utiliserez certaines d'entre elles
(comme grep) presque tous les jours !
259
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
Le premier paramètre est le texte à rechercher, le second est le nom du chier dans
lequel ce texte doit être recherché.
Essayons par exemple de rechercher le mot alias dans notre chier de congura-
tion .bashrc. Rendez-vous dans votre répertoire personnel (en tapant cd) et lancez la
commande suivante :
1. Vous pouvez aussi retrouver l'essentiel dans le tutoriel correspondant sur le Site du Zéro (code
web : 707921).
260
GREP : FILTRER DES DONNÉES
Pas mal, n'est-ce pas ? Comme vous pouvez le voir, grep est davantage un outil de
ltre qu'un outil de recherche. Son objectif est de vous acher uniquement les lignes
qui contiennent le mot que vous avez demandé.
Notez qu'il n'est pas nécessaire de mettre des guillemets autour du mot à trouver, sauf
si vous recherchez une suite de plusieurs mots séparés par des espaces, comme ceci :
# Alias definitions.
# ~/.bash_aliases, instead of adding them here directly.
#if [ -f ~/.bash_aliases ]; then
# . ~/.bash_aliases
# enable color support of ls and also add handy aliases
alias ls='ls --color=auto'
#alias dir='ls --color=auto --format=vertical'
#alias vdir='ls --color=auto --format=long'
# some more ls aliases
alias ll='ls -lArth'
#alias la='ls -A'
#alias l='ls -CF'
On notera que la première ligne renvoyée (ici surlignée) n'était pas présente tout à
l'heure car le mot Alias contenait une majuscule. Avec l'option -i on peut désormais
la voir.
261
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
Cette fois, on récupère toutes les lignes du chier .bashrc qui ne contiennent pas le
mot alias .
262
GREP : FILTRER DES DONNÉES
. . . recherchera la chaîne Site du Zéro dans tous les chiers du répertoire code, y
compris dans les sous-dossiers.
Cette fois, le nom du chier dans lequel la chaîne a été trouvée s'ache au début de la
ligne.
À noter qu'il existe aussi la commande rgrep qui est équivalente à grep -r.
C'est normal. Pour bien faire, il faudrait un ou deux chapitres entiers sur les expres-
sions régulières. Je n'ai pas vraiment la place ici pour faire un minicours sur les
263
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
expressions régulières, je vous propose donc de jeter un ÷il à ces quelques lignes pour
apprendre par l'exemple.
Tout d'abord, il faut savoir qu'on doit utiliser l'option -E pour faire comprendre à grep
que l'on utilise une expression régulière.
# Alias definitions.
Notez que vous pouvez aussi utiliser la commande egrep qui équivaut à écrire
grep -E.
C'est une expression régulière très simple. Elle demande de rechercher le mot Alias
(avec un A majuscule). Si le mot est présent dans une ligne, cette dernière est renvoyée.
Bon, jusque-là, rien de nouveau ; ça fonctionnait comme ça avant qu'on utilise les
expressions régulières. Essayons de pimenter cela en faisant précéder Alias d'un
accent circonexe qui signie que le mot doit être placé au début de la ligne :
Résultat : grep ne renvoie rien. En eet, la ligne de tout à l'heure commençait par un
# et non pas par Alias .
En revanche, on a un résultat si on fait ceci :
264
SORT : TRIER LES LIGNES
Cette fois, la ligne commençait bien par alias . De même, on aurait pu utiliser un $
à la n pour demander à ce que la ligne se termine par alias .
Quelques autres exemples que vous pouvez tester :
. . . renvoie toutes les lignes qui contiennent un caractère alphabétique compris entre
a et z ou entre A et Z . Je vous ai fait là une introduction très rapide
mais il y aurait beaucoup à dire. Si vous voulez en savoir plus sur les expressions
régulières, vous trouverez dans mon livre PHP 2 ou sur le Site du Zéro des explications
plus complètes.
265
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
François
Marcel
Albert
Jean
Stéphane
patrice
Vincent
jonathan
B
Liste de noms
Code web : 707921
Ensuite, exécutez la commande sort sur ce chier :
$ sort noms.txt
Albert
François
Jean
jonathan
Marcel
patrice
Stéphane
Vincent
Le contenu du chier est trié alphabétiquement et le résultat est aché dans la console.
Vous noterez que sort ne fait pas attention à la casse (majuscules / minuscules).
$ sort -r noms.txt
266
SORT : TRIER LES LIGNES
Vincent
Stéphane
patrice
Marcel
jonathan
Jean
François
Albert
-R : trier aléatoirement
Cette option permet de trier aléatoirement les lignes d'un chier. C'est assez amusant
et ça peut se révéler utile dans certains cas :
$ sort -R noms.txt
patrice
François
Marcel
jonathan
Jean
Albert
Vincent
Stéphane
36
16
42
129
27
364
B
Liste de nombres
Code web : 897818
Triez-les comme vous avez appris à le faire :
267
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
$ sort nombres.txt
129
16
27
36
364
42
Alphabétiquement, ces nombres sont bien triés. Tout ce qui commence par 1 est en
premier, puis vient ce qui commence par 2 et ainsi de suite. Bien sûr, quand on veut
trier des nombres, c'est n'importe quoi.
C'est là que l'option -n intervient. Elle permet de trier en considérant le texte comme
des nombres. Cette fois, le nombre 42 sera bien placé avant 129 !
$ sort -n nombres.txt
16
27
36
42
129
364
Magique. ;-)
$ wc noms.txt
8 8 64 noms.txt
268
WC : COMPTER LE NOMBRE DE LIGNES
3. le nombre d'octets.
Il fallait le savoir !
Dans le cas de notre chier noms.txt, il est normal d'avoir autant de lignes
que de mots car nous avions mis un seul mot par ligne.
$ wc -l noms.txt
8 noms.txt
$ wc -w noms.txt
8 noms.txt
$ wc -c noms.txt
64 noms.txt
$ wc -m noms.txt
62 noms.txt
Comme vous pouvez le voir, le nombre de caractères est diérent du nombre d'octets.
269
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
Albert
François
François
François
Jean
jonathan
Marcel
Marcel
patrice
Stéphane
Vincent
B
Liste avec doublons
Code web : 719552
Il y a des noms en double (et même en triple) dans ce chier. Appliquons un petit coup
de uniq là-dessus pour voir ce qu'il en reste :
$ uniq doublons.txt
Albert
François
Jean
jonathan
Marcel
patrice
Stéphane
Vincent
270
CUT : COUPER UNE PARTIE DU FICHIER
$ uniq -c doublons.txt
1 Albert
3 François
1 Jean
1 jonathan
2 Marcel
1 patrice
1 Stéphane
1 Vincent
On sait ainsi qu'il y a trois fois François , une fois Jean , deux fois Marcel ,
etc.
$ uniq -d doublons.txt
François
Marcel
Comme seuls François et Marcel avaient des doublons, on les voit ici s'acher dans la
console.
Comme pour les autres commandes présentées dans ce chapitre, je ne vous ai
pas fait la liste de toutes les options disponibles. J'ai choisi de vous présenter
celles qui me paraissaient les plus intéressantes ou les plus utiles, mais c'est
tout à fait subjectif. Ayez le réexe d'aller regarder le manuel (man uniq par
exemple) pour connaître la liste exhaustive des options de la commande.
271
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
ran
arce
lber
ean
tép
atri
ince
onat
cut a quelques soucis avec les mots contenant des accents. Comme vous
pouvez le voir, certains mots ici coupés ont quatre lettres (comme prévu)
alors que d'autres en ont trois. Ceci est dû à l'encodage des caractères, aux
accents. La commande cut se base sur le nombre d'octets, et comme nous
l'avons vu plus tôt, celui-ci n'est pas forcément égal au nombre de caractères.
À l'heure actuelle on ne peut rien y faire, c'est la commande cut qui devra
être mise à jour par les programmeurs.
$ cut -c -3 noms.txt
Fra
Mar
Alb
Jea
St
pat
Vin
jon
Comme vous pouvez le voir, si on ne met pas de chire au début, cut comprend que
vous voulez parler du premier caractère.
De même, pour conserver du 3e au dernier caractère :
$ cut -c 3- noms.txt
ançois
rcel
272
CUT : COUPER UNE PARTIE DU FICHIER
bert
an
éphane
trice
ncent
nathan
B
Notes en CSV
Code web : 172591
Comme le nom CSV l'indique, les virgules servent à séparer les colonnes. Ces dernières
contiennent, dans l'ordre :
le prénom ;
la note ;
un commentaire.
C'est un exemple tout à fait ctif, bien entendu. ;-)
Créez, avec le texte que je viens de vous donner, un nouveau chier que vous appellerez
par exemple notes.csv.
3. Ce serait un peu ennuyeux de compter à chaque fois, avouez.
4. Comma Separated Values. Ce sont des chiers dont les valeurs sont séparées par des virgules.
Notez qu'Excel utilise plutôt le point-virgule comme séparateur, mais le principe reste le même.
273
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
Imaginons que nous souhaitions extraire de ce chier la liste des prénoms. Comment
nous y prendrions-nous ? On ne peut pas utiliser la technique qu'on vient d'apprendre
car les prénoms ne font pas tous la même longueur. Nous allons donc nous servir du
fait que nous savons que la virgule sépare les diérents champs dans ce chier.
Vous allez avoir besoin d'utiliser deux paramètres :
-d : indique quel est le délimiteur dans le chier ;
-f : indique le numéro du ou des champs à couper.
Dans notre cas, le délimiteur qui sépare les champs est la virgule. Le numéro du champ
à couper est 1 (c'est le premier).
Testez donc ceci :
$ cut -d , -f 1 notes.csv
Fabrice
Vincent
Sophie
Mélanie
Corentin
Albert
Benoît
$ cut -d , -f 3 notes.csv
Excellent travail
Nul comme d'hab
En nette progression
Allez presque la moyenne !
Pas mal mais peut mieux faire
Toujours parfait
En grave chute
Fabrice,Excellent travail
Vincent,Nul comme d'hab
Sophie,En nette progression
Mélanie,Allez presque la moyenne !
274
CUT : COUPER UNE PARTIE DU FICHIER
De même, il est possible de conserver toute une série de champs avec le tiret
comme tout à l'heure : cut -d , -f 2-4 notes.csv a pour eet de conser-
ver les champs nos 2, 3 et 4. D'autre part, cut -d , -f 3- notes.csv
conserve les champs du no 3 jusqu'à la n.
Vous êtes bien obligés d'admettre que, quand on sait bien s'en servir, la console de
Linux peut vous permettre d'eectuer des opérations vraiment puissantes que vous ne
pensiez même pas pouvoir faire aussi simplement jusqu'à présent. ;-)
En résumé
grep est une commande couramment utilisée pour rechercher un mot dans un chier.
On peut utiliser des expressions régulières, un système complexe mais puissant, pour
eectuer des recherches précises. On fait dans ce cas appel à la commande egrep.
sort trie des lignes de texte par ordre alphabétique. Le paramètre -n permet de trier
par ordre numérique.
wc compte le nombre de lignes, de mots et d'octets dans un chier.
uniq supprime les doublons d'un chier.
cut coupe une partie d'un chier.
275
CHAPITRE 17. EXTRAIRE, TRIER ET FILTRER DES DONNÉES
276
Chapitre 18
Les ux de redirection
Diculté :
V ous devriez maintenant avoir l'habitude d'un certain nombre de commandes que pro-
pose la console de Linux. Le fonctionnement est toujours le même :
1. vous tapez la commande (par exemple ls) ;
2. le résultat s'ache dans la console.
Ce que vous ne savez pas encore, c'est qu'il est possible de rediriger ce résultat. Au lieu
que celui-ci s'ache dans la console, vous allez pouvoir l'envoyer ailleurs : dans un chier
ou en entrée d'une autre commande pour eectuer des chaînes de commandes .
Grâce à ce chapitre sur les ux de redirection, vous allez beaucoup gagner en maîtrise de
la ligne de commandes !
277
CHAPITRE 18. LES FLUX DE REDIRECTION
Dans ce chapitre, nous allons découvrir qu'il est possible de rediriger le résultat d'une
commande ailleurs que dans la console.
Où ? Dans un chier, ou en entrée d'une autre commande pour chaîner des com-
mandes . Ainsi, le résultat d'une commande peut en déclencher une autre !
Comment ? À l'aide de petits symboles spéciaux, appelés ux de redirection, que vous
allez découvrir dans ce chapitre.
Le principe peut être résumé dans le schéma de la gure 18.1.
Jusqu'ici, nous n'avons donc exploité que la première possibilité (celle par défaut) :
acher le résultat dans la console. Il nous reste donc bien d'autres techniques à décou-
vrir !
Les ux de redirection constituent une composante essentielle de la console
sous Linux et ce, depuis l'époque d'Unix. Ils vont très certainement changer
votre façon de voir comment la console fonctionne et démultiplier votre
contrôle sur les commandes que vous lancez. C'est dire si ce chapitre est
important !
Je vais donc d'abord vous demander d'être encore plus attentifs que d'habitude. Non
pas que le chapitre soit réellement compliqué , mais il doit bien être compris pour
que vous puissiez suivre le reste du livre convenablement. Au pire des cas, vous pourrez
toujours revenir lire ce chapitre si vous avez un trou de mémoire sur les notions que
vous y avez apprises. ;-)
278
> ET >> : REDIRIGER LE RÉSULTAT DANS UN FICHIER
Préparatifs
Prenons une commande au hasard. Vous vous souvenez de cut, que nous avons appris
dans le chapitre précédent ?
Nous avions travaillé sur un petit chier de type CSV que les tableurs peuvent
générer. Ce sont les notes des élèves d'une classe à un contrôle :
Si vous ne l'aviez pas déjà fait dans le chapitre précédent, je vous recommande
d'enregistrer ce chier dans un éditeur de texte (comme Nano) en récupérant
le contenu ci-dessus à l'aide du code web. Enregistrez le tout sous le nom
notes.csv.
La commande cut nous avait permis de couper une partie du chier et d'acher
le résultat dans la console. Par exemple, nous avions demandé à cut de prendre tout
ce qui se trouvait avant la première virgule an d'avoir la liste des noms de tous les
élèves présents à ce contrôle :
$ cut -d , -f 1 notes.csv
Fabrice
Vincent
Sophie
Mélanie
Corentin
Albert
Benoît
Ce résultat s'est aché dans la console. C'est ce que font toutes les commandes par
défaut. . . à moins que l'on utilise un ux de redirection !
279
CHAPITRE 18. LES FLUX DE REDIRECTION
le petit symbole magique > (appelé chevron) que je vous laisse trouver sur votre
clavier 1 .
Ce symbole permet de rediriger le résultat de la commande dans le chier de votre
choix. Essayez par exemple de taper ceci :
Regardez la n de la commande. J'y ai rajouté la petite èche > qui redirige la sortie de
la commande dans un chier. Normalement, si vous exécutez cette commande, rien ne
s'achera dans la console. Tout aura été redirigé dans un chier appelé eleves.txt
qui vient d'être créé pour l'occasion dans le dossier dans lequel vous vous trouviez.
$ ls -l
total 20
-rw-r--r-- 1 mateo21 mateo21 91 2008-04-19 19:36 doublons.txt
-rw-r--r-- 1 mateo21 mateo21 56 2008-09-26 12:01 eleves.txt
-rw-r--r-- 1 mateo21 mateo21 35 2008-04-19 17:06 fichier_trie.txt
-rw-r--r-- 1 mateo21 mateo21 20 2008-04-19 19:03 nombres.txt
-rw-r--r-- 1 mateo21 mateo21 253 2008-09-26 12:01 notes.csv
Comme vous pouvez le voir, un chier vient bien d'être créé ! Vous pouvez l'ouvrir avec
Nano ou encore l'acher dans la console avec la commande cat (pour acher tout
d'un coup s'il est court) ou less (pour acher page par page s'il est long).
280
> ET >> : REDIRIGER LE RÉSULTAT DANS UN FICHIER
$ cat eleves.txt
Fabrice
Mathieu
Sophie
Mélanie
Corentin
Albert
Benoît
Fabrice
Mathieu
Sophie
Mélanie
Corentin
Albert
Benoît
Heureusement, vous connaissez les commandes sort et uniq qui peuvent vous per-
mettre de faire un peu de ménage là-dedans. Je vous laisse supprimer les doublons.
N'oubliez pas qu'il faut que le chier soit trié pour que la commande uniq fonctionne !
281
CHAPITRE 18. LES FLUX DE REDIRECTION
Grâce à ça, si j'ai un doute sur ce qui a pu se passer lors de l'exécution d'une commande,
je n'ai qu'à consulter le chier resultats.log.
Résumé
Nous venons de découvrir deux ux de redirection dans des chiers :
> : redirige dans un chier et l'écrase s'il existe déjà ;
>> : redirige à la n d'un chier et le crée s'il n'existe pas.
Le schéma de la gure 18.2 récapitule ce que nous venons de voir.
282
2>, 2>> ET 2>&1 : REDIRIGER LES ERREURS
Notez qu'il est aussi possible d'utiliser 2>> pour ajouter les erreurs à la n
du chier.
283
CHAPITRE 18. LES FLUX DE REDIRECTION
Il faut utiliser le code suivant : 2>&1. Cela a pour eet de rediriger toute la sortie
d'erreurs dans la sortie standard. Traduction pour l'ordinateur : envoie les erreurs au
même endroit que le reste .
Essayez donc ceci :
Tout ira désormais dans eleves.txt : le résultat (si cela a fonctionné), de même que
les erreurs (s'il y a eu un problème).
Petite subtilité : je vous ai dit tout à l'heure qu'il était possible de faire 2>> pour
rediriger les erreurs à la n d'un chier d'erreurs. Toutefois, il n'est pas possible d'écrire
2>>&1. Essayez, ça ne marchera pas.
En fait, le symbole 2>&1 va envoyer les erreurs dans le même chier et de la même
façon que la sortie standard. Donc, si vous écrivez :
Résumé
Nous avons découvert trois symboles :
2> : redirige les erreurs dans un chier (s'il existe déjà, il sera écrasé) ;
2>> : redirige les erreurs à la n d'un chier (s'il n'existe pas, il sera créé) ;
2>&1 : redirige les erreurs au même endroit et de la même façon que la sortie standard.
Le tout est illustré sur la gure 18.4.
284
< ET << : LIRE DEPUIS UN FICHIER OU LE CLAVIER
285
CHAPITRE 18. LES FLUX DE REDIRECTION
Si. Écrire cat < notes.csv est strictement identique au fait d'écrire cat notes.csv. . .
du moins en apparence. Le résultat produit est le même, mais ce qui se passe derrière
est très diérent.
Si vous écrivez cat notes.csv, la commande cat reçoit en entrée le nom du chier
notes.csv qu'elle doit ensuite se charger d'ouvrir pour acher son contenu.
Si vous écrivez cat < notes.csv, la commande cat reçoit le contenu de notes.csv
qu'elle se contente simplement d'acher dans la console. C'est le shell (le programme
qui gère la console) qui se charge d'envoyer le contenu de notes.csv à la commande
cat.
Bref, ce sont deux façons de faire la même chose mais de manière très diérente.
Pour le moment, je n'ai pas d'exemple plus intéressant à vous proposer à ce sujet, mais
retenez cette possibilité car vous nirez par en avoir besoin, faites-moi conance. ;-)
Comme sort -n sert à trier des nombres, on va justement écrire des nombres, un par
ligne (en appuyant sur la touche Entrée à chaque fois).
286
< ET << : LIRE DEPUIS UN FICHIER OU LE CLAVIER
Lorsque vous avez ni, tapez FIN pour arrêter la saisie. Tout le texte que vous avez
écrit est alors envoyé à la commande (ici sort) qui traite cela en entrée. Et, comme
vous pouvez vous en douter, la commande sort nous trie nos nombres !
Sympa, non ? Cela vous évite d'avoir à créer un chier si vous n'en avez pas besoin.
Vous pouvez faire la même chose avec une autre commande, comme par exemple wc
pour compter le nombre de mots ou de caractères.
$ wc -m << FIN
> Combien de caractères dans cette phrase ?
> FIN
42
Non, vous pouvez le remplacer par ce que vous voulez. Lorsque vous tapez la commande,
vous pouvez utiliser le mot que vous voulez. Par exemple :
$ wc -m << STOP
> Combien de caractères dans cette phrase ?
> STOP
42
287
CHAPITRE 18. LES FLUX DE REDIRECTION
Ce qui compte, c'est que vous dénissiez un mot-clé qui servira à indiquer la n de la
saisie. Notez par ailleurs que rien ne vous oblige à écrire ce mot en majuscules.
Résumé
Nous pouvons donc alimenter des commandes de deux manières diérentes, comme
le montre la gure 18.6 :
< : envoie le contenu d'un chier à une commande ;
<< : passe la console en mode saisie au clavier, ligne par ligne. Toutes ces lignes seront
envoyées à la commande lorsque le mot-clé de n aura été écrit.
Les nombres saisis au clavier seront envoyés à nombres_tries.txt, de même que les
erreurs éventuelles.
Hé, mine de rien, on commence à rédiger là des commandes assez complexes ! Mais
vous allez voir, on peut faire encore mieux.
288
| : CHAÎNER LES COMMANDES
La théorie
Chaîner des commandes ? Cela signie connecter la sortie d'une commande à l'en-
trée d'une autre commande (comme le montre la gure 18.7).
La pratique
Voyons quelques cas concrets (on pourrait trouver une innité d'exemples).
289
CHAPITRE 18. LES FLUX DE REDIRECTION
Avec cut, on peut récupérer les noms. Avec sort, on peut les trier par ordre alphabé-
tique. Pourquoi ne pas connecter cut à sort pour avoir la liste des noms triés ?
Le pipe eectue la connexion entre la sortie de cut (des noms dans le désordre) et
l'entrée de sort, comme l'illustre la gure 18.8.
On peut même aller plus loin et écrire cette liste triée dans un chier :
cut -d , -f 1 notes.csv | sort > noms_tries.txt
$ du
4 ./.gnome2_private
40 ./.local/share/Trash/files
4 ./.local/share/Trash/info
12 ./.local/share/Trash
160 ./.local/share
20 ./.local
...
Deux problèmes : cette liste est parfois très longue et n'est pas triée.
290
| : CHAÎNER LES COMMANDES
Un problème à la fois. Tout d'abord, on aimerait par exemple avoir cette même liste
dans l'ordre décroissant de taille des répertoires pour repérer plus facilement les plus
gros d'entre eux qui prennent de la place sur notre disque.
Pour avoir cette liste du plus grand au plus petit, il nous sut d'écrire :
du | sort -nr
On envoie tout le contenu de du à sort qui se charge de trier les nombres au début de
chacune des lignes.
$ du | sort -nr
...
4 ./.evolution/memos/config
4 ./.evolution/calendar/config
4 ./.evolution/cache
4 ./bin
Problème : comme les plus gros répertoires ont été achés en premier, et que j'ai
beaucoup de sous-répertoires, je dois remonter très haut dans la console pour retrouver
les plus gros d'entre eux.
Que diriez-vous de connecter cette sortie à head ? Cette commande permet de ltrer
uniquement les premières lignes qu'elle reçoit, nous l'avons déjà étudiée dans un cha-
pitre précédent.
Vous pouvez paramétrer le nombre de résultats achés avec l'option -n de head. Si vous
avez oublié comment l'utiliser, retournez lire le cours sur head, page 162 ou consultez
le manuel.
Si vous voulez naviguer à travers tous les résultats, vous pouvez connecter la sortie
à less. Cette commande permet d'acher des résultats page par page ; ça nous est
justement utile dans le cas présent où nous avons beaucoup de résultats !
291
CHAPITRE 18. LES FLUX DE REDIRECTION
Essayez ! Vous allez vous retrouver avec un achage de less, page par page.
120920 .
59868 ./.ies4linux
43108 ./.ies4linux/ie6
41360 ./.ies4linux/ie6/drive_c
41248 ./.ies4linux/ie6/drive_c/windows
40140 ./Desktop
34592 ./.ies4linux/ie6/drive_c/windows/system32
16728 ./.ies4linux/downloads
13128 ./.mozilla
13124 ./.mozilla/firefox
13112 ./.mozilla/firefox/v5p4a55d.default
12604 ./.ies4linux/downloads/ie6
11808 ./.ies4linux/downloads/ie6/FR
5848 ./.mozilla/firefox/v5p4a55d.default/Cache
3656 ./.ies4linux/ie6/drive_c/windows/profiles
3616 ./.ies4linux/ie6/drive_c/windows/profiles/mateo21
3496 ./.ies4linux/ie6/drive_c/windows/profiles/mateo21/Local Settings
3416 ./.ies4linux/ie6/drive_c/windows/profiles/mateo21/
,→ Local Settings/Temporary Internet Files
3408 ./.ies4linux/ie6/drive_c/windows/profiles/mateo21/
,→ Local Settings/Temporary Internet Files/Content.IE5
2220 ./.ies4linux/ie6/drive_c/windows/fonts
2012 ./ies4linux-2.99.0.1
:
Vous pouvez maintenant voir les premiers chiers (les plus gros) et descendre progres-
sivement vers les chiers plus petits, page par page avec la touche Espace ou ligne par
ligne, avec la touche Entrée (ou les èches du clavier).
Exercice : peut-être avez-vous toujours trop de répertoires sous les yeux et que vous
vous intéressez seulement à certains d'entre eux. Pourquoi ne pas ltrer les résultats
avec grep, pour acher uniquement la taille des répertoires liés à. . . Firefox par
exemple ?
292
| : CHAÎNER LES COMMANDES
293
CHAPITRE 18. LES FLUX DE REDIRECTION
/var/log/Xorg.0.log
/var/log/Xorg.0.log.old
/var/log/Xorg.20.log
/var/log/Xorg.20.log.old
/var/log/Xorg.21.log
Résumé
Le résumé est simple, et c'est dans sa simplicité qu'il tire toute sa beauté et sa puis-
sance 2 , comme l'illustre la gure 18.9.
Les espaces avant et après le pipe ne sont en général pas obligatoires, mais
je préfère les mettre ici pour une meilleure lisibilité.
En résumé
Au lieu d'acher le résultat d'une commande dans une console, il est possible de
l'enregistrer dans un chier. Il sut d'ajouter le symbole > suivi du nom du chier
à la n de la commande. Par exemple ls > liste_fichiers.txt enregistre la liste
des chiers dans un chier plutôt que de l'acher en console.
Le symbole >> enregistre à la n du chier au lieu de l'écraser s'il existe déjà.
Les symboles 2> et 2>> permettent de rediriger seulement les erreurs dans un chier.
Quant à 2>&1 il redirige les erreurs dans le même chier que les messages normaux.
< permet de lire des données depuis un chier et de les envoyer à une commande,
tandis que << lit les données depuis le clavier.
Le symbole | combine des commandes : les données de la commande à sa gauche
sont envoyées à la commande à sa droite. Ainsi, du | sort -nr récupère la liste des
chiers avec leur taille et l'envoie à sort pour qu'il la trie.
294
Chapitre 19
Surveiller l'activité du système
Diculté :
C omme tous les OS actuels, Linux est un système multi-tâches : il est capable de gérer
plusieurs programmes tournant en même temps. Mieux encore, Linux est un système
multi-utilisateurs : plusieurs personnes peuvent utiliser la même machine en même
temps (en s'y connectant via Internet).
Tous ces programmes et ces personnes qui sont sur votre PC peuvent vite donner le tournis.
Parfois, l'ordinateur peut se retrouver surchargé à cause d'un programme. Qui a lancé ce
programme ? Depuis quand ? Comment arrêter un programme qui ne répond plus ?
Sous Windows, vous avez probablement entendu parler de la commande magique Ctrl
+ Alt + Suppr qui peut parfois vous sortir de bien des situations embarrassantes. Sous
Linux, on utilise d'autres outils et d'autres techniques que vous allez apprendre à connaître
ici.
295
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
Si vous utilisez Linux sur votre ordinateur personnel, tranquillement chez vous,
vous êtes seuls à l'utiliser en ce moment. Pour que d'autres personnes puissent
se connecter à votre ordinateur via Internet, il faut avoir conguré Linux pour
ça. Nous verrons comment faire cela plus tard. On en a principalement besoin
sur les serveurs.
Essayons d'utiliser w pour voir comment ça marche ; n'ayez pas peur, c'est sans danger :
$ w
16:50:30 up 8:50, 2 users, load average: 0,08, 0,34, 0,31
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
mateo21 :0 - 19Apr08 ?xdm? 3:38m 1.18s /usr/bin/gnome-
mateo21 pts/0 :0.0 16:49 0.00s 0.33s 0.03s w
Bon : à première vue, c'est court mais dense, ça n'a pas l'air très clair.
Pourtant, cette commande nous donne un condensé d'informations très utiles que je
vais vous présenter dans l'ordre, de gauche à droite et de haut en bas.
$ date
samedi 16 octobre 2010, 17:26:27 (UTC+0200)
296
W : QUI FAIT QUOI ?
En soi, cette information n'a pas l'air très utile mais elle permet quand même de savoir
depuis combien de temps l'ordinateur travaille, et donc depuis combien de temps il n'a
pas été redémarré.
Notez que, contrairement à Windows, il est extrêmement rare que l'installation d'un
programme nous réclame de redémarrer l'ordinateur. En fait, vous avez besoin de le
redémarrer principalement quand vous mettez à jour le noyau (le c÷ur) de Linux.
Sinon, ce n'est jamais nécessaire.
Ce mode de fonctionnement est particulièrement adapté sur les serveurs qui, par déni-
tion, sont des machines qui doivent être tout le temps allumées pour servir les gens qui
en ont besoin. Par exemple, les serveurs du Site du Zéro qui vous délivrent les pages du
site 24 h/24 et 7 j/7 sont tout le temps allumés et nous n'avons pratiquement jamais
besoin de les redémarrer. Pour preuve, l'uptime de notre serveur au moment où j'écris
ces lignes :
$ uptime
17:45:58 up 211 days, 15:24, 1 user, load average: 2.44, 2.66, 2.28
Notre serveur est en fonctionnement depuis 211 jours. Il n'a pas eu besoin d'être redé-
marré depuis. Cela témoigne notamment de la robustesse de Linux et de sa capacité à
tenir le coup pendant très longtemps.
297
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
C'est un peu compliqué. Si vous voulez vraiment savoir, la doc nous dit qu'il s'agit
du nombre moyen de processus (programmes) en train de tourner et qui réclament
l'utilisation du processeur.
Cela veut dire que, depuis une minute, il y a en moyenne 0,33 processus qui réclament
le processeur. Votre processeur est donc actif 33 % du temps.
Mais ce nombre dépend du nombre de processeurs de votre ordinateur. Un ordinateur
dual core ne sera complètement chargé que lorsque la valeur aura atteint 2. Pour un
quad core (4 c÷urs de processeur), la valeur maximale avant surcharge sera de 4.
Bref, rien ne vous oblige à savoir ce que ce nombre signie. Vous avez juste besoin de
savoir que, lorsqu'il dépasse 1 (si vous avez un processeur), 2 ou 4, alors votre ordinateur
est surchargé. J'ai déjà vu des machines avec une charge de 60, et même plus !
Quand la charge est très élevée pendant une longue période, c'est qu'il y a clairement
un problème. Il y a trop de programmes qui réclament le processeur et quelque chose
ne va pas dans l'ordinateur. Celui-ci aura du mal à répondre en cas de forte charge.
Notez que vous pouvez obtenir un graphique de l'évolution de la charge en console via
la commande tload. Le graphe évolue au fur et à mesure du temps, il faut patienter
un petit peu avant d'avoir quelque chose, comme l'illustre la gure 19.1.
298
PS & TOP : LISTER LES PROCESSUS
Là, j'étais sur mon ordinateur personnel sous Ubuntu. Je ne l'ai pas conguré pour
qu'on puisse s'y connecter depuis Internet (comme vous, certainement), ce qui explique
pourquoi je suis seul. Certes, j'apparais deux fois. Nous allons comprendre pourquoi
lorsque nous aurons appris à lire le tableau.
Il n'est pas nécessaire de décrire chacune des colonnes. Sachez qu'en gros vous avez :
USER : le nom de l'utilisateur (son login) ;
TTY : le nom de la console dans laquelle se trouve l'utilisateur. Souvenez-vous que
sous Linux il y a en général six consoles (tty1 à tty6) et qu'en plus de ça, on peut
en ouvrir une innité grâce aux consoles graphiques (leur nom commence par pts, en
général), comme le propose le programme Terminal sous Gnome ou Konsole
sous KDE ;
FROM : c'est l'adresse IP (ou le nom d'hôte) depuis laquelle il se connecte. Ici, comme
je me suis connecté en local (sur ma propre machine, sans passer par Internet), il
n'y a pas vraiment d'IP ;
LOGIN@ : l'heure à laquelle cet utilisateur s'est connecté ;
IDLE : depuis combien de temps cet utilisateur est inactif (depuis combien de temps
il n'a pas lancé de commande) ;
WHAT : la commande qu'il est en train d'exécuter en ce moment. En général, si vous
voyez bash, cela signie que l'invite de commandes est ouverte et qu'aucune com-
mande particulière n'est exécutée.
Dans mon cas, on voit donc deux utilisateurs (deux fois moi). Le premier correspond à
la session graphique : on le devine notamment grâce à la dernière colonne WHAT qui
indique que cet utilisateur est en train d'exécuter l'environnement graphique Gnome.
L'autre utilisateur est sur une console (ici, une console graphique lancée depuis
Gnome). Cet utilisateur est en train d'exécuter. . . la commande w ! En eet, lorsque je
lance w je me vois en train de l'exécuter dans la liste des utilisateurs connectés,
c'est parfaitement normal.
299
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
Sur un serveur web, on utilise en général le logiciel Apache qui délivre les pages
web aux internautes. Ce logiciel crée beaucoup de processus pour séparer ses
activités. Il en va de même pour les systèmes de gestion de bases de données,
comme MySQL et PostgreSQL. Il ne faut pas s'inquiéter si un programme
génère beaucoup de processus, cela n'est pas anormal.
Si vous faites la liste des processus qui tournent sur votre machine, vous risquez d'être
surpris. Vous en reconnaîtrez certains, mais vous en verrez beaucoup d'autres qui ont
été lancés par le système d'exploitation et dont vous n'avez jamais eu connaissance.
Pour lister les processus qui tournent sous Windows, on utilise Ctrl + Alt + Suppr
et on va dans l'onglet Processus . Sous Linux, on peut utiliser deux commandes
diérentes : ps et top.
$ ps
PID TTY TIME CMD
23720 pts/0 00:00:01 bash
29941 pts/0 00:00:00 ps
En fait, quand on utilise ps sans argument comme on vient de le faire, il ache seule-
ment les processus lancés par le même utilisateur (ici mateo21 ) dans la même
300
PS & TOP : LISTER LES PROCESSUS
console (ici pts/0 ). Cela limite énormément les processus achés, car beaucoup
sont lancés par root (l'utilisateur administrateur de la machine) et ne sont pas lancés
depuis la même console que la vôtre.
La commande ps vous permet d'utiliser énormément d'options. Regardez le manuel
pour avoir une petite idée de tout ce que vous pouvez faire avec, vous allez prendre
peur.
Plutôt que de faire une longue liste des paramètres possibles, je vous propose quelques
combinaisons de paramètres utiles à retenir.
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 01:01 ? 00:00:01 /sbin/init
root 2 1 0 01:01 ? 00:00:00 [migration/0]
root 3 1 0 01:01 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 01:01 ? 00:00:00 [watchdog/0]
root 5 1 0 01:01 ? 00:00:00 [events/0]
root 6 1 0 01:01 ? 00:00:00 [khelper]
root 7 1 0 01:01 ? 00:00:00 [kthread]
root 30 7 0 01:01 ? 00:00:00 [kblockd/0]
root 2462 1 0 01:01 ? 00:00:00 /sbin/udevd --daemon
root 3292 7 0 01:01 ? 00:00:00 [kpsmoused]
root 3448 7 0 01:01 ? 00:00:00 [kgameportd]
root 4021 1 0 01:02 tty4 00:00:00 /sbin/getty 38400 tty4
root 4022 1 0 01:02 tty5 00:00:00 /sbin/getty 38400 tty5
root 4024 1 0 01:02 tty2 00:00:00 /sbin/getty 38400 tty2
root 4027 1 0 01:02 tty3 00:00:00 /sbin/getty 38400 tty3
root 4030 1 0 01:02 tty1 00:00:00 /sbin/getty 38400 tty1
root 4040 1 0 01:02 tty6 00:00:00 /sbin/getty 38400 tty6
root 4266 1 0 01:02 ? 00:00:00 /usr/sbin/acpid
,→ -c /etc/acpi/eve
root 4363 1 0 01:02 ? 00:00:00 /sbin/syslogd
root 4417 1 0 01:02 ? 00:00:00 /bin/dd bs 1
,→ if /proc/kmsg of /v
klog 4419 1 0 01:02 ? 00:00:00 /sbin/klogd
,→ -P /var/run/klogd/km
103 4440 1 0 01:02 ? 00:00:00 /usr/bin/dbus-daemon --system
107 4456 1 0 01:02 ? 00:00:03 /usr/sbin/hald
...
301
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
Vous noterez l'apparition de la colonne UID (User ID ) qui indique le nom de l'utilisateur
qui a lancé la commande. Il y en a beaucoup, lancés par root automatiquement au
démarrage de la machine, dont vous n'avez jamais entendu parler.
$ ps -ejH
PID PGID SID TTY TIME CMD
1 1 1 ? 00:00:01 init
2 1 1 ? 00:00:00 migration/0
3 1 1 ? 00:00:00 ksoftirqd/0
4 1 1 ? 00:00:00 watchdog/0
5 1 1 ? 00:00:00 events/0
6 1 1 ? 00:00:00 khelper
7 1 1 ? 00:00:00 kthread
30 1 1 ? 00:00:00 kblockd/0
31 1 1 ? 00:00:00 kacpid
32 1 1 ? 00:00:00 kacpi_notify
93 1 1 ? 00:00:00 kseriod
118 1 1 ? 00:00:04 pdflush
119 1 1 ? 00:00:00 pdflush
120 1 1 ? 00:00:01 kswapd0
121 1 1 ? 00:00:00 aio/0
1930 1 1 ? 00:00:00 ksuspend_usbd
1931 1 1 ? 00:00:00 khubd
2061 1 1 ? 00:00:00 ata/0
2062 1 1 ? 00:00:00 ata_aux
2094 1 1 ? 00:00:00 scsi_eh_0
2263 1 1 ? 00:00:09 kjournald
3292 1 1 ? 00:00:00 kpsmoused
3448 1 1 ? 00:00:00 kgameportd
4521 4521 4521 ? 00:00:00 NetworkManager
4538 4538 4538 ? 00:00:01 avahi-daemon
4539 4539 4539 ? 00:00:00 avahi-daemon
4556 4556 4556 ? 00:00:00 NetworkManagerD
4569 4569 4569 ? 00:00:00 system-tools-ba
4570 4569 4569 ? 00:00:00 dbus-daemon
4593 4593 4593 ? 00:00:00 gdm
4594 4594 4593 ? 00:00:00 gdm
4625 4625 4625 tty7 00:05:56 Xorg
5012 5012 5012 ? 00:00:01 gnome-session
5057 5057 5057 ? 00:00:00 ssh-agent
5080 5012 5012 ? 00:00:25 metacity
5083 5012 5012 ? 00:00:16 gnome-panel
5089 5012 5012 ? 00:00:31 nautilus
302
PS & TOP : LISTER LES PROCESSUS
Dans cette liste, vous pouvez voir que kthread (ici surligné) a lancé lui-même de nom-
breux processus, comme kacpid, pdflush. . . Certains processus que nous connaissons
mieux nous apprennent des choses sur l'organisation du système. C'est le cas ici de gdm
(Gnome Desktop Manager ) qui gère tout le bureau Gnome. Il a lancé Xorg qui gère
l'environnement graphique, mais aussi gnome-session qui gère tous les programmes
que vous avez lancés durant cette session comme nautilus (l'explorateur de chiers),
gnome-panel qui est plus ou moins l'équivalent de la barre des tâches de Windows,
etc.
$ ps -u mateo21
PID TTY TIME CMD
5012 ? 00:00:01 gnome-session
5057 ? 00:00:00 ssh-agent
5060 ? 00:00:00 dbus-launch
5061 ? 00:00:00 dbus-daemon
5063 ? 00:00:03 gconfd-2
5066 ? 00:00:00 gnome-keyring-d
5068 ? 00:00:03 gnome-settings-
5075 ? 00:00:00 sh
5076 ? 00:00:00 esd
5080 ? 00:00:25 metacity
5083 ? 00:00:16 gnome-panel
5089 ? 00:00:31 nautilus
Ici, j'obtiens uniquement les processus lancés par l'utilisateur mateo21 , ce qui ltre
déjà pas mal les autres processus système lancés par root.
303
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
Essayez-la :
top ne peut pas acher tous les processus à la fois, il ne conserve que les premiers pour
qu'ils tiennent sur une page de la console.
Par défaut, les processus sont triés par taux d'utilisation du processeur (colonne %CPU).
Les processus que vous voyez tout en haut de cette liste sont donc actuellement les plus
gourmands en processeur. Ce sont peut-être eux que vous devriez cibler en premier si
vous sentez que votre système est surchargé.
On navigue à l'intérieur de ce programme en appuyant sur certaines touches du clavier.
304
CTRL + C & KILL : ARRÊTER UN PROCESSUS
Mis à part cela, voici quelques commandes à connaître au sein de top qui peuvent vous
être utiles.
B : met en gras certains éléments.
f : ajoute ou supprime des colonnes dans la liste.
F : change la colonne selon laquelle les processus sont triés. En général, laisser le tri
par défaut en fonction de %CPU est susant.
u : ltre en fonction de l'utilisateur que vous voulez.
k : tue un processus, c'est-à-dire arrête ce processus. Ne vous inquiétez pas, en général
les processus ne sourent pas. On vous demandera le numéro (PID) du processus que
vous voulez tuer. Nous reviendrons sur l'arrêt des processus un peu plus loin.
s : change l'intervalle de temps entre chaque rafraîchissement de la liste (par défaut,
c'est toutes les trois secondes).
Vous voilà parés à utiliser top ! ;-)
Je l'utilise principalement pour voir la charge évoluer régulièrement tout en surveillant
les processus les plus gourmands qui peuvent poser un problème.
305
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
Si vous trouvez cela trop long et que vous voulez arrêter le programme en cours de
route, il vous sut de taper Ctrl + C :
La liste aurait dû être beaucoup plus longue. Mais j'ai demandé l'arrêt du programme
avec Ctrl + C, ce qui fait que j'ai pu retrouver l'invite de commandes rapidement
et facilement.
Taper Ctrl + C ne coupe pas le programme brutalement, cela lui demande gentiment
de s'arrêter, comme si vous aviez cliqué sur la croix pour fermer une fenêtre.
$ ps -u mateo21
PID TTY TIME CMD
5012 ? 00:00:01 gnome-session
5057 ? 00:00:00 ssh-agent
5060 ? 00:00:00 dbus-launch
5061 ? 00:00:00 dbus-daemon
5063 ? 00:00:03 gconfd-2
5066 ? 00:00:00 gnome-keyring-d
5068 ? 00:00:03 gnome-settings-
5075 ? 00:00:00 sh
5076 ? 00:00:00 esd
5080 ? 00:00:26 metacity
5083 ? 00:00:17 gnome-panel
...
306
CTRL + C & KILL : ARRÊTER UN PROCESSUS
Supposons qu'on souhaite arrêter Firefox. On peut ltrer cette longue liste avec grep
et un pipe que nous avons appris à utiliser.
Hop là, on a ltré Firefox de cette longue liste et on a même récupéré son PID. Il ne
nous reste plus qu'à le tuer, avec la commande suivante :
kill 32678
Si tout va bien, la commande ne renvoie rien. Sinon, une erreur devrait s'acher dans
la console.
Vous pouvez aussi tuer plusieurs processus d'un seul coup en indiquant plusieurs PID
à la suite :
Attention : même si kill est par défaut une commande gentille qui
demande simplement au processus de s'arrêter, évitez de tuer des processus
que vous ne connaissez pas. Beaucoup d'entre eux sont essentiels au bon
fonctionnement de votre système, surtout ceux qui ont été lancés par root.
Vous voulez tuer un processus sans lui laisser le choix ? C'est tout à fait possible, mais
à n'utiliser que dans le cas d'un programme complètement planté que vous voulez
vraiment arrêter !
Avec kill -9 (comme le chire 9, oui, oui), vous demandez à Linux de tuer le processus
sans lui laisser le temps de s'arrêter proprement. Cela peut faire le ménage quand rien
ne va plus.
kill -9 32678
307
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
. . . tuera le processus no 32678 (Firefox, dans mon cas) immédiatement sans lui laisser
le temps de nir.
$ killall find
$ killall find
find: aucun processus tué
. . . cela signie qu'il n'y avait aucun processus de ce nom à tuer. Soit le processus n'est
plus là, soit vous n'avez pas écrit correctement son nom. Vériez ce nom à nouveau
avec la commande ps.
308
HALT & REBOOT : ARRÊTER ET REDÉMARRER L'ORDINATEUR
jamais nécessaire de redémarrer. L'arrêt et le redémarrage d'un serveur sous Linux sont
réellement des opérations exceptionnelles.
Mais j'ai installé Linux sur mon ordinateur personnel ! Je n'en fais pas un
serveur. J'ai le droit de l'arrêter ou de le redémarrer quand même, non ?
En eet, et je suppose que vous n'avez pas attendu ce chapitre pour le faire. ;-)
Vous pouviez arrêter et redémarrer l'ordinateur via l'interface graphique (Gnome, KDE,
. . .). Mais en console, savez-vous le faire ?
$ sudo halt
$ sudo reboot
En résumé
Linux est multi-tâches (plusieurs programmes peuvent tourner en même temps) et
multi-utilisateurs (plusieurs utilisateurs peuvent se servir de la même machine en
même temps en s'y connectant via Internet).
w indique quels utilisateurs sont sur la machine, ce qu'ils font et quelques autres
statistiques comme la charge de travail de la machine et son uptime.
309
CHAPITRE 19. SURVEILLER L'ACTIVITÉ DU SYSTÈME
ps ache la liste des processus, c'est-à-dire des programmes qui tournent sur la
machine. top est un équivalent qui met à jour automatiquement la liste au l du
temps.
La combinaison de touches Ctrl + C permet d'arrêter une commande en cours d'exé-
cution dans la console an de pouvoir reprendre la main.
kill tue un processus, ce qui signie qu'il lui demande de s'arrêter. Il a besoin du
numéro du processus, généralement fourni par ps ou top. Si le processus ne s'arrête
pas, on peut utiliser le paramètre -9 qui coupe brutalement le processus (avec risque
de perte de données).
halt commande l'arrêt de l'ordinateur, reboot son redémarrage.
310
Chapitre 20
Exécuter des programmes en
arrière-plan
Diculté :
N ous avons commencé à découvrir ce qu'étaient les processus dans le chapitre précé-
dent. Nous savons désormais comment les lister, les trier, les ltrer et enn comment
les tuer.
Ici, je vous propose d'aller plus loin et de découvrir l'exécution en arrière-plan. A priori,
la console a quelque chose de frustrant : on a l'impression qu'on ne peut lancer qu'un seul
programme à la fois par console. Or, c'est tout à fait faux !
. . . Mais encore faut-il savoir comment faire tourner des programmes en arrière-plan.
Il existe un certain nombre de techniques plus ou moins sophistiquées. Il est recommandé
de les connaître car, parfois, on souhaite tout faire au sein d'une seule et même console.
311
CHAPITRE 20. EXÉCUTER DES PROGRAMMES EN ARRIÈRE-PLAN
312
& & NOHUP : LANCER UN PROCESSUS EN ARRIÈRE-PLAN
Maintenant, vous ne voyez peut-être rien, mais le processus est bel et bien en train de
tourner en tâche de fond .
Si vous essayez de faire la même chose avec d'autres commandes, par exemple sur un
find, vous risquez d'être surpris : les messages renvoyés par la commande s'achent
toujours dans la console ! Vous pouvez certes écrire du texte et lancer d'autres com-
mandes pendant ce temps (essayez), mais c'est un peu frustrant de voir ces messages
apparaître dans la console !
Heureusement, vous savez maintenant rediriger la sortie pour ne pas être importunés :
Les résultats seront maintenant écrits dans le chier sortiefind au lieu d'être achés
dans la console. De plus, la commande s'exécute en fond et ne nous importune plus.
Notez que pour être sûrs de ne pas être dérangés du tout, vous devrez aussi rediriger les
erreurs (par exemple avec 2>&1), ce qui peut nous donner une jolie commande comme
celle-ci :
nohup commande
313
CHAPITRE 20. EXÉCUTER DES PROGRAMMES EN ARRIÈRE-PLAN
La sortie de la commande est par défaut redirigée vers un chier nohup.out. Aucun
message ne risque donc d'apparaître dans la console.
D'autre part, la commande est maintenant immunisée contre la fermeture de la console.
Elle continuera de fonctionner quoi qu'il arrive (sauf si on lui envoie un kill, bien sûr).
nohup est très utile par exemple lorsque vous vous connectez à un serveur.
Imaginons que vous voulez lancer un programme (comme un serveur de jeu) :
celui-ci s'arrêtera de fonctionner dès que vous vous serez déconnectés de
la ligne de commandes du serveur. Vous n'allez pas rester connectés juste
pour que le programme continue à fonctionner ! Heureusement, nohup vous
préserve de ce problème.
$ cp video.avi video_copie.avi
Si vous n'avez pas de gros chier sous la main pour faire le test, vous pouvez aussi faire
un top.
Tapez maintenant Ctrl + Z pendant l'exécution du programme. Celui-ci va s'arrêter
et vous allez immédiatement reprendre la main sur l'invite de commandes.
Vous noterez que nous avons plusieurs informations : le numéro du processus en arrière-
plan (ici [1]), son état (Stopped) et le nom de la commande qui a lancé ce processus.
314
CTRL + Z, JOBS, BG & FG :
Le processus est maintenant dans un état de pause. Il ne s'exécute pas mais reste en
mémoire.
$ bg
[1]+ top &
$ jobs
[1]- Stopped top
[2]+ Stopped find / -name "*log*" > sortiefind 2>&1
Encore une fois, vous avez le numéro du processus qui tourne en fond (à ne pas
confondre avec le PID), son état et son nom.
315
CHAPITRE 20. EXÉCUTER DES PROGRAMMES EN ARRIÈRE-PLAN
$ fg
Si vous avez un seul processus listé dans les jobs, c'est ce processus qui sera remis au
premier plan. Si, comme moi tout à l'heure, vous avez plusieurs processus en arrière-
plan, il faudra préciser lequel vous voulez récupérer. Par exemple, voici comment re-
prendre le find qui était le job no 2 :
$ fg %2
316
SCREEN : PLUSIEURS CONSOLES EN UNE
Par défaut, un processus est lancé dans l'état running à l'avant-plan. On peut l'arrêter
avec la combinaison Ctrl + C, auquel cas il sera détruit.
Mais on peut aussi l'envoyer en arrière-plan. Si on l'exécute dès le départ avec un &,
il sera à l'état running à l'arrière-plan. Si on choisit de faire Ctrl + Z, il passera à
l'état Stopped à l'arrière-plan. Il faudra taper bg pour le faire passer à nouveau à l'état
running en arrière-plan.
Enn, la commande fg renvoie un processus de l'arrière-plan vers l'avant-plan.
Prenez cinq minutes pour bien analyser ce schéma et vérier que vous avez compris
l'essentiel de ce chapitre, c'est vraiment important. Il résume à peu près tout ce qu'il
faut savoir 2 .
$ screen
2. Il manque seulement nohup que j'ai mis à part comme je vous l'ai dit.
317
CHAPITRE 20. EXÉCUTER DES PROGRAMMES EN ARRIÈRE-PLAN
Un message s'ache, précisant tout d'abord que le programme est un logiciel libre. Il
indique ensuite l'adresse e-mail de l'auteur à laquelle on peut envoyer, je cite des
t-shirts, de l'argent, de la bière et des pizzas . Bon. . . passons. :-)
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program (see the file COPYING); if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
mateo21@mateo21-desktop:~$ screen
[screen is terminating]
318
SCREEN : PLUSIEURS CONSOLES EN UNE
Il y a deux pages de commandes. Avec Espace vous allez à la page suivante ; avec
Entrée, vous refermez l'aide.
Comment lire cette page d'aide ? Par exemple, si vous voulez connaître la version du
programme (milieu de la troisième colonne), il faudra taper Ctrl + a suivi de v (la
lettre minuscule). Toutes les touches que vous voyez là doivent impérativement être
précédées d'un Ctrl + a. Notez par ailleurs que l'accent circonexe ^ signie ici Ctrl.
319
CHAPITRE 20. EXÉCUTER DES PROGRAMMES EN ARRIÈRE-PLAN
screen est sensible à la casse pour les commandes ! Faites donc bien la
diérence entre c et C par exemple.
Il nous reste deux options très intéressantes de screen à découvrir et qui méritent une
attention particulière : split et detach.
320
SCREEN : PLUSIEURS CONSOLES EN UNE
Vous pourrez, comme dans la gure 20.3, acher par exemple top pendant que vous
faites des opérations sur la fenêtre du dessus.
mateo21@mateo21-desktop:~$ screen
[detached]
mateo21@mateo21-desktop:~$
L'information [detached] apparaît pour signaler que screen tourne toujours et qu'il
est détaché de la console actuelle. Il continuera donc à tourner quoi qu'il arrive, même
si vous fermez la console dans laquelle vous vous trouvez.
321
CHAPITRE 20. EXÉCUTER DES PROGRAMMES EN ARRIÈRE-PLAN
En eet, screen se comporte comme un nohup. La diérence est qu'une session screen
vous permet d'ouvrir plusieurs fenêtres de console à la fois, contrairement à nohup qui
ne peut lancer qu'un programme à la fois.
Vous pouvez donc partir, quitter la console et revenir récupérer votre session screen
plus tard. Il faudra simplement taper :
$ screen -r
. . . pour retrouver votre session screen dans l'état où vous l'avez laissée.
Notez qu'il est possible de faire tourner plusieurs sessions screen en fond à la fois.
Dans ce cas, screen -r ne sera pas susant car on vous demandera de préciser quelle
session vous voulez récupérer :
$ screen -r
There are several suitable screens on:
20930.pts-0.mateo21-desktop (Detached)
19713.pts-0.mateo21-desktop (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
$ screen -r 20930
À noter aussi que screen -ls ache la liste des screens actuellement ouverts :
$ screen -ls
There are screens on:
20930.pts-0.mateo21-desktop (Detached)
19713.pts-0.mateo21-desktop (Detached)
2 Sockets in /var/run/screen/S-mateo21.
Certaines personnes ont pris l'habitude de tout faire sur screen, notamment sur les
serveurs. Il m'est arrivé de laisser tourner une session screen pendant plusieurs mois
grâce à la possibilité de détachement que nous venons de découvrir.
322
SCREEN : PLUSIEURS CONSOLES EN UNE
Ce chier s'appelle .screenrc et doit être placé dans votre home (/home/mateo21 par
exemple). Vous pouvez vous amuser à lire la doc à ce sujet, mais vous pouvez aussi
utiliser le même chier .screenrc que j'ai l'habitude d'utiliser 3 .
B
Télécharger le .screenrc
Code web : 901904
Une fois placé dans votre home, exécutez screen. Vous devriez noter quelques dié-
rences, comme vous le montre la gure 20.4.
En résumé
Il est possible d'envoyer des programmes en arrière-plan dans la console an de garder
la main pour lancer de nouvelles commandes.
Pour lancer un processus en arrière-plan, on peut ajouter le symbole & à la n de la
commande. En revanche, lorsque vous fermez la console, le processus est arrêté. Si
vous voulez qu'il continue, utilisez plutôt la commande nohup.
Si vous avez lancé une commande normalement (en avant-plan) mais que celle-ci
s'éternise, vous pouvez utiliser le raccourci Ctrl + Z pour la mettre en pause et ré-
cupérer la main. Si vous lancez la commande bg ensuite, elle reprendra son exécution
en arrière-plan. Vous pourrez la récupérer au premier plan avec fg à tout moment.
3. Ce chier de conguration n'est pas de moi, merci donc à son auteur, bennyben .
323
CHAPITRE 20. EXÉCUTER DES PROGRAMMES EN ARRIÈRE-PLAN
screen est un programme puissant que vous pouvez installer avec apt-get (il n'est
pas présent par défaut). Il permet d'ouvrir plusieurs consoles virtuelles au sein d'une
seule et même console, et donc d'exécuter facilement plusieurs processus en parallèle.
324
Chapitre 21
Exécuter un programme à une heure
diérée
Diculté :
N ous savons lancer une commande pour qu'elle s'exécute tout de suite. Il est cependant
aussi possible de retarder son lancement.
Linux vous propose toute une série d'outils qui vous permettent de programmer à l'avance
l'exécution d'une tâche, comme par exemple la crontab que nous allons étudier. Tous les
outils que nous allons découvrir dans ce chapitre feront en outre appel à la notion de date.
Nous allons donc dans un premier temps nous intéresser au formatage de la date.
325
CHAPITRE 21. EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE
$ date
mercredi 10 novembre 2010, 12:27:25 (UTC+0100)
Sans paramètre, la commande nous renvoie donc la date actuelle, l'heure et le décalage
horaire.
$ date "+%H"
12
$ date "+%H:%M:%S"
12:36:15
Ici, j'ai rajouté les minutes (%M) et les secondes (%S). J'ai séparé les nombres par des
deux-points, mais j'aurais très bien pu mettre autre chose à la place :
$ date "+%Hh%Mm%Ss"
12h41m01s
Seule la lettre qui suit le % est interprétée. Mes lettres h , m et s sont donc
simplement achées.
326
AT : EXÉCUTER UNE COMMANDE PLUS TARD
À vous de jouer !
Modier la date
La commande date permet aussi de changer la date.
Attention, il faudra être root pour faire cela (vous devrez placer un sudo
devant par exemple).
Il faut préciser les informations sous la forme suivante : MMDDhhmmYYYY. Les lettres
signient :
MM : mois ;
DD : jour ;
hh : heure ;
mm : minutes ;
YYYY : année.
Notez qu'il n'est pas obligatoire de préciser l'année. On peut donc écrire :
La nouvelle date s'ache automatiquement et elle est mise à jour sur le système.
Attention à bien respecter l'ordre des nombres : Mois - Jour - Heure - Minutes.
Avec at, le programme ne sera exécuté qu'une seule fois. Si vous voulez que
l'exécution soit répétée régulièrement, il faudra utiliser la crontab que nous
verrons plus loin.
327
CHAPITRE 21. EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE
$ at 14:17
$ at 14:17
warning: commands will be executed using /bin/sh
at>
$ at 14:17
warning: commands will be executed using /bin/sh
at> touch fichier.txt
at> <EOT>
job 5 at Mon Nov 10 14:17:00 2010
Après avoir écrit la commande touch, at ache à nouveau un prompt et vous demande
une autre commande. Vous pouvez indiquer une autre commande à exécuter à la même
heure. . . ou bien arrêter là. Dans ce cas, tapez Ctrl + D (comme si vous cherchiez à
sortir d'un terminal). Le symbole <EOT> devrait alors s'acher, et at s'arrêtera.
at ache ensuite le numéro associé à cette tâche (à ce job , comme il dit) et l'heure
à laquelle il sera exécuté.
Attendez 14 h 17, et vous verrez que le chier sera créé. :-)
328
AT : EXÉCUTER UNE COMMANDE PLUS TARD
$ at 14:17 tomorrow
$ at 14:17 11/15/10
La date est au format américain, les numéros du jour et du mois sont donc
inversés : 11/15/10. 11 correspond au mois (novembre) et 15 au numéro du
jour !
$ at now +5 minutes
$ at now +2 weeks
329
CHAPITRE 21. EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE
Il est possible d'avoir la liste des jobs en attente avec la commande atq :
$ atq
13 Mon Nov 10 14:44:00 2010 a mateo21
12 Mon Nov 10 14:42:00 2010 a mateo21
Si vous souhaitez supprimer le job no 13 (je ne sais pas, parce que ça porte malheur
par exemple), utilisez atrm :
$ atrm 13
touch est d'abord exécuté, puis une fois qu'il a ni ce sera le tour de rm (qui supprimera
le chier que nous venons de créer).
Parfois, enchaîner les commandes comme ceci est bien pratique. . . mais on a besoin de
faire une pause entre les deux. C'est là qu'intervient sleep : cette commande permet
de faire une pause.
330
CRONTAB : EXÉCUTER UNE COMMANDE RÉGULIÈREMENT
L'intérêt de sleep ne vous paraîtra peut-être pas évident tout de suite, mais retenez que
cette commande existe car il est parfois bien pratique de faire une pause, par exemple
pour s'assurer que la première commande a bien eu le temps de se terminer. ;-)
Vous pouvez aussi remplacer les points-virgules par des &&, comme ceci :
touch fichier.txt && sleep 10 && rm fichier.txt
Un peu de conguration. . .
Avant toute chose, nous devons modier notre conguration (notre chier .bashrc)
pour demander à ce que Nano soit l'éditeur par défaut. En général, c'est le programme
vi qui fait oce d'éditeur par défaut. C'est un bon éditeur de texte, mais bien plus
complexe que Nano et je ne vous le présenterai que plus tard. En attendant, rajoutez
la ligne suivante à la n de votre chier .bashrc :
export EDITOR=nano
Cela aura pour eet d'écrire cette ligne à la n de votre chier .bashrc situé dans
votre répertoire personnel. Fermez ensuite votre console et rouvrez-la pour que cette
nouvelle conguration soit bien prise en compte.
Cette petite conguration étant faite, attaquons les choses sérieuses.
331
CHAPITRE 21. EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE
$ crontab -l
no crontab for mateo21
Normalement, vous n'avez pas encore créé de crontab. Vous noterez qu'il y a une crontab
par utilisateur. Là j'édite la crontab de mateo21 car je suis loggé avec l'utilisateur
mateo21, mais root a aussi sa propre crontab. La preuve :
$ sudo crontab -l
no crontab for root
$ crontab -e
Si vous avez bien conguré votre .bashrc tout à l'heure (et que vous avez relancé
votre console), cela devrait ouvrir le programme Nano que vous connaissez. Si par
hasard vous n'avez pas fait quelque chose correctement, c'est le programme vi qui
se lancera. Comme vous ne le connaissez pas encore, tapez :q puis Entrée pour sortir.
Vériez à nouveau votre conguration du .bashrc et n'oubliez pas de fermer puis de
rouvrir votre console.
Modier la crontab
Pour le moment, si votre crontab est vide comme la mienne, vous devriez voir unique-
ment ceci (capture d'écran de Nano) :
332
CRONTAB : EXÉCUTER UNE COMMANDE RÉGULIÈREMENT
[ Lecture de 1 ligne ]
^G Aide ^O Écrire ^R Lire fich.^Y Page préc.^K Couper ^C Pos. cur.
^X Quitter ^J Justifier ^W Chercher ^V Page suiv.^U Coller ^T Orthograp.
Les champs
Le chier ne contient qu'une seule ligne :
Comme cette ligne est précédée d'un #, il s'agit d'un commentaire (qui sera donc
ignoré). Cette ligne vous donne quelques indications sur la syntaxe du chier :
m : minutes (0 - 59) ;
h : heures (0 - 23) ;
dom (day of month ) : jour du mois (1 - 31) ;
mon (month ) : mois (1 - 12) ;
dow (day of week ) : jour de la semaine (0 - 6, 0 étant le dimanche) ;
command : c'est la commande à exécuter.
Chaque ligne du chier correspond à une commande que l'on veut voir exécutée ré-
gulièrement. Vous trouverez en gure 21.1 un schéma qui résume la syntaxe d'une
ligne.
333
CHAPITRE 21. EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE
Imaginons que je veuille exécuter une commande tous les jours à 15 h 47. Je vais écrire
ceci :
47 15 * * * touch /home/mateo21/fichier.txt
Seules les deux premières valeurs sont précisées : les minutes et les heures. Chaque fois
qu'il est 15 h 47, la commande indiquée à la n sera exécutée.
J'ai écrit le chemin du chier en entier, car vous ne pouvez pas être sûrs que
le cron s'exécutera dans le répertoire que vous voulez. Il est donc toujours
préférable d'écrire le chemin du chier en absolu comme je l'ai fait ici :
/home/mateo21/fichier.txt.
Oui, mais ce n'est pas comme cela que ça fonctionne. La crontab exige de passer par
une commande, c'est comme ça. Il y a quelques avantages à cela, puisque cela permet
au programme de vérier si votre chier est correctement écrit avant de mettre à jour
la crontab. S'il y a une erreur de syntaxe, on vous le dira et aucun changement ne sera
apporté.
Essayez d'enregistrer et de quitter Nano. Vous verrez que la crontab vous dit qu'elle
installe les changements (elle les prend en compte, en quelque sorte) :
Désormais, fichier.txt sera créé dans mon répertoire personnel tous les jours à
15 h 47 (s'il n'existe pas déjà).
Revenez dans la crontab, nous allons voir d'autres exemples (tableau 21.1).
Est-il possible d'exécuter une commande plus fréquemment que toutes les
minutes ?
Non, c'est impossible avec cron. La fréquence minimale, c'est toutes les minutes.
334
CRONTAB : EXÉCUTER UNE COMMANDE RÉGULIÈREMENT
Crontab Signication
47 * * * * commande Toutes les heures à 47 minutes exactement.
Donc à 00 h 47, 01 h 47, 02 h 47, etc.
0 0 * * 1 commande Tous les lundis à minuit (dans la nuit de dimanche à lundi).
0 4 1 * * commande Tous les premiers du mois à 4 h du matin.
0 4 * 12 * commande Tous les jours du mois de décembre à 4 h du matin.
0 * 4 12 * commande Toutes les heures les 4 décembre.
* * * * * commande Toutes les minutes !
Comme vous le voyez, la crontab ore de très larges possibilités (pour peu que l'on ait
compris comment elle fonctionne).
Rediriger la sortie
Pour le moment, nous avons exécuté notre commande très simplement dans la crontab :
47 15 * * * touch /home/mateo21/fichier.txt
Toutefois, il faut savoir que si la commande renvoie une information ou une erreur, vous
ne la verrez pas apparaître dans la console. Normal : ce n'est pas vous qui exécutez la
commande, mais le programme cron.
Que se passe-t-il alors si la commande renvoie un message ? En fait, le résultat de
la commande vous est envoyé par e-mail. Chaque utilisateur possède sa propre boîte
335
CHAPITRE 21. EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE
e-mail sur les machines de type Unix, mais je ne vais pas m'attarder là-dessus. Nous
allons plutôt voir comment rediriger le résultat.
Tenez : rediriger une sortie, vous savez faire ça, non ?
Tous les messages seront désormais ajoutés à la n de cron.log. Tous ? Non, on oublie
d'y rediriger aussi les erreurs !
Voilà, c'est mieux. Cette fois, tout sera envoyé dans cron.log : les messages et les
erreurs.
Nous avons déjà appris à le faire ! Il sut de rediriger dans /dev/null (le fameux trou
noir du système). Tout ce qui est envoyé là-dedans est immédiatement supprimé :
hop, plus de trace, le crime parfait.
En résumé
date permet d'obtenir la date et l'heure mais aussi de modier celles-ci.
at retarde l'exécution d'une commande à une heure ultérieure.
On peut exécuter plusieurs commandes d'alée en les séparant par des points-
virgules : touch fichier.txt; rm fichier.txt.
La commande sleep permet de faire une pause entre deux commandes exécutées
d'alée.
crontab permet de programmer des commandes pour une exécution régulière. Par
exemple : tous les jours à 18 h 30, tous les lundis et mardis à 12 h, tous les 5 du
mois, etc. On modie la programmation avec crontab -e.
336
Quatrième partie
Transférer des données à travers
le réseau
337
Chapitre 22
Archiver et compresser
Diculté :
P our bien débuter cette partie sur le réseau, il me semble logique de vous présenter
d'abord le fonctionnement de la compression sous Linux. En eet, si vous vous apprêtez
à envoyer un ou plusieurs chiers par le réseau (que ce soit par mail, FTP ou autre),
il est toujours préférable de commencer par les compresser an de réduire leur taille.
Vous avez sûrement déjà entendu parler du format zip. C'est le plus connu et le plus
répandu. . . du moins sous Windows. On peut l'utiliser aussi sous Linux, de même que le
format rar.
Cependant, on préfèrera utiliser des alternatives libres (et souvent plus puissantes) telles
que le gzip et le bzip2. Toutefois, contrairement à zip et rar, le gzip et le bzip2 ne
sont capables de compresser qu'un seul chier à la fois et ne peuvent donc pas créer un
paquetage de plusieurs chiers. Mais rassurez-vous, tout est prévu : on utilise pour cela
un outil à part, appelé tar, qui permet d'assembler des chiers avant de les compresser.
Nous allons découvrir le fonctionnement de tout cela dans ce chapitre. ;-)
339
CHAPITRE 22. ARCHIVER ET COMPRESSER
Les formats zip et rar ne séparent pas les étapes comme sur le schéma
22.1. Ils sont capables d'assembler plusieurs chiers en une archive et de la
compresser en même temps.
Comme vous le voyez, sous Linux il y a donc une méthode à suivre dans un ordre
précis. Voyons ensemble comment faire !
340
TAR : ASSEMBLER DES FICHIERS DANS UNE ARCHIVE
Certains formats de chier sont déjà compressés. C'est le cas des images jpeg,
png et gif, mais aussi de la plupart des vidéos. Vous pouvez bien entendu les
assembler dans une archive tar et même les compresser, mais vous ne les
rendrez en général pas plus petits car ils ont déjà été compressés.
Mes chiers .tuto que je souhaite archiver sont pour le moment placés en vrac dans
mon home :
$ ls
Bureau Images l-heritage.tuto Public
Documents la-surcharge-d-operateurs.tuto Modèles Vidéos
Examples les-principaux-widgets.tuto Musique
Il est recommandé de placer d'abord les chiers à archiver dans un seul et même dossier.
Créons-le et déplaçons-y tous nos .tuto :
$ mkdir tutoriels
$ mv *.tuto tutoriels/
$ ls
Bureau Examples Modèles Public Vidéos
Documents Images Musique tutoriels
341
CHAPITRE 22. ARCHIVER ET COMPRESSER
Ici on archive le dossier tutoriels et donc son contenu. Grâce à -v, on voit bien la
liste des chiers qui ont été archivés.
Quand on fait cela, on voit que tous les chiers sont réunis dans un même dossier
tutoriels, et ça c'est très pratique. J'en reviens justement au problème dont je parlais
un peu plus haut : imaginez que vous détariez une archive contenant plus de 400
chiers dans votre home. Si ces chiers n'étaient pas réunis dans un dossier, ils iraient
tous se mêler aux autres chiers du home, et alors là, je vous dis pas la pagaille !
Voilà donc pourquoi je vous ai invités dès le début à réunir vos chiers à archiver dans
un même dossier. Cela permet d'éviter de mauvaises surprises à celui qui extrait les
342
GZIP & BZIP2 : COMPRESSER UNE ARCHIVE
chiers de l'archive. Quasiment toutes les archives que l'on vous proposera de téléchar-
ger suivent ce même schéma et font attention à tout réunir dans un même dossier, mais
vériez le contenu avant de l'extraire, on ne sait jamais !
Les chiers s'extraient dans le répertoire dans lequel vous vous trouvez. Vériez donc
avant de les extraire que ceux-ci sont réunis dans un même dossier (avec -tf) si vous
ne voulez pas que ces chiers aillent se mélanger à d'autres !
Ces programmes sont simples à utiliser. Ils prennent comme paramètre le nom du
chier à compresser. Ils le compressent et modient ensuite son nom. Concrètement,
ils ajoutent un suxe pour indiquer que l'archive a été compressée :
343
CHAPITRE 22. ARCHIVER ET COMPRESSER
Cela conrme ce que je vous disais : bzip2 est plus ecace. . . mais il compresse aussi
plus lentement et est moins fréquemment utilisé.
gzip tutoriels.tar
L'archive est compressée et gagne ensuite le suxe .gz. Elle s'appelle donc désor-
mais tutoriels.tar.gz. Voilà pourquoi vous voyez circuler sur l'internet des chiers
.tar.gz : cela signie que ce sont des archives compressées !
Pour décompresser l'archive ensuite, il sut d'utiliser gunzip :
gunzip tutoriels.tar.gz
L'archive retrouve son état non compressé en .tar. Vous pouvez maintenant extraire
les chiers de l'archive comme vous avez appris à le faire un peu plus tôt avec tar
-xvf. ;-)
bzip2 tutoriels.tar
bunzip2 tutoriels.tar.bz2
Vous retrouvez un .tar que vous pouvez extraire avec tar -xvf.
344
GZIP & BZIP2 : COMPRESSER UNE ARCHIVE
Si on fait comme cela, c'est essentiellement pour des raisons historiques. Souvenez-
vous que Linux ne fait que recopier le fonctionnement d'Unix dont l'origine remonte
aux années 1960 !
Heureusement, les choses ont un peu évolué. Il faut toujours archiver puis compresser,
mais le programme tar est capable d'appeler lui-même gzip ou bzip2 si vous lui
donnez les bons paramètres.
Voilà comment on obtient une archive compressée en une seule commande. :-)
Pour décompresser, c'est pareil, sauf que le -c est remplacé par un -x comme tout à
l'heure :
Et pour extraire :
345
CHAPITRE 22. ARCHIVER ET COMPRESSER
gzip l-heritage.tuto
346
UNZIP & UNRAR : DÉCOMPRESSER LES .ZIP ET .RAR
zmore et zless, équivalents de more et less qui permettent d'acher page par page,
fonctionnent aussi !
unzip archive.zip
Les chiers vont s'extraire dans le dossier dans lequel vous vous trouvez ! Le
problème est le même qu'avec les .tar.gz et .tar.bz2. Avant de décom-
presser, vériez si les chiers sont réunis dans un même dossier.
$ unzip -l tutoriels.zip
Archive: tutoriels.zip
Length Date Time Name
-------- ---- ---- ----
347
CHAPITRE 22. ARCHIVER ET COMPRESSER
On peut voir que les chiers sont réunis dans un même dossier dans l'archive. C'est
plutôt rare avec les .zip en principe, faites donc attention avant de décompresser les
chiers pour qu'ils n'atterrissent pas n'importe où.
En général, on a surtout besoin d'unzip pour décompresser un zip, mais il est peu
fréquent que l'on soit amené à créer un chier zip (on préfèrera toujours le gzip ou
le bzip2). Si toutefois vous voulez vraiment créer un zip, installez le programme zip
puis basez-vous sur la commande suivante :
unrar e tutoriels.rar
Non, vous ne rêvez pas, l'auteur du programme ne veut pas que l'on mette un tiret
devant l'option e ! Il faut bien qu'il y ait des exceptions dans la vie. :-)
Pour lister le contenu avant décompression, utilisez l'option l :
$ unrar l tutoriels.rar
Archive tutoriels.rar
348
UNZIP & UNRAR : DÉCOMPRESSER LES .ZIP ET .RAR
------------------------------------------------------------------------------
les-principaux-widgets.tuto 59515 16191 27% 12-11-08 14:44 -rw-r--r--
,→ 6E266812 m3b 2.9
la-surcharge-d-operateurs.tuto 36757 11215 30% 12-11-08 14:43
,→ -rw-r--r-- E8474528 m3b 2.9
l-heritage.tuto 27685 8720 31% 12-11-08 14:44 -rw-r--r-- 738EF121 m3b
,→ 2.9
------------------------------------------------------------------------------
3 123957 36126 29%
Ce n'est pas possible. En fait, le format rar est propriétaire. La méthode de décom-
pression a été publiée et vous pouvez donc décompresser des .rar, mais pour créer des
.rar il faut. . . acheter le logiciel.
Vous pouvez toujours installer le paquet rar mais vous verrez que c'est un shareware,
qu'il n'est pas libre et qu'il faudra l'acheter sous 40 jours. . . bref, ce n'est pas le meilleur
plan. Si vraiment vous voulez rester compatibles, créez plutôt des .zip.
En résumé
Pour regrouper plusieurs chiers et dossiers au sein d'un même chier (appelé ar-
chive ), on utilise le programme tar. Celui-ci ne compresse pas les chiers par défaut,
contrairement à zip.
Il est possible de compresser une archive tar avec le programme gzip (très couram-
ment utilisé) ou bzip2 (meilleure compression mais plus lente).
Les archives non compressées ont l'extension .tar, les archives compressées ont l'ex-
tension .tar.gz (pour gzip) ou .tar.bz2 (pour bzip2).
On utilise peu les formats de compression zip et rar sous Linux, mais il est possible
de décompresser ces types de chiers avec les programmes unzip et unrar. Ceux-ci
ne sont en général pas installés par défaut.
349
CHAPITRE 22. ARCHIVER ET COMPRESSER
350
Chapitre 23
La connexion sécurisée à distance avec
SSH
Diculté :
V oici probablement l'un des chapitres les plus intéressants de ce livre. Nous allons
découvrir comment se connecter à distance à une machine équipée de Linux.
Je vous en ai déjà un peu parlé au début de cet ouvrage : toutes les machines sous Linux
peuvent être congurées pour que l'on s'y connecte à distance, pour peu qu'elles restent
allumées.
Ici, nous n'allons pas seulement découvrir la connexion à distance. Nous allons aussi essayer
de comprendre comment cela fonctionne et comment les données sont sécurisées grâce au
protocole SSH. Ce chapitre sera donc l'occasion de découvrir de nouvelles notions sur le
monde passionnant des réseaux et de la sécurité (cryptographie).
351
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
Prenons un cas concret : votre ordinateur chez vous est sous Linux, vous le laissez
allumé. Pendant la journée au boulot, vous avez besoin de lancer un téléchargement ou
de récupérer un document. Vous vous connectez à distance sur votre machine et vous
ouvrez une console comme si vous étiez en face de votre PC ! Tout ce que vous avez
appris à faire dans une console, vous pouvez le faire à distance depuis n'importe quelle
machine dans le monde.
Ce chapitre intéressera en particulier ceux qui ont besoin d'apprendre à gérer
un serveur dédié 1 . En eet, l'administration de serveur sous Linux se fait
presque exclusivement en ligne de commande à distance, à l'aide de SSH.
Le PC qui se connecte au serveur est appelé le client. Nous allons les représenter
comme sur la gure 23.1 dans les prochains schémas.
Actuellement, votre petit PC chez vous n'est pas considéré comme un serveur. . . mais
vous pouvez très facilement le transformer en serveur si vous le désirez, à condition
1. Et ils sont de plus en plus nombreux. Avoir son serveur permet d'héberger soi-même son site
web ou fournir des services, comme un serveur de jeux.
352
DE TELNET À SSH
De Telnet à SSH
Les protocoles
Pour communiquer entre eux en réseau, deux ordinateurs doivent utiliser le même
protocole. C'est un peu comme une langue : pour parler à quelqu'un, vous devez
parler la même langue que lui, sinon vous ne vous comprendrez pas.
Il existe de très nombreux protocoles pour que les ordinateurs puissent communiquer
entre eux. Il y en a un que vous avez forcément vu, c'est le HTTP (HyperText Transfer
Protocol ). Si, si, regardez par exemple l'adresse du Site du Zéro 3 . Le préxe http
signie que vous communiquez avec les serveurs du Site du Zéro à l'aide du protocole
HTTP. C'est le protocole utilisé sur le web pour s'échanger des pages web.
Mais il existe bien d'autres protocoles ! Par exemple le FTP (File Transfer Protocol,
protocole de transfert de chiers), l'IMAP (Internet Message Access Protocol, utilisé
pour s'échanger des e-mails), etc.
353
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
Voici ce qui pourrait se passer. Je force le trait, mais c'est pour vous donner une idée.
Imaginez qu'un PC militaire demande à un serveur de l'armée le code de lancement de
missiles (nucléaires, soyons fous), comme sur la gure 23.2.
354
DE TELNET À SSH
Figure 23.4 Wireshark intercepte les données qui circulent sur le réseau
Ça ne vous dérange pas que l'on vous espionne ? Soit. Mais quand vous allez vous
connecter au serveur, vous allez donner votre login et votre mot de passe. Rien que ça,
c'est dangereux (gure 23.5). Il ne faut pas que le login et le pass apparaissent en clair
sur le réseau !
355
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
Le cryptage symétrique
C'est la méthode de cryptage la plus simple. Cela ne veut pas dire qu'elle n'est pas
robuste 5 . Cela veut plutôt dire que le fonctionnement est simple à comprendre. :-)
Avec cette méthode, on utilise une clé (un mot de passe secret) pour crypter un message.
Par exemple, imaginons que cette clé soit topsecret (gure 23.6).
Pour décrypter ensuite le message, on utilise cette même clé (gure 23.7). . .
Il faut donc que la personne qui crypte et celle qui décrypte connaissent toutes deux
cette clé qui sert à crypter et décrypter.
Si le pirate intercepte un message crypté, il ne peut rien en faire s'il ne connaît
pas la clé secrète (gure 23.8) !
5. Il existe des cryptages symétriques très sûrs.
356
COMMENT SONT CRYPTÉS LES ÉCHANGES AVEC SSH ?
357
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
Ah. . . c'est bien, ça ! Mais il faut que le client et le serveur connaissent tous
les deux la clé de cryptage. Il faut donc que le client envoie d'abord au serveur
la clé pour que celui-ci puisse décrypter ses futurs messages. . .
Très bonne remarque : je vois que vous suivez, c'est bien. ;-)
En eet, pour que le schéma que l'on vient de voir puisse fonctionner, il faut que le
client et le serveur se soient transmis auparavant la clé magique qui sert à crypter et
décrypter. Mais comment font-ils pour se l'échanger ? S'ils l'envoient en clair, le pirate
va pouvoir l'intercepter et sera ensuite capable de décrypter tous les messages cryptés
qui passeront sur le réseau (voyez la gure 23.9) !
Le cryptage asymétrique
Le cryptage symétrique utilise une seule clé pour crypter et décrypter. Le cryptage
asymétrique, lui, utilise une clé pour crypter, et une autre pour décrypter.
Il y a donc deux clés :
une clé dite publique qui sert à crypter ;
358
COMMENT SONT CRYPTÉS LES ÉCHANGES AVEC SSH ?
359
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
B
Tutoriel sur RSA
Code web : 690764
360
COMMENT SONT CRYPTÉS LES ÉCHANGES AVEC SSH ?
361
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
Le serveur décrypte la clé reçue grâce à sa clé privée qu'il a gardée bien au chaud chez
lui (gure 23.15).
Le client et le serveur connaissent maintenant tous les deux la clé symétrique topsecret,
et à aucun moment ils ne l'ont échangée en clair sur le réseau ! Ils peuvent donc s'en-
voyer des messages cryptés de manière symétrique en toute tranquillité. Ce cryptage
est plus rapide et tout aussi sûr que le cryptage asymétrique car le pirate ne connaît
pas la clé (gure 23.16) !
Voilà comment SSH fonctionne pour créer un canal d'échange sécurisé. Tout est crypté
grâce à la clé symétrique que le client et le serveur se sont astucieusement commu-
niquée.
362
COMMENT SONT CRYPTÉS LES ÉCHANGES AVEC SSH ?
Figure 23.17 Le client peut envoyer son login et son mot de passe de manière
sécurisée
Non. En fait, tout se fait automatiquement. Vous allez juste avoir à entrer un login et
un mot de passe pour vous connecter à votre machine à distance. Mais j'estime que
c'était l'occasion idéale de vous expliquer comment fonctionne le protocole SSH. Ce
système est utilisé partout dans le monde ! Plus personne n'envisage de se connecter
en Telnet aujourd'hui.
363
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
Lors de l'installation, vous devriez voir certaines étapes intéressantes s'eectuer auto-
matiquement :
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
* Restarting OpenBSD Secure Shell server sshd [ OK ]
RSA et DSA sont deux algorithmes de cryptage asymétrique. Comme je vous l'ai dit
plus tôt, SSH peut travailler avec plusieurs algorithmes de cryptage diérents. Ce que
vous voyez là est l'étape de création d'une clé publique et d'une clé privée pour chacun
des deux algorithmes (RSA et DSA).
Ensuite, le programme de serveur SSH (appelé sshd) est lancé.
Normalement, le serveur SSH sera lancé à chaque démarrage. Si ce n'est pas le cas,
vous pouvez le lancer à tout moment avec la commande suivante :
7. Si vous voulez louer un serveur dédié, sachez qu'il existe de très nombreux hébergeurs qui en
proposent, comme par exemple OVH. Comme vous pourrez le constater, ça coûte cher (en même
temps, c'est un ordinateur à part entière que vous louez !). Sachez qu'il existe aussi des serveurs
low cost, moins chers (moins puissants mais ils peuvent sure), comme Kimsu et Dedibox. Je vous
recommande d'attendre un peu avant de louer un serveur dédié : cela représente un gros investissement
et il vaut mieux être sûr d'en avoir vraiment besoin.
364
SE CONNECTER AVEC SSH ET PUTTY
Logiquement, vous ne devriez pas avoir besoin de congurer quoi que ce soit, mais
sachez au besoin que le chier de conguration se trouve dans /etc/ssh/ssh_config.
Il faudra recharger SSH avec la commande sudo /etc/init.d/ssh reload pour que
les changements soient pris en compte.
Voilà : votre machine est désormais un serveur SSH ! Vous pouvez vous y connecter
depuis n'importe quel ordinateur sous Linux ou sous Windows dans le monde 8 .
Nous commencerons dans un premier temps par voir comment accéder à votre PC à
distance depuis une machine Linux.
Ouvrez une console sur le second PC et utilisez la commande ssh comme ceci :
ssh login@ip
Il faut remplacer login par votre login (mateo21, dans mon cas) et ip par l'adresse IP
de votre ordinateur.
Si vous vous connectez depuis chez un ami, il vous faut entrer l'IP internet
de votre PC que vous pouvez obtenir en allant sur www.whatismyip.com par
exemple. Si vous vous connectez depuis un autre PC chez vous (sur le même
réseau local), il vous faut entrer l'IP locale que vous devriez voir en tapant
la commande ifconfig (par exemple 192.168.0.3). Si vraiment vous n'avez
ni ami sous Linux ni second PC dans la maison, vous pouvez simuler une
connexion réseau en vous connectant depuis votre PC à votre PC. Utilisez
pour cela l'IP 127.0.0.1 (ou le mot localhost), ça marche toujours.
8. Pour peu que vous ne soyez pas derrière un pare-feu.
365
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
B
Obtenir votre IP
Code web : 318222
Si je suis chez un ami et que l'IP internet de mon ordinateur est 87.112.13.165, je vais
taper :
ssh mateo21@87.112.13.165
Si, faute de mieux, vous voulez tester en vous connectant chez vous depuis chez vous,
vous pouvez taper :
ssh mateo21@localhost
Cette seconde méthode marche toujours, mais c'est moins impressionnant parce que
vous ne faites que simuler une connexion réseau.
Normalement, le serveur devrait répondre au bout d'un moment et vous devriez voir
quelque chose comme ce qui suit :
Si vous n'avez pas de réponse du serveur, vériez que vous ne vous êtes
pas trompés d'IP. Vériez aussi que le port 22 n'est pas bloqué par un
pare-feu, car c'est celui utilisé par SSH par défaut. Si le serveur tourne sur
un autre port, il faudra préciser le numéro de ce port comme ceci : ssh
mateo21@87.112.13.165 -p 12451 (si le serveur fonctionne sur le port
12451 au lieu du port 22).
mateo21@localhost's password:
Vous pouvez l'entrer en toute sécurité, la communication est cryptée. ;-) Si vous entrez
le bon mot de passe, la console du PC de votre ami (ou votre propre console) devrait
366
SE CONNECTER AVEC SSH ET PUTTY
mateo21@mateo21-desktop:~$
Si aucune erreur ne s'ache, c'est que vous êtes bien connectés et que vous travaillez
désormais à distance sur votre machine ! Vous pouvez eectuer toutes les opérations
que vous voulez comme si vous étiez chez vous. Essayez de parcourir les dossiers pour
voir que ce sont bien les vôtres, et amusez-vous (pourquoi pas) à créer un chier (avec
Nano). Lorsque vous reviendrez sur votre PC, vous l'y retrouverez.
Vous pouvez aussi commander l'exécution d'un programme, d'une recherche, etc. Vous
savez déjà comment lancer un programme en tâche de fond pour qu'il continue de
s'exécuter même quand vous n'êtes pas connectés à la machine 9 .
Pour vous déconnecter, tapez logout ou son équivalent : la combinaison de touches
Ctrl + D.
367
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
remplir le champ en haut Host Name (or IP address) . Entrez-y l'adresse IP de votre
ordinateur sous Linux.
J'ai donné quelques explications à propos de l'adresse IP un peu plus haut,
lorsque j'ai parlé de la connexion SSH depuis Linux. Lisez donc les paragraphes
précédents si vous voulez plus d'informations à ce sujet.
Dans mon cas, je vais entrer l'adresse IP de mon PC sous Linux situé sur mon réseau
local (192.168.1.5 gure 23.19).
Vous pouvez changer le numéro du port si ce n'est pas 22, mais normalement c'est 22
par défaut.
Ensuite, vous n'avez plus qu'à cliquer sur le bouton Open tout en bas pour lancer
la connexion. Rien d'autre !
Si vous voulez sauvegarder l'IP et les paramètres pour ne pas devoir les retaper
à chaque fois, donnez un nom à cette connexion (par exemple, le nom de
votre ordinateur) dans le champ sous Saved Sessions , puis appuyez sur
le bouton Save . La prochaine fois, vous n'aurez qu'à double-cliquer sur
le nom de votre PC dans la liste pour vous y connecter directement.
La première fois que vous vous connectez à votre serveur, PuTTY devrait vous deman-
der une conrmation comme sur la gure 23.20.
C'est la même chose que sous Linux : on vous donne l'empreinte (ngerprint ) de votre
368
SE CONNECTER AVEC SSH ET PUTTY
369
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
serveur. Vous devez conrmer que c'est bien chez lui que vous voulez vous connecter.
Cliquez sur Oui pour conrmer. À l'avenir, on ne vous reposera plus la question.
Par contre, si le ngerprint change, un gros message d'avertissement s'achera. Cela
signiera soit que le serveur a été réinstallé, soit que quelqu'un est en train de se faire
passer pour le serveur (c'est ce que l'on appelle une attaque man-in-the-middle ). Cela
ne devrait fort heureusement pas vous arriver, du moins je l'espère. :-)
Le serveur vous demande alors le login et le mot de passe (gure 23.21).
Rappelez-vous qu'il est normal que les caractères ne s'achent pas quand
vous tapez votre mot de passe. Il n'y a même pas d'étoiles pour des raisons
de sécurité, an que quelqu'un ne soit pas tenté de compter le nombre de
caractères en regardant derrière votre épaule !
Si tout est bon, vous devriez être connectés à votre machine (gure 23.22) !
Et voilà, vous êtes chez vous ! Vous pouvez faire ce qui vous chante : lire vos chiers,
écrire des chiers, lancer une recherche, exécuter un programme. . . bref, vous êtes chez
vous.
Pour vous déconnecter, tapez logout ou son équivalent, la combinaison de touches
Ctrl + D.
370
L'IDENTIFICATION AUTOMATIQUE PAR CLÉ
371
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
ssh-keygen -t rsa
Vous pouvez remplacer rsa par dsa si vous voulez utiliser l'autre algorithme de cryp-
tage, mais ça n'a pas vraiment d'importance ici.
Lorsque vous tapez cette commande, vous allez voir plusieurs messages s'acher et il
vous sera demandé quelques petites précisions :
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mateo21/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mateo21/.ssh/id_rsa.
Your public key has been saved in /home/mateo21/.ssh/id_rsa.pub.
The key fingerprint is:
b7:22:94:aa:8c:fb:d3:ef:53:86:df:b9:37:40:bd:4d mateo21@mateo21-laptop
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . |
| . . . E |
| o.S.. + |
| o. o.... . |
| .. .+...o |
| o... ....o o |
|oo+. oo. .o . |
+-----------------+
Dans un premier temps, le client génère une paire de clés ( Generating public/private
rsa key pair ). Il doit ensuite sauvegarder ces clés dans des chiers (un pour la clé
publique, un pour la clé privée). On vous propose une valeur par défaut : je vous
conseille de ne rien changer et de taper simplement Entrée.
Ensuite, on vous demande une passphrase. C'est une phrase de passe qui va servir à
crypter la clé privée pour une meilleure sécurité. Là, vous avez deux choix :
372
L'IDENTIFICATION AUTOMATIQUE PAR CLÉ
soit vous tapez Entrée directement sans rien écrire, et la clé ne sera pas cryptée sur
votre machine ;
soit vous tapez un mot de passe de votre choix, et la clé sera cryptée.
Tout le monde ne met pas une phrase de passe. En fait, ça dépend du risque que
quelqu'un d'autre utilise la machine du client et puisse lire le chier contenant la très
secrète clé privée. Si le PC du client est votre PC chez vous et que personne d'autre ne
l'utilise, il y a assez peu de risques (à moins d'avoir un virus, un spyware. . .). Si c'est
en revanche un PC public, je vous recommande vivement de mettre une passphrase
pour chirer la clé qui sera enregistrée.
Si vous hésitez entre les deux méthodes, je vous recommande de rentrer une passphrase :
c'est quand même la méthode la plus sûre.
cd ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts
373
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
Le plus simple pour cela est d'utiliser la commande spéciale ssh-copy-id. Utilisez-la
comme ceci :
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Si vous devez vous connecter au serveur par un autre port que celui par défaut, basez-
vous sur la commande suivante :
ssh-copy-id -i id_rsa.pub "-p 14521 mateo21@88.92.107.7".
On vous demande votre mot de passe (celui de votre compte, pas la passphrase). En
fait, vous vous connectez par mot de passe encore une fois, pour pouvoir ajouter votre
clé publique sur le serveur.
La clé est ensuite automatiquement ajoutée à ~/.ssh/authorized_keys sur le ser-
veur. On vous invite à vérier si l'opération s'est bien déroulée en ouvrant le chier
authorized_keys, ce que vous pourrez faire plus tard si vous le voulez.
Se connecter !
Maintenant, connectez-vous au serveur comme vous le faisiez auparavant :
ssh login@ip
Par exemple :
$ ssh mateo21@88.92.107.7
Enter passphrase for key '/home/mateo21/.ssh/id_rsa':
On vous demande la phrase de passe pour décrypter votre clé privée. Entrez-la.
Normalement, si tout va bien, vous devriez être alors connectés au serveur.
Ou je suis le dernier des nuls, ou alors c'est ce système qui est nul. Auparavant,
on me demandait mon mot de passe. Maintenant, on me demande une phrase
de passe pour décrypter la clé privée. Où est le progrès ? ? ?
374
L'IDENTIFICATION AUTOMATIQUE PAR CLÉ
Je comprends votre frustration. ;-) En fait, si vous n'aviez pas mis de phrase de passe, on
ne vous aurait rien demandé et vous auriez été directement connectés. Heureusement,
il y a une solution pour ceux qui ont choisi la sécurité en utilisant une phrase de passe,
mais qui ne veulent quand même pas avoir à l'entrer à chaque fois : l'agent SSH.
L'agent SSH
L'agent SSH est un programme qui tourne en arrière-plan en mémoire. Il retient les
clés privées pendant toute la durée de votre session.
Tout ce que vous avez à faire est de lancer le programme ssh-add sur le PC du client :
$ ssh-add
Enter passphrase for /home/mateo21/.ssh/id_rsa:
Identity added: /home/mateo21/.ssh/id_rsa (/home/mateo21/.ssh/id_rsa)
375
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
convenables. Vous pouvez les changer, mais sachez qu'elles sont sûres et que vous pouvez
vous en contenter.
Cliquez sur le bouton Generate . Le programme va générer une paire de clés (pu-
blique et privée).
Pour l'aider à générer cette paire, le programme vous propose quelque chose
d'assez amusant : vous devez bouger la souris dans la fenêtre (gure 23.24).
Comme vous allez le faire aléatoirement, cela aidera Puttygen à générer des
clés aléatoires. Sous Linux, on utilise d'autres méthodes pour générer des clés
aléatoirement (il faut dire qu'en console, on n'a pas de souris).
Une fois que c'est fait, on vous ache la clé publique (gure 23.25) 10 .
Vous pouvez choisir d'entrer une passphrase ou non. Comme je vous l'ai expliqué plus
tôt, cela renforce la sécurité en cryptant la clé privée. Saisissez la passphrase dans les
champs Key passphrase et Conrm passphrase .
Ensuite, enregistrez la clé publique dans un chier en cliquant sur Save public key .
Vous pouvez nommer ce chier comme vous voulez, par exemple cle.pub. Enregistrez-
le où vous voulez. Puis enregistrez la clé privée en cliquant sur Save private key .
Donnez-lui l'extension .ppk : cle.ppk par exemple.
10. Comme vous le voyez, cela ne me dérange pas que tout le monde voie ma clé publique. Le
principe, c'est justement que tout le monde peut voir cette clé, mais ne peut rien en faire. Par contre,
la clé privée doit rester secrète.
376
L'IDENTIFICATION AUTOMATIQUE PAR CLÉ
377
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
cd ~/.ssh
mkdir .ssh
Rappel : votre clé publique est achée dans Puttygen, que vous ne devriez
pas avoir fermé. Pour coller la clé dans la console, utilisez la combinaison de
touches Shift + Inser plutôt que Ctrl + V.
Par exemple :
378
L'IDENTIFICATION AUTOMATIQUE PAR CLÉ
379
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
380
L'IDENTIFICATION AUTOMATIQUE PAR CLÉ
381
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
En eet, et ma réponse sera la même que pour ceux qui se connectent depuis Linux :
il faut utiliser un agent SSH. Ce programme va rester en mémoire et retenir votre
clé privée. Il ne vous demandera la passphrase qu'une fois au début ; ensuite, vous
pourrez vous connecter autant de fois que vous le souhaitez à autant de serveurs que
vous voulez sans avoir à entrer quoi que ce soit.
Notez que si l'agent SSH Pageant est pratique, il vaut mieux l'arrêter
si vous devez vous absenter de votre ordinateur un long moment et que
quelqu'un risque de l'utiliser. Sinon, n'importe qui peut se connecter à vos
serveurs sans avoir à entrer de mot de passe. Retenez bien : l'agent SSH est
un compromis entre la sécurité et le côté pratique. Il retient les clés pour
vous (du moins tant que le programme tourne). Si vous êtes des utilisateurs
intensifs de SSH, cela vous fera gagner beaucoup de temps.
Vous pouvez modier le raccourci qui lance Pageant pour que celui-ci charge votre
382
L'IDENTIFICATION AUTOMATIQUE PAR CLÉ
clé privée automatiquement dès son lancement. Faites un clic droit sur l'icône de Pa-
geant , allez dans Propriétés . Dans le champ Cible , rajoutez à la n en
paramètre le chemin de la clé à charger. Par exemple :
En résumé
On peut se connecter à distance à un ordinateur équipé de Linux et accéder à sa
console. C'est comme cela que l'on administre les serveurs sous Linux.
Le PC qui se connecte au serveur équipé de Linux est appelé le client. On peut
se connecter à une console Linux à distance depuis n'importe quel autre système
d'exploitation (Windows, Mac OS ou Linux).
Sous Windows, il faut installer le programme PuTTY pour se connecter à distance
à un PC équipé de Linux.
Sous Linux et Mac OS, on utilise la commande ssh à laquelle on indique son login
et l'adresse IP de la machine. Par exemple : ssh mateo21@74.141.18.33.
Les données qui sont échangées entre le client et le serveur sont cryptées grâce au
protocole SSH an de garantir la condentialité des échanges.
Pour éviter de devoir entrer son mot de passe à chaque fois que l'on se connecte
au serveur, on peut se créer une paire de clés d'identication. La clé publique ainsi
générée doit être envoyée sur le serveur, la clé privée restant sur le PC du client. La
connexion se fait alors sans mot de passe et reste sécurisée.
383
CHAPITRE 23. LA CONNEXION SÉCURISÉE À DISTANCE AVEC SSH
384
Chapitre 24
Transférer des chiers
Diculté :
V ous avez appris à vous connecter à un serveur à distance avec SSH. Désormais, grâce
au réseau, vous pouvez exécuter des commandes sur un ordinateur en prenant le
contrôle à distance.
On continue ici notre découverte du monde fabuleux des réseaux sous Linux. Un monde un
peu particulier, comme vous avez pu le découvrir : de gros eorts sont faits pour assurer la
sécurité des données grâce au cryptage, ce qui permet d'éviter de se faire voler ses données
personnelles, comme son mot de passe par exemple.
Dans ce chapitre, nous allons mettre l'accent sur le transfert de chiers : comment télé-
charger un chier ? Comment se connecter à un FTP, lire et télécharger des chiers ? Et
surtout, comment copier des chiers de manière sécurisée ?
385
CHAPITRE 24. TRANSFÉRER DES FICHIERS
$ wget http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-cd/
,→ debian-40r5-i386-businesscard.iso
$ wget http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-cd/
,→ debian-40r5-i386-businesscard.iso
--2008-12-05 12:43:25-- http://cdimage.debian.org/debian-cd/4.0_r5/
,→ i386/iso-cd/debian-40r5-i386-businesscard.iso
Résolution de cdimage.debian.org... 130.239.18.173, 130.239.18.137
Connexion vers cdimage.debian.org|130.239.18.173|:80... connecté.
requête HTTP transmise, en attente de la réponse... 302 Found
Emplacement: http://saimei.acc.umu.se/debian-cd/4.0_r5/i386/iso-cd/
,→ debian-40r5-i386-businesscard.iso [suivant]
--2008-12-05 12:43:25-- http://saimei.acc.umu.se/debian-cd/4.0_r5/
,→ i386/iso-cd/debian-40r5-i386-businesscard.iso
Résolution de saimei.acc.umu.se... 130.239.18.138
Connexion vers saimei.acc.umu.se|130.239.18.138|:80... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Longueur: 34181120 (33M) [application/octet-stream]
Saving to: `debian-40r5-i386-businesscard.iso'
Les informations au début sont assez nombreuses et ne nous intéressent pas vraiment.
Elles indiquent simplement comment le programme a communiqué avec le serveur qui
possédait le chier.
En bas, vous avez, dans l'ordre et sur la dernière ligne :
1. une barre de progression qui se met à jour ;
2. le nombre d'octets téléchargés ;
3. la vitesse de téléchargement ;
4. le temps restant estimé (eta).
Vous pouvez arrêter le téléchargement à tout moment en utilisant la combinaison Ctrl
+ C que vous avez déjà découverte.
386
WGET : TÉLÉCHARGEMENT DE FICHIERS
Le plus simple est d'ouvrir un navigateur web tel que Firefox là où vous avez accès
à un environnement graphique et de faire un clic droit sur le lien du chier que vous
voulez télécharger, pour enn sélectionner Copier l'adresse du lien . Vous pouvez
ensuite le coller dans la console.
Notez qu'il existe aussi des navigateurs en console tels que lynx (plutôt basique) et
links (assez complet) que vous pouvez télécharger et essayer si vous le souhaitez.
$ wget -c http://cdimage.debian.org/debian-cd/4.0_r5/i386/iso-cd/
,→ debian-40r5-i386-businesscard.iso
Pour que cela fonctionne, il ne faut bien évidemment pas supprimer le bout de chier
téléchargé sur votre disque. ;-) Si la reprise a fonctionné vous devriez voir une barre de
progression comme celle-ci :
Les +++ correspondent à la partie précédemment téléchargée. Cela vous conrme que
la reprise a bien fonctionné.
387
CHAPITRE 24. TRANSFÉRER DES FICHIERS
Il existe aussi rcp (Remote CoPy ) qui fait la même chose mais sans aucun
cryptage. Son utilisation est déconseillée.
scp s'utilise quasiment comme ssh. D'ailleurs ce n'est pas un hasard car scp s'appuie
sur ssh pour fonctionner. Là où ssh sert à ouvrir une console à distance (un shell),
scp est spécialement conçue pour copier des chiers d'un ordinateur à un autre.
On l'utilise comme ceci :
Le premier élément à indiquer est la position du chier que l'on veut copier. Le second
élément correspond au répertoire de destination où il doit être copié.
Chacun de ces éléments peut s'écrire sous la forme suivante : login@ip:nom_fichier.
Le login et l'IP sont facultatifs. Si vous n'écrivez ni login ni IP, scp considérera que le
chier se trouve sur votre ordinateur.
Vous pouvez remplacer l'IP par un nom d'hôte (un nom de domaine) si vous
en avez un qui est plus facile à retenir. Par exemple, le serveur Lisa du Site
du Zéro peut être appelé en écrivant lisa.simple-it.fr au lieu d'une IP
compliquée comme 85.123.10.201.
Ici, je demande à copier le chier image.png qui se trouve sur mon ordinateur vers un
autre ordinateur dont l'IP est 85.123.10.201. Sur cet autre ordinateur, le chier sera
placé dans le dossier /home/mateo21/images/.
Notez que l'on peut utiliser le symbole ~ pour indiquer mon répertoire personnel
(/home/mateo21/). D'autre part, si cet autre ordinateur a un nom d'hôte facile à
retenir, j'aurais tendance à l'utiliser à la place de l'IP. J'aurais donc pu écrire quelque
chose comme ce qui suit et qui aurait été identique :
388
SCP : COPIER DES FICHIERS SUR LE RÉSEAU
Lorsque vous lancez la commande, scp essaiera de se connecter au serveur ayant l'IP
indiquée avec le login que vous avez demandé (mateo21, dans mon cas). On vous
demandera alors votre mot de passe ou, mieux, scp utilisera votre clé privée si elle
existe 1 .
Dans cet exemple, je copie le chier image.png qui se trouve sur le serveur dont
l'IP est 85.123.10.201 et place cette copie sur mon propre ordinateur sous le nom
copie_image_sur_mon_pc.png.
Si je veux, je peux aussi copier le chier sans en changer le nom :
scp mateo21@85.123.10.201:image.png .
Notez le point à la n. Il signie copier dans le répertoire dans lequel je me trouve .
Le chier image.png sera donc placé sur mon ordinateur dans le dossier actuel.
Le piège du port
Si le serveur SSH auquel vous essayez de vous connecter n'est pas sur le port standard
(22), il faudra indiquer le numéro du port avec l'option -P :
1. Nous avons vu que, combiné à l'agent SSH, cela nous évitait d'avoir à retaper notre passphrase
à chaque fois !
389
CHAPITRE 24. TRANSFÉRER DES FICHIERS
La commande ssh a aussi une option pour indiquer un port ; vous vous en
souvenez peut-être, c'est. . . -p ! Faites donc attention car avec ssh c'est un
p minuscule qu'il faut utiliser alors qu'avec scp c'est un P majuscule !
Je peux vous dire que je me suis trompé un bon nombre de fois.
390
FTP & SFTP : TRANSFÉRER DES FICHIERS
$ ftp ftp.debian.org
Le serveur FTP devrait répondre en vous demandant un login et un mot de passe. Pour
les serveurs FTP publics, le login à utiliser est toujours anonymous (anonyme).
$ ftp ftp.debian.org
Connected to ftp.debian.org.
220 saens.debian.org FTP server (vsftpd)
Name (ftp.debian.org:mateo21): anonymous
331 Please specify the password.
Password:
Pour le mot de passe, peu importe ce que vous mettez, vous serez acceptés. :-)
Vous devriez alors voir s'acher un message de bienvenue se terminant par :
Vous avez maintenant un prompt 2 ftp> qui vous permet de rentrer des commandes
FTP.
ftp> ls
200 PORT command successful. Consider using PASV.
2. Il s'agit du terme anglais pour invite de commandes.
391
CHAPITRE 24. TRANSFÉRER DES FICHIERS
Les lignes commençant par un numéro sont des messages envoyés par le serveur FTP.
Vous noterez que les chiers s'achent comme si l'on avait écrit ls -l.
Il y a seulement un répertoire, rendez-vous donc dans debian :
ftp> cd debian
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-rw-r-- 1 1176 1176 940 Oct 27 20:29 README
-rw-rw-r-- 1 1176 1176 1290 Dec 04 2000 README.CD-manufacture
-rw-rw-r-- 1 1176 1176 2426 Oct 27 20:29 README.html
-rw-r--r-- 1 1176 1176 124286 Dec 03 19:52 README.mirrors.html
-rw-r--r-- 1 1176 1176 62059 Dec 03 19:52 README.mirrors.txt
drwxr-sr-x 9 1176 1176 4096 Nov 16 18:56 dists
drwxr-sr-x 3 1176 1176 4096 Nov 11 22:16 doc
drwxr-sr-x 3 1176 1176 4096 Dec 05 09:08 indices
-rw-rw-r-- 1 1176 1176 4557196 Dec 05 08:49 ls-lR.gz
-rw-r--r-- 1 1176 1176 154934 Dec 05 08:49 ls-lR.patch.gz
drwxr-sr-x 5 1176 1176 4096 Nov 11 22:16 pool
drwxr-sr-x 4 1176 1176 4096 Nov 18 09:04 project
226 Directory send OK.
Le transfert de chiers
Si vous souhaitez récupérer un chier ou en envoyer un, il y a deux commandes à
connaître (gure 24.3) :
put : envoie un chier vers le serveur ;
get : télécharge un chier depuis le serveur.
Notez qu'il est impossible d'utiliser put sur les serveurs FTP publics comme
celui auquel nous sommes connectés. Seul le téléchargement de chiers est
autorisé. D'autres commandes, comme celle qui permet de changer les chmod
des chiers, ne sont pas activées non plus.
Vous pouvez par exemple récupérer le chier README en écrivant get README :
392
FTP & SFTP : TRANSFÉRER DES FICHIERS
ftp> !pwd
/home/mateo21
Si vous voulez changer de dossier chez vous, utilisez !cd. Pour lister les chiers chez
vous, utilisez !ls. Bref, vous m'avez compris, il sut de faire précéder les commandes
d'un point d'exclamation pour qu'elles s'exécutent chez vous et non sur le serveur FTP.
393
CHAPITRE 24. TRANSFÉRER DES FICHIERS
Pour remédier à cela, on a inventé sftp, qui repose sur SSH pour sécuriser la connexion :
sftp login@ip
Par exemple :
sftp mateo21@lisa.simple-it.fr
Pour se connecter en SFTP, on utilise le même port que SSH (soit 22 par
défaut). Si votre serveur SSH fonctionne sur un autre port, vous devrez le
préciser comme ceci : sftp -oPort=27401 mateo21@serveur.
À l'heure actuelle, le SFTP reste assez peu utilisé. Les hébergeurs web utilisent toujours
le FTP classique alors que la plupart des logiciels graphiques comme FileZilla sont
pourtant capables de se connecter en SFTP.
394
RSYNC : SYNCHRONISER DES FICHIERS POUR UNE SAUVEGARDE
Figure 24.5 rsync permet d'eectuer une sauvegarde incrémentielle rapide et ecace
395
CHAPITRE 24. TRANSFÉRER DES FICHIERS
C'est là que rsync intervient. C'est une sorte de scp intelligent : il compare et analyse
les diérences entre deux dossiers puis copie uniquement les changements. C'est ce que
veut dire le mot incrémentiel .
rsync peut être utilisé pour eectuer une sauvegarde entre deux dossiers sur le même
ordinateur ou bien entre deux dossiers sur deux ordinateurs diérents (gure 24.5). En
général, on l'utilise plutôt pour sauvegarder entre deux ordinateurs diérents, bien sûr.
Dans un premier temps, pour faire simple, nous allons voir comment fonctionne la
sauvegarde entre deux dossiers de votre ordinateur puis nous eectuerons ensuite la
sauvegarde sur un autre PC.
$ ls
espagne1.jpg italie1.jpg italie2.jpg italie3.jpg
Vous pouvez créer comme moi des chiers de test à l'aide de la commande touch.
Maintenant, lancez un rsync comme ceci :
396
RSYNC : SYNCHRONISER DES FICHIERS POUR UNE SAUVEGARDE
Comme vous pouvez le voir, cette fois aucun chier n'a été envoyé ! En eet, rsync
étant intelligent, il a détecté qu'il n'y avait aucun changement et donc qu'il n'y avait
pas lieu de copier quoi que ce soit.
Testons un peu ce qui se passe si l'on ajoute un chier :
$ touch Images/espagne2.jpg
$ rsync -arv Images/ backups/
sending incremental file list
./
espagne2.jpg
Le nouveau chier espagne2.jpg a bien été copié ! ;-) Vous pouvez aussi essayer de
modier un chier, vous verrez que rsync copie bien ceux qui ont été modiés.
J'ai essayé de supprimer un chier mais celui-ci n'a pas été supprimé dans le
répertoire de sauvegarde. Comment faire ?
Par défaut, rsync ne supprime pas les chiers dans le répertoire de copie. Si vous
voulez lui demander de le faire, pour que le contenu soit strictement identique, rajoutez
--delete. Par exemple, si je supprime le chier italie3.jpg :
$ rm Images/italie3.jpg
$ rsync -arv --delete Images/ backups/
sending incremental file list
deleting italie3.jpg
397
CHAPITRE 24. TRANSFÉRER DES FICHIERS
rsync peut faire bien d'autres choses, comme exclure un dossier de la sauvegarde
(option --exclude). Je vous laisse lire le manuel pour savoir un peu tout ce que vous
pouvez faire.
Si votre serveur SSH écoute sur un autre port que celui par défaut, il faudra rajouter
-e "ssh -p port" :
398
RSYNC : SYNCHRONISER DES FICHIERS POUR UNE SAUVEGARDE
En résumé
wget permet de télécharger un chier.
Pour copier des chiers d'un ordinateur à un autre, on utilise scp. Il fonctionne à
l'aide de SSH, donc le transfert est sécurisé.
On peut se connecter à un serveur FTP avec la commande ftp pour y télécharger
et y envoyer des chiers.
Il existe une alternative sécurisée à FTP qui crypte les échanges grâce à SSH : sftp.
rsync permet de synchroniser le contenu de deux dossiers sur un même ordinateur
ou sur deux ordinateurs diérents. Il est particulièrement utile pour eectuer des
sauvegardes.
399
CHAPITRE 24. TRANSFÉRER DES FICHIERS
400
Chapitre 25
Analyser le réseau et ltrer le trac
avec un pare-feu
Diculté :
C e chapitre vous propose d'apprendre à maîtriser le trac réseau qui passe par votre
ordinateur. En eet, lorsque vous êtes connectés à l'internet, vous avez régulièrement
des applications qui vont se connecter puis télécharger et envoyer des informations.
Comment surveiller ce qui se passe ? Quelle application est en train de communiquer et sur
quel port ?
Savoir paramétrer un pare-feu est essentiel, que ce soit sur votre PC à la maison ou, à plus
forte raison, sur un serveur. Cela vous protège de manière ecace contre les programmes
qui voudraient échanger des informations sur le réseau sans votre accord. C'est une mesure
de sécurité essentielle qu'il faut connaître et dont aucun administrateur système sérieux ne
peut se passer. ;-)
401
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
Je vous propose de découvrir d'abord quelques outils de base qui vont vous permettre de
bien comprendre comment une IP est associée à un nom d'hôte. Puis nous analyserons
le trac en cours avec un outil comme netstat. Enn et ce ne sera pas le plus
facile, je vous préviens nous apprivoiserons le célèbre pare-feu utilisé sous Linux :
iptables. Il est assez complexe à paramétrer, mais heureusement des programmes
supplémentaires peuvent nous simplier le travail.
Cette adresse est au format IPv4. À l'heure actuelle, c'est encore le type d'IP
le plus utilisé, mais ces adresses sont appelées petit à petit à être remplacées
par la norme IPv6. Bientôt, tout le monde aura donc une IP qui ressemblera
plutôt à quelque chose comme ceci : fe80::209:62fa:fb80:29f2.
Figure 25.1 Les ordinateurs sont identiés sur le réseau par leur adresse IP
402
HOST & WHOIS : QUI ÊTES-VOUS ?
$ host siteduzero.com
siteduzero.com has address 92.243.25.239
siteduzero.com mail is handled by 0 mail.siteduzero.com
La commande nous répond que l'IP de siteduzero.com est 92.243.25.239. Elle nous
indique par ailleurs le nom du serveur qui gère les e-mails.
Maintenant, essayons à l'envers avec l'IP :
$ host 92.243.25.239
123.219.248.80.in-addr.arpa domain name pointer lisa.simple-it.fr.
403
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
127.0.0.1 localhost
127.0.1.1 mateo21-laptop
À gauche l'IP, à droite le nom d'hôte correspondant. Écrire localhost est donc équi-
valent à écrire 127.0.0.1.
Vous pouvez ajouter des lignes sur le même modèle pour faire correspondre une IP à
un nom d'hôte.
Quel intérêt ? Cela dépend. Parfois, les DNS ne fonctionnent pas bien pendant de
courtes périodes (c'est très rare, mais ça peut arriver). Dans ce cas, il est plus simple
de modier votre chier hosts pour pouvoir continuer à consulter votre site préféré en
forçant l'association du nom d'hôte et de l'IP.
Vous pourriez donc ajouter :
92.243.25.239 siteduzero.com
1. Si vous voulez en découvrir plus sur le fonctionnement des DNS, je vous invite à lire mon tutoriel
en ligne sur le Site du Zéro (code web : 872971).
404
HOST & WHOIS : QUI ÊTES-VOUS ?
192.168.0.5 pc-papa
Ainsi, écrire pc-papa vous permet d'accéder à cet ordinateur sans avoir à retenir
l'adresse IP correspondante.
$ whois siteduzero.com
[...]
domain: siteduzero.com
reg_created: 2002-06-09 21:53:29
expires: 2011-06-09 21:53:29
created: 2007-02-27 06:56:43
changed: 2010-04-13 15:35:32
transfer-prohibited: yes
ns0: a.dns.gandi.net
ns1: b.dns.gandi.net
ns2: c.dns.gandi.net
owner-c:
nic-hdl: PD2500-GANDI
owner-name: Simple IT SARL
organisation: Simple IT SARL
person: Pierre DUBUC
address: 23 Rue Le Peletier
zipcode: 75009
city: Paris
country: France
405
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
[...]
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:90:f5:56:44:5a
UP BROADCAST MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0~:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)
Interruption:220 Adresse de base:0xe000
406
IFCONFIG & NETSTAT : GÉRER ET ANALYSER LE TRAFIC RÉSEAU
On distingue ici trois interfaces réseau. Vous en avez peut-être plus, peut-être moins ;
tout dépend de votre ordinateur.
Les interfaces que j'ai sont assez courantes, détaillons-les :
eth0 : cela correspond à la connexion par câble réseau (ce qu'on appelle en général
le câble RJ45 gure 25.3). Si votre PC est relié au réseau via un câble, c'est
sûrement ce moyen de communication que vous utilisez actuellement. Notez que
certains ordinateurs (et notamment les serveurs) ont plusieurs sorties réseau laires.
Dans ce cas, vous devriez voir aussi des interfaces eth1, eth2, etc.
lo : c'est la boucle locale. Tout le monde devrait avoir cette interface. Elle corres-
pond à une connexion à. . . vous-mêmes. C'est pour cela qu'on l'appelle la boucle
locale : tout ce qui est envoyé par là vous revient automatiquement. Cela peut pa-
raître inutile, mais on a parfois besoin de se connecter à soi-même pour des raisons
pratiques.
wlan0 : il s'agit d'une connexion sans-l type Wi-Fi. Là encore, bien que ce soit plus
rare, si vous avez plusieurs cartes réseau sans l, vous aurez un wlan1, wlan2, etc.
Remplacez :
interface par le nom de l'interface que vous voulez modier (eth0, wlan0. . .) ;
etat par up ou down selon si vous voulez activer ou désactiver l'interface.
407
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
Exemple :
. . . désactive l'interface eth0 (laire). Plus aucun trac ne pourra alors circuler par
l'interface eth0.
$ ifconfig eth0 up
. . . la réactive de nouveau.
Vous aurez peut-être besoin de connaître ces commandes un jour ou l'autre si vous
devez désactiver puis réactiver une interface pour prendre en compte des changements
dans la conguration de votre réseau.
$ netstat -i
Table d'interfaces noyau
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 0 0 0 0 0
,→ BMU
lo 16436 0 10 0 0 0 10 0 0 0
,→ LRU
wlan0 1500 0 5161 0 0 0 4810 0 0 0
,→ BMRU
Vous n'aurez pas nécessairement les mêmes lignes que moi ; tout dépend de votre or-
dinateur. Il s'agit là d'un tableau présentant, pour chaque interface réseau que vous
avez, une série de statistiques d'utilisation. On retrouve ici nos interfaces eth0, lo et
wlan0.
408
IFCONFIG & NETSTAT : GÉRER ET ANALYSER LE TRAFIC RÉSEAU
Comme vous le voyez sur la colonne RX-ERR, c'est wlan0 qui est l'interface la plus active.
Et vous noterez que lo est un petit peu utilisée elle aussi ; comme quoi se connecter à
soi-même peut s'avérer utile.
Je ne rentrerai pas dans le détail de ces colonnes car c'est assez technique, mais vous
savez au moins détecter l'activité de vos interfaces grâce à cette commande.
$ netstat -ta
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 mateo21-laptop.lo:60997 debian-mirror.mirro:ftp ESTABLISHE
tcp 0 4107 mateo21-laptop.lo:33721 lisa.simple-it.fr:www ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
Ce tableau vous indique qui, depuis l'adresse locale, est connecté à qui (à une adresse
distante).
Chaque connexion a un état. Ici, on repère les états LISTEN et ESTABLISHED. De nom-
breux états sont possibles ; en voici quelques-uns à connaître :
409
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
410
IFCONFIG & NETSTAT : GÉRER ET ANALYSER LE TRAFIC RÉSEAU
$ netstat -tan
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 15 0 192.168.1.2:60997 128.101.240.212:21 CLOSE_WAIT
tcp 0 0 192.168.1.2:54001 80.248.219.123:80 ESTABLISHE
tcp6 0 0 :::22 :::* LISTEN
Cela correspond aux ports que l'on connaît : 22 pour SSH, 21 pour FTP, 80 pour le
web, etc.
$ netstat -lt
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
$ netstat -s
Ip:
7443 paquets reçus au total
1 avec des en-têtes invalides
8 avec des adresses invalides
0 réacheminés
0 paquets arrivant rejetés
7354 paquets entrants délivrés
7226 requêtes envoyées
Icmp:
0 Messages ICMP reçus
0 messages ICMP entrant échoués
[...]
411
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
Figure 25.5 Un pare-feu (ou rewall ) permet de bloquer l'accès à certains ports
Par exemple, si je veux empêcher toute connexion FTP (parce que je considère que le
FTP n'est pas sûr), je peux souhaiter bloquer le port 21 (utilisé par FTP). En général
la technique ne consiste pas à bloquer certains ports mais plutôt à bloquer par défaut
tous les ports et à en autoriser seulement quelques-uns.
Attends. . . c'est quoi le but, exactement ? Bloquer tout le trac réseau ? Pour
quoi faire ?
C'est avant tout une question de sécurité. Le but d'un pare-feu est d'empêcher que des
programmes puissent communiquer sur le réseau sans votre accord. Aujourd'hui, même
sous Windows 4 , un pare-feu est intégré par défaut, tant le problème est important.
Avoir un pare-feu ne vous prémunit pas contre les virus (bien que sous Linux, ils
restent rares). En revanche, cela rend la tâche particulièrement dicile aux pirates
qui voudraient accéder à votre machine.
Vous vous souvenez de ce que je vous ai expliqué un peu plus tôt ? Chaque ordinateur
4. Depuis Windows XP SP2
412
IPTABLES : LE PARE-FEU DE RÉFÉRENCE
possède plusieurs portes d'entrée possibles. Notre objectif est de bloquer par défaut
toutes ces portes et d'autoriser seulement celles dont vous avez besoin, que vous consi-
dérez comme sûres et que vous utilisez. Par exemple, le port 80 utilisé pour le web
est un port sûr que vous pouvez activer.
Notez, et c'est important, qu'il y a des portes d'entrée et des portes de sortie sur votre
ordinateur (ce ne sont pas nécessairement les mêmes).
$ sudo su
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
413
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
Première chose à savoir : l'ordre des règles est important. En eet, iptables les
lit de haut en bas et la position de ces règles inue sur le résultat nal. Sachez donc
que les règles sont numérotées.
Pour avoir les numéros, ajoutez --line-numbers :
# iptables -L --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- anywhere anywhere tcp dpt:www
2 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
3 ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
414
IPTABLES : LE PARE-FEU DE RÉFÉRENCE
Remplacez chain par la section qui vous intéresse (INPUT ou OUTPUT), protocole par
le nom du protocole à ltrer (TCP, UDP, ICMP. . .) et enn décision par la décision
415
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
à prendre : ACCEPT pour accepter le paquet, REJECT pour le rejeter ou bien DROP pour
l'ignorer complètement.
Le mieux est de découvrir comment on ajoute une règle par une série d'exemples. ;-)
Cela ajoute à la section INPUT (donc, pour le trac entrant) une règle sur les données
reçues via le protocole TCP sur le port de ssh (vous pouvez remplacer ssh par le
numéro du port, soit 22). Lorsque votre ordinateur recevra des données en TCP sur le
port de SSH, celles-ci seront acceptées ; cela vous permettra donc de vous connecter à
distance à votre PC via SSH.
Vous pouvez faire de même avec d'autres ports :
Si vous ne précisez pas de port (en omettant la section dport), tous les ports
seront acceptés !
Comme je n'ai pas indiqué de section --dport, cette règle s'applique à tous les ports,
mais pour les pings (icmp) uniquement !
Votre ordinateur répondra alors aux pings pour indiquer qu'il est bien en vie.
416
IPTABLES : LE PARE-FEU DE RÉFÉRENCE
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
ACCEPT icmp -- anywhere anywhere
Ces deux règles utilisent des options un peu diérentes de celles que nous avons vues
jusqu'ici. Voici quelques explications.
1. La première règle autorise tout le trac sur l'interface de loopback locale grâce
à -i lo. Il n'y a pas de risque à autoriser votre ordinateur à communiquer avec
lui-même, d'autant plus qu'il en a parfois besoin !
2. La seconde règle autorise toutes les connexions qui sont déjà à l'état ESTABLISHED
ou RELATED. En clair, elle autorise toutes les connexions qui ont été demandées par
votre PC. Là encore, cela permet d'assouplir le pare-feu et de le rendre fonctionnel
pour une utilisation quotidienne.
iptables devrait maintenant indiquer que par défaut tout est refusé, sauf ce qui est
indiqué par les lignes dans le tableau :
417
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
ACCEPT icmp -- anywhere anywhere
Le ltrage est radical. Nous n'avons pas autorisé beaucoup de ports et il se pourrait
que vous vous rendiez compte que certaines applications n'arrivent plus à accéder à
l'internet (normal, leur port doit être ltré).
À vous de savoir quels ports ces applications utilisent pour modier les règles en consé-
quence. Au besoin, pensez à faire de même pour les règles de sortie (OUTPUT).
En résumé
Sur l'internet, chaque ordinateur est identié par une adresse IP. Par exemple :
86.172.120.28.
On peut associer à chaque adresse IP un nom d'hôte, plus facile à retenir, comme
lisa.simple-it.fr. Écrire le nom d'hôte est équivalent à écrire l'adresse IP.
418
IPTABLES : LE PARE-FEU DE RÉFÉRENCE
419
CHAPITRE 25. ANALYSER LE RÉSEAU ET FILTRER LE TRAFIC AVEC UN
PARE-FEU
420
Chapitre 26
Compiler un programme depuis les
sources
Diculté :
N ous avons découvert dans un chapitre précédent combien il était facile d'installer
de nouveaux programmes sous Ubuntu à l'aide de la commande apt-get. Cette
technique permet de télécharger et installer la grande majorité des programmes.
Cependant, il arrive parfois qu'il soit nécessaire d'installer un programme manuellement car
il n'apparaît pas dans apt-get. Dans ce cas, il faut récupérer les sources du programme
et les compiler soi-même pour créer un exécutable !
Cette opération peut se révéler assez complexe dans certains cas. Il nous faudra télécharger
les sources, les extraire d'une archive gzippée et les compiler manuellement. Je vous propose
dans ce chapitre de mettre en pratique vos connaissances en découvrant pas à pas la
compilation d'un programme.
421
CHAPITRE 26. COMPILER UN PROGRAMME DEPUIS LES SOURCES
En fait, ce concept existe mais on l'évite. Pourquoi ? La raison est qu'il existe une
grande diversité de distributions Linux et d'architectures d'ordinateurs (selon le type
de processeur par exemple). Cette diversité est une des grandes forces de Linux, mais il
est du coup presque impossible de proposer un programme d'installation qui convienne
à tout le monde et qui pourra s'installer sur toutes les machines. Il faudrait créer autant
de programmes d'installation qu'il existe de types de machines diérents !
Quand apt-get ne propose pas le programme que l'on recherche, il est parfois pos-
sible de trouver sur le site web du logiciel un paquetage .deb. C'est en quelque sorte
l'équivalent du programme d'installation, mais celui-ci est spécique à Debian et à
ses distributions dérivées 2 . Les .deb ne fonctionnent pas sur les distributions utilisant
d'autres outils ; Red Hat utilise des .rpm par exemple 3 .
Si, par bonheur, vous trouvez le .deb du programme que vous souhaitez installer,
téléchargez-le et double-cliquez dessus. Essayons par exemple de récupérer de cette
façon Google Chrome sur le site web de Google :
B
Télécharger Google Chrome
Code web : 971458
Une fois le .deb téléchargé, double-cliquez dessus. Une fenêtre apparaît pour vous
proposer d'installer le logiciel (gure 26.1).
Si aucune erreur n'apparaît, vous avez de la chance, vous pouvez procéder à l'installa-
tion. Sinon, cela signie :
soit que vous avez téléchargé un .deb ne correspondant pas à votre machine. Vériez
que vous n'avez pas pris une version 32 bits au lieu de 64 bits (ou inversement) ;
soit qu'il vous manque des dépendances pour pouvoir installer convenablement le
programme. Et là, cela peut vite devenir un casse-tête ! Il faut d'abord installer le
programme manquant avant d'aller plus loin.
1. C'est le cas des programmes en cours de développement ou de ceux qui ne sont pas encore assez
connus pour être intégrés aux dépôts ociels d'Ubuntu.
2. Dont fait partie Ubuntu.
3. Notez que le programme alien est capable de convertir un .rpm en .deb au besoin.
422
QUAND IL N'Y A PAS D'AUTRE SOLUTION : LA COMPILATION
Si même le paquetage .deb n'est pas disponible, il ne reste alors qu'une solution :
récupérer le code source du programme et le compiler soi-même. On peut ainsi créer
un exécutable 4 spécialement optimisé pour sa machine.
4. L'exécutable est l'équivalent du .exe de Windows, même s'il n'a en général pas d'extension sous
Linux.
423
CHAPITRE 26. COMPILER UN PROGRAMME DEPUIS LES SOURCES
Ceci étant fait, nous pouvons à présent nous intéresser à la compilation proprement
dite.
Ici, je vous propose d'apprendre à compiler un petit programme assez simple : htop 6 .
Il s'agit d'un outil alternatif à top, qui permet de voir la liste des programmes en cours
d'exécution. Cela sera l'occasion de découvrir les principales commandes de compilation
qui vous serviront pour installer la plupart des logiciels.
La première étape consiste à se rendre sur le site web du logiciel htop. Une recherche
sur le web devrait vous y amener rapidement.
B
Site web de htop
Code web : 175372
À partir de là, il est indispensable de savoir lire l'anglais. Recherchez sur le site la section
Downloads , puis, sur la page des téléchargaments, recherchez les sources. Vous
devriez nalement arriver sur une page qui vous propose de télécharger les dernières
sources du programme :
Télécharger les sources de
B htop
Code web : 954263
Vous allez télécharger une archive compressée .tar.gz. Vous connaissez la commande
pour extraire ce type d'archive, alors allez-y !
5. Instructions qui sont, bien souvent, en anglais.
6. Notez qu'on le retrouve dans les dépôts via apt-get, mais nous allons tout de même essayer de
le compiler manuellement pour nous entraîner.
424
QUAND IL N'Y A PAS D'AUTRE SOLUTION : LA COMPILATION
On peut maintenant se rendre dans le dossier où les chiers sources ont été décompres-
sés :
cd htop-0.8.3
./configure
configure est un programme qui analyse votre ordinateur et qui vérie si tous les
outils nécessaires à la compilation du logiciel que vous souhaitez installer sont bien
présents. Son exécution peut prendre du temps car il eectue de nombreux tests :
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
[...]
425
CHAPITRE 26. COMPILER UN PROGRAMME DEPUIS LES SOURCES
Une fois le paquet installé, relancez configure et croisez les doigts 7 pour que l'erreur
disparaisse :
./configure
Si configure n'ache plus la même erreur, vous avez gagné (pour le moment). Il reste
maintenant deux possibilités :
soit vous avez une nouvelle erreur et vous devrez la résoudre de la même manière :
en eectuant une recherche sur l'internet pour comprendre ce qui ne va pas. Le plus
souvent, il sura d'installer le paquet manquant avec apt-get ;
soit vous n'avez pas d'erreur et configure parvient jusqu'à son terme. Victoire !
Si tout va bien, configure n'achera pas d'erreur. Vous devriez voir s'acher des
lignes similaires à celles-ci :
7. Cela n'a pas été scientiquement prouvé, mais croiser les doigts peut augmenter vos chances de
réussite. La magie vaudou est aussi un bon moyen de se sortir des situations compliquées, mais elle
est à réserver aux utilisateurs expérimentés. ;-)
426
QUAND IL N'Y A PAS D'AUTRE SOLUTION : LA COMPILATION
Le programme est prêt à être compilé ! Rassurez-vous, le plus dur est derrière vous. :-)
Il sut maintenant de lancer la compilation à l'aide d'une commande toute simple :
make
Durant la compilation, des lignes barbares s'acheront dans votre console. Vous ne
devriez pas avoir à vous en préoccuper, tous les problèmes ayant normalement été
détectés auparavant par configure.
Une fois la compilation terminée, l'exécutable devrait avoir été créé. Il ne reste plus
qu'à l'installer, c'est-à-dire à le copier dans le bon répertoire. Là encore, vous n'avez
pas à vous poser beaucoup de questions. Exécutez la commande suivante :
sudo make install
Il faut être root pour cette opération (d'où le sudo) car le programme va être copié
dans des répertoires système.
Une fois que cela est fait, le programme est installé ! Nous pouvons à présent exécuter
htop en tapant le nom de la commande :
htop
427
CHAPITRE 26. COMPILER UN PROGRAMME DEPUIS LES SOURCES
En résumé
La plupart des programmes peuvent être installés facilement avec la commande
apt-get.
Certains programmes ne peuvent pas être installés via apt-get car ils ne sont pas
référencés dans les dépôts d'Ubuntu. Dans ce cas, on peut rechercher sur le web un
paquet .deb du programme, sous réserve qu'il existe.
Si la solution précédente échoue, on n'a pas d'autre choix que de compiler le pro-
gramme à partir de ses sources. Cela consiste à eectuer les opérations suivantes
dans l'ordre :
1. télécharger les sources du programme sur le web (souvent archivées au format
.tar.gz) ;
2. décompresser l'archive (tar zxvf archive.tar.gz) ;
3. exécuter ./configure et résoudre les problèmes ;
4. exécuter make pour compiler ;
5. exécuter sudo make install pour installer le programme.
428
Cinquième partie
Automatisez vos tâches avec des
scripts Bash
429
Chapitre 27
Vim : l'éditeur de texte du
programmeur
Diculté :
D ans cette dernière partie, nous allons réunir toutes les connaissances que nous avons
acquises concernant les commandes utilisées sous Linux. Nous allons les combiner et
créer ce que l'on appelle des scripts shell.
Le scripting shell est un minilangage de programmation intégré à tous les systèmes Linux
et qui vous permet d'automatiser des tâches répétitives. Il s'agit d'un élément très puissant
du système que vous devez absolument connaître.
Toutefois, pour programmer, il va vous falloir utiliser un éditeur de texte digne de ce nom.
Certes, vous connaissez déjà Nano mais comme je vous l'ai dit ce dernier est très basique.
Nous l'avons utilisé au départ pour simplier, mais il est temps à présent de passer à quelque
chose de plus complet et de plus puissant : Vim (prononcez Vi aille ème ).
431
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
Installer Vim
Sous Linux, deux puissants éditeurs de texte en console sont à connaître.
Vim : il s'agit d'une version améliorée de l'un des plus anciens éditeurs en console :
Vi (prononcez les lettres en anglais Vi aille ). Vim (VI iMproved, version
améliorée de Vi) est largement répandu et généralement disponible par défaut sur la
plupart des OS basés sur Unix, comme Linux.
Emacs : développé par Richard Stallman, le fondateur du projet GNU dont je vous
ai parlé au début du livre, cet éditeur concurrent a lui aussi bien des atouts. On le
retrouve plus spéciquement sous Linux mais il est rarement installé par défaut (un
petit apt-get sut, toutefois). Il peut être complété par toute une série de plugins
qui lui permettent de faire navigateur web, lecteur audio. . . Bref, c'est un peu un
outil à tout faire.
Sachez qu'il est courant que les gens adoptent et défendent bec et ongles l'un ou l'autre
de ces éditeurs. Choisir un éditeur de texte sous Linux, c'est en fait un peu comme
choisir une religion 1 .
En fait, rien ne vous empêche d'apprendre à utiliser les deux. Toutefois ces logiciels
sont tellement complets qu'il vous faudra du temps pour vous habituer à chacun d'eux.
Dans la pratique, on prend l'habitude d'en choisir un et de s'y tenir : il est donc rare
de voir quelqu'un naviguer entre les deux.
432
INSTALLER VIM
Je craignais cette question mais il fallait bien qu'elle soit posée un jour. . . Pour ma
part, je n'ai jamais eu l'occasion de prendre le temps d'apprendre à utiliser Emacs. Le
professeur qui m'a initié à Linux était un habitué de Vim (mais il n'a jamais dit du
mal d'Emacs, je le jure !).
Je suis donc à mon tour un habitué de Vim et c'est lui que je vous présenterai dans ce
livre.
vimtutor
433
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
Petit aperçu :
==============================================================================
= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.5.fr.2
==============================================================================
Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en
décrire suffisamment afin de vous permettre d'utiliser simplement Vim.
Il est important de garder en tête que ce cours est conçu pour apprendre
par la pratique. Cela signifie que vous devez exécuter les commandes
pour les apprendre correctement. Si vous vous contentez de lire le
texte, vous oublierez les commandes !
Il faut compter en général une bonne demi-heure pour suivre le Vimtutor. Cela
vous fait une bonne petite introduction au logiciel, mais gardez bien entendu
à l'esprit que les possibilités sont bien plus grandes et que vous n'aurez pas
tout vu à l'issue de sa lecture.
vim
434
LES MODES D'ÉDITION DE VIM
Figure 27.1 Vim On a connu moins austère, mais c'est un éditeur de texte, après
tout
Si on ne vous explique rien, vous risquez d'être un peu perdus. Pire, vous aurez même
du mal à sortir de Vim 4 .
Voilà ce qu'il faut savoir. . . et qu'on aurait dû m'expliquer dès le départ, d'ailleurs.
Vim possède trois modes de travail diérents.
Mode interactif : c'est le mode par défaut par lequel vous commencez. En lançant
Vim, vous êtes donc en mode interactif. Dans ce mode, vous ne pouvez pas écrire de
texte (oui, je sais, il s'agit d'un comble pour un éditeur de texte !). N'essayez donc
pas d'appuyer sur des lettres au hasard car vous risqueriez de faire n'importe quoi !
Le mode interactif est un mode puissant qui permet de se déplacer dans le texte,
de supprimer une ligne, copier-coller du texte, rejoindre une ligne précise, annuler
ses actions, etc. Chaque action peut être déclenchée en appuyant sur une touche du
clavier (par exemple, on appuie sur u pour annuler la dernière action).
Mode insertion : celui-là, c'est celui que vous connaissez ! Vous tapez du texte et
ce dernier s'insère à l'endroit où se trouve le curseur. Pour entrer dans ce mode, il
existe plusieurs possibilités. L'une des plus courantes est d'appuyer sur la touche i
(insertion ). Pour en sortir, il faut appuyer sur la touche Echap.
Mode commande : ce mode permet de lancer des commandes telles que quitter ,
enregistrer , etc. Vous pouvez aussi l'utiliser pour activer des options de Vim
(comme la coloration syntaxique, l'achage du numéro des lignes. . .). Vous pouvez
même envoyer des commandes au shell (la console) telles que ls, locate, cp, etc.
Pour activer ce mode, vous devez être en mode interactif et appuyer sur la touche
deux points : . Vous validerez la commande avec la touche Entrée et reviendrez
alors au mode interactif.
435
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
Je résume. Vim possède trois modes (gure 27.2) : interactif, insertion et commande.
Vous démarrez en mode interactif. Le seul mode que vous connaissez et qui ne sera
pas nouveau pour vous est le mode insertion. Les deux autres modes (interactif et
commande) vont quelque peu vous surprendre.
Pourquoi avoir intégré dans un éditeur de texte autant de modes ayant l'air
si complexes ? Pourquoi n'y a-t-il pas de menus ? Et pourquoi ne pas utiliser
plutôt un éditeur de texte graphique ? C'est quand même plus simple avec
une souris !
Cela fait beaucoup de questions dites donc. ;-)
Je vais essayer de vous répondre simplement et, dans un premier temps, il va falloir
que vous me croyiez sur parole : si des gens se sont amusés à créer tous ces modes
et tous ces raccourcis clavier, ce n'est pas juste pour le plaisir tordu de faire des choses
compliquées.
En fait, vous allez rapidement vous rendre compte que vous pouvez faire des choses
que vous ne soupçonniez pas réalisables avec un éditeur de texte : supprimer
le mot actuel, couper le texte du curseur jusqu'à la n de la ligne, coller quatre fois le
texte qui se trouve dans le presse-papier, sauter à la ligne no 453, sauter à la dernière
ligne, etc.
Toutes ces choses-là se font au clavier et, pour la plupart d'entre elles, vous devrez
retenir par c÷ur quelle touche correspond à quelle action. C'est un peu contraignant
au départ, mais imaginez que c'est comme apprendre à taper des dix doigts au clavier
comme un dactylo : au début, c'est dicile ; vous avez l'impression de ramer, d'aller
moins vite qu'avant, mais petit à petit vous gagnez en productivité, vous allez de plus
en plus vite et vous nissez par vous demander comment vous avez pu rester autant
436
OPÉRATIONS BASIQUES (DÉPLACEMENT, ÉCRITURE,
ENREGISTREMENT. . .)
Et pour ceux qui voudraient une interface graphique, sachez que Vim a été
porté sous Gnome sous le nom gVim . Vous pouvez donc l'installer 5 et le
lancer : le fonctionnement est identique à celui du Vim de la console. Il est
même disponible en version Windows (gure 27.3). . . si ce n'est pas beau,
ça ! Par défaut, cette fenêtre ache des menus et une barre d'outils, comme
un éditeur de texte classique. Un habitué du Vim console aura bien entendu
plutôt tendance à utiliser les raccourcis clavier, qui permettent de gagner du
temps.
437
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
L'ouverture de Vim
Pour le moment, si vous lancez Vim en tapant simplement la commande suivante sans
aucun paramètre :
vim
. . . il s'ouvre sur un nouveau chier vide que vous avez déjà vu (gure 27.4).
Figure 27.4 Vim (le texte d'introduction que vous voyez disparaîtra dès que vous
écrirez les premiers caractères)
vim nomdufichier
i : insérer du texte
Nous allons partir d'un chier vide. Nous souhaitons commencer par entrer du texte
(quoi de plus normal pour un éditeur de texte, après tout ?).
Appuyez sur i ( i minuscule). Vous basculez alors en mode insertion ; à présent, il
vous est possible de taper du texte (gure 27.5).
Notez le message -- INSERT -- en bas de l'écran, qui vous conrme que vous êtes en
mode insertion.
438
OPÉRATIONS BASIQUES (DÉPLACEMENT, ÉCRITURE,
ENREGISTREMENT. . .)
Écrivez quelques lignes comme moi puis appuyez sur la touche Echap pour revenir au
mode interactif (le mode normal dans lequel vous vous trouviez au départ). Le message
-- INSERT -- disparaît alors et vous revoilà en mode interactif.
Le déplacement
h, j, k, l : se déplacer dans tous les sens
En mode interactif, il est possible de déplacer le curseur au sein du texte. Pour cela,
on utilise les touches :
h : aller à gauche ;
j : aller en bas ;
k : aller en haut ;
l : aller à droite.
QUOIII ? C'est le comble ! On ne peut même pas utiliser les èches du clavier
pour se déplacer ? !
Si si, vous pouvez également les utiliser : vous n'avez qu'à essayer pour voir. D'ailleurs,
en mode insertion, c'est la seule chose qui fonctionne.
:w : enregistrer le chier
Pour enregistrer votre chier, vous devez être au préalable en mode interactif (appuyez
sur Echap pour vous en assurer).
Appuyez ensuite sur la touche deux points : pour passer en mode commande,
puis tapez w (write ) suivi du nom du chier. La commande doit s'acher en bas.
Dans mon cas, j'ai donc tapé :w monfichier 6 (gure 27.7). Appuyez ensuite sur la
touche Entrée pour valider. Le bas de l'écran doit indiquer que le chier a été écrit
(written ) :
:q : quitter
Maintenant que vous avez enregistré, vous pouvez quitter Vim en tapant :q.
J'ai essayé de quitter en ayant fait des modications après avoir enregistré et
un message d'erreur s'ache en rouge : No write since last change .
6. Notez que j'aurais tout aussi bien pu donner une extension .txt à mon chier.
440
OPÉRATIONS STANDARD (COPIER, COLLER, ANNULER. . .)
Vim vous interdit de quitter si vous n'avez pas enregistré vos changements. Vous pou-
vez toutefois forcer la fermeture du logiciel en ajoutant un point d'exclamation à la
n : :q!. Cette fois, il n'y aura aucune erreur.
441
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
(nombre)x
Par exemple, si vous tapez 4x (4 puis x), vous supprimerez les quatre prochaines lettres
en partant du curseur.
Vous devez taper 4 puis x. Ne vous étonnez pas si rien ne s'ache à l'écran
lorsque vous tapez 4 : c'est normal. Écrivez la commande jusqu'au bout, cela
fonctionnera.
Encore une fois, ne vous étonnez pas si juste après avoir tapé 2 rien ne s'ache
à l'écran. L'information est gardée en mémoire par Vim, mais l'action ne sera
vraiment exécutée que lorsque vous aurez tapé entièrement 2dd.
Note importante : la ligne ainsi supprimée est en fait coupée et placée en mémoire.
Elle peut être collée, comme on le verra plus loin, avec la touche p.
dw : supprimer un mot
Placez le curseur sur la première lettre d'un mot. Tapez ensuite dw (delete word ) :
cela supprime le mot complet ! Si le curseur est positionné au milieu du mot, vous ne
supprimerez que les prochains caractères de celui-ci (jusqu'à l'espace qui suit).
Vous pouvez aussi supprimer les trois prochains mots en tapant 3dw. Notez que le 3
peut être placé entre le d et le w ; cela revient au même : d3w (qui peut se lire delete
3 words ).
442
OPÉRATIONS STANDARD (COPIER, COLLER, ANNULER. . .)
p : coller
Si vous avez coupé du texte avec dd ou copié du texte avec yy (ou un de leurs
équivalents) vous pouvez ensuite le coller avec la touche p.
Attention, retenez bien ceci : si vous avez copié une ligne en mémoire et que
vous appuyez sur p, elle sera collée sur la ligne située après le curseur. On
est parfois surpris de voir où se colle le texte ; prenez donc le temps de vous
y habituer.
Vous pouvez aussi coller plusieurs fois un texte en faisant précéder le p d'un nombre.
Par exemple, 8p collera huit fois le texte en mémoire.
Si je place mon curseur sur une ligne, que je tape yy puis 8p, je la collerai donc huit
fois (gure 27.8) !
443
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
G : sauter à la ligne no X
Toutes les lignes d'un chier possèdent un numéro. La numérotation commence à 1.
Regardez bien en bas à droite de Vim, vous devriez voir quelque chose comme 4,3.
4 correspond au numéro de la ligne sur laquelle se trouve le curseur, et 3 au numéro
de la colonne (3e lettre de la ligne).
Vous pouvez par exemple directement sauter à la ligne no 7 en tapant 7G (attention,
c'est un G majuscule, donc pensez à laisser la touche Maj appuyée).
Pour sauter à la dernière ligne, tapez simplement G. Pour revenir à la première ligne,
tapez gg.
/ : rechercher un mot
Si vous tapez /, vous passez en mode recherche. Le curseur se place en bas de l'écran
(vous indiquant que vous êtes passés en mode commande). Écrivez ensuite le mot que
7. Vous commencez à connaître la formule ; c'est toujours la même :-D
444
OPÉRATIONS AVANCÉES (SPLIT, FUSION, RECHERCHE. . .)
vous recherchez, par exemple remplir : /remplir. Tapez ensuite sur Entrée pour
valider.
Le curseur se place alors sur la prochaine occurrence de remplir dans le chier.
Pour passer à la prochaine occurrence du mot, plus bas dans le chier (s'il apparaît
plusieurs fois), appuyez sur n. Pour rechercher en arrière, appuyez sur N (Maj + n).
Si vous souhaitez dès le départ lancer une recherche qui remonte vers le début
du chier, utilisez ? au lieu de / pour lancer la recherche ; le fonctionnement
reste le même.
:r : fusion de chiers
Avec :r, vous pouvez insérer un chier à la position du curseur. Vous devez indiquer
le nom du chier à insérer, par exemple : :r autrefichier.
L'autocomplétion avec Tab fonctionne là aussi, donc pas besoin d'écrire le nom du
chier en entier !
445
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
446
LES OPTIONS DE VIM
447
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
$ cp /etc/vim/vimrc ~/.vimrc
448
LES OPTIONS DE VIM
$ vim .vimrc
" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
"syntax on
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
Les lignes commençant par " sont des commentaires. Je vous recommande de les
lire, ils fournissent des informations utiles.
Passons maintenant à l'activation de quelques commandes bien utiles. Je vous recom-
mande de travailler comme moi, avec le chier de conguration .vimrc, et d'activer les
options qui vous plaisent en décommentant les lignes concernées. Pour cela, la meilleure
façon de procéder est de se mettre en mode interactif, de se déplacer avec hjkl et d'ap-
puyer sur x lorsque le curseur est sur un guillemet pour le supprimer et activer ainsi
l'option.
449
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
syntax on
Notez qu'il faut enregistrer, quitter et relancer Vim pour que le changement
soit pris en compte. . . sauf bien sûr si vous activez l'option à la volée en
tapant dans Vim :set syntax=ON.
set background=dark
set number
set showcmd
450
LES OPTIONS DE VIM
set ignorecase
set mouse=a
Désormais, vous pourrez cliquer avec la souris sur une lettre pour y déplacer le curseur
directement. Vous pourrez également utiliser la molette de la souris pour vous déplacer
dans le chier.
Il vous sera également possible de sélectionner du texte à l'aide de la souris.
Vous passerez alors en mode visuel. Dans ce mode, vous pouvez supprimer
le texte sélectionné (avec x, comme d'habitude), mais aussi mettre le texte
tout en majuscules (U), minuscules (u), etc.
451
CHAPITRE 27. VIM : L'ÉDITEUR DE TEXTE DU PROGRAMMEUR
En résumé
Vim est un éditeur de texte très puissant en console et qui ore plus de possibilités
que Nano, que nous avons découvert plus tôt dans cet ouvrage. Son grand concurrent
est Emacs.
Dans Vim, il existe trois modes : interactif, insertion et commande.
Le mode par défaut est le mode interactif. Il faut appuyer sur la touche i pour insérer
du texte et sur la touche Echap pour revenir au mode interactif.
On peut lancer des commandes en appuyant sur la touche deux points : depuis le
mode interactif. Par exemple, :w enregistre le chier, :q quitte Vim et :wq eectue
les deux à la fois.
Il existe de nombreux raccourcis à connaître pour bien utiliser Vim ; il faut prendre
le temps de les apprendre pour exploiter pleinement le logiciel.
On peut modier le chier .vimrc pour activer certaines options de Vim, comme la
coloration automatique du code.
452
Chapitre 28
Introduction aux scripts shell
Diculté :
V ous venez d'apprendre à utiliser un éditeur de texte puissant comme Vim. Cela va
vous être particulièrement utile pour les chapitres à venir.
Entrons maintenant dans le vif du sujet : la programmation shell. De quoi s'agit-il ? Ima-
ginez un minilangage de programmation intégré à Linux. Ce n'est pas un langage aussi
complet que peuvent l'être le C, le C++ ou le Java par exemple, mais cela permet d'au-
tomatiser la plupart de vos tâches : sauvegarde des données, surveillance de la charge de
votre machine, etc.
On aurait très bien pu faire tout cela en créant un programme en C par exemple. Le gros
avantage du langage shell est d'être totalement intégré à Linux : il n'y a rien à installer,
rien à compiler. Et surtout : vous avez très peu de nouvelles choses à apprendre. En eet,
toutes les commandes que l'on utilise dans les scripts shell sont des commandes du système
que vous connaissez déjà : ls, cut, grep, sort. . .
453
CHAPITRE 28. INTRODUCTION AUX SCRIPTS SHELL
On parlera beaucoup de shell dans cette section. De quoi s'agit-il exactement ? Nous
répondrons à cette question en premier. Ensuite, nous réaliserons notre tout premier
script shell qui ache un message à l'écran. . . et nous pourrons alors passer aux choses
sérieuses dès le chapitre suivant !
C'est ça, en eet. Voici les noms de quelques-uns des principaux shells qui existent.
sh : Bourne Shell. L'ancêtre de tous les shells.
bash : Bourne Again Shell. Une amélioration du Bourne Shell, disponible par défaut
sous Linux et Mac OS X.
ksh : Korn Shell. Un shell puissant assez présent sur les Unix propriétaires, mais
aussi disponible en version libre, compatible avec bash.
csh : C Shell. Un shell utilisant une syntaxe proche du langage C.
tcsh : Tenex C Shell. Amélioration du C Shell.
zsh : Z Shell. Shell assez récent reprenant les meilleures idées de bash, ksh et tcsh.
Il y en a quelques autres, mais vous avez là les principaux.
Que faut-il savoir ? Tout d'abord que l'ancêtre de tous les shells est le sh (Bourne Shell ).
C'est le plus vieux et il est installé sur tous les OS basés sur Unix. Il est néanmoins
454
QU'EST-CE QU'UN SHELL ?
À quoi peut bien servir le sh aujourd'hui alors, si bash est par défaut sous
Linux ?
sh reste toujours plus répandu que bash. En fait, vous pouvez être sûrs que tous les
OS basés sur Unix possèdent sh, mais ils n'ont pas tous forcément bash. Certains OS
basés sur Unix, notamment les OS propriétaires (AIX et Solaris. . .), utilisent d'autres
types de shells ; le ksh y est par exemple très répandu.
455
CHAPITRE 28. INTRODUCTION AUX SCRIPTS SHELL
456
QU'EST-CE QU'UN SHELL ?
Une fois installé, il faut demander à l'utiliser pour votre compte utilisateur. Pour cela,
tapez :
$ chsh
chsh signie Change Shell. On vous demandera où se trouve le programme qui gère
le shell. Vous devrez indiquer /bin/ksh pour ksh, /bin/sh pour sh, /bin/bash pour
bash, etc.
457
CHAPITRE 28. INTRODUCTION AUX SCRIPTS SHELL
Création du chier
Commençons par créer un nouveau chier pour notre script. Le plus simple est d'ouvrir
Vim en lui donnant le nom du nouveau chier à créer :
$ vim essai.sh
Si essai.sh n'existe pas, il sera créé (ce qui sera le cas ici).
J'ai donné ici l'extension .sh à mon chier. On le fait souvent par convention
pour indiquer que c'est un script shell, mais sachez que ce n'est pas une
obligation. Certains scripts shell n'ont d'ailleurs pas d'extension du tout 1 .
#!/bin/bash
458
NOTRE PREMIER SCRIPT
Bien que non indispensable, cette ligne permet de s'assurer que le script est bien exécuté
avec le bon shell. En l'absence de cette ligne, c'est le shell de l'utilisateur qui sera
chargé. Cela pose un problème : si votre script est écrit pour bash et que la personne
qui l'exécute utilise ksh, il y a de fortes chances pour que le script ne fonctionne pas
correctement !
La ligne du sha-bang permet donc de charger le bon shell avant l'exécution du
script. À partir de maintenant, vous devrez la mettre au tout début de chacun de vos
scripts.
Exécution de commandes
Après le sha-bang, nous pouvons commencer à coder. Le principe est très simple : il
vous sut d'écrire les commandes que vous souhaitez exécuter. Ce sont les mêmes que
celles que vous tapiez dans l'invite de commandes !
ls : pour lister les chiers du répertoire.
cd : pour changer de répertoire.
mkdir : pour créer un répertoire.
grep : pour rechercher un mot.
sort : pour trier des mots.
etc.
Bref, tout ce que vous avez appris, vous pouvez le réutiliser ici ! ;-)
Allez, on va commencer par quelque chose de très simple : un ls. On va donc créer un
script bash qui va juste se contenter d'acher le contenu du dossier courant :
#!/bin/bash
ls
C'est tout !
Les commentaires
Notez que vous pouvez aussi ajouter des commentaires dans votre script. Ce sont des
lignes qui ne seront pas exécutées mais qui permettent d'expliquer ce que fait votre
script.
Tous les commentaires commencent par un #. Par exemple :
#!/bin/bash
Vous avez sûrement remarqué que la ligne du sha-bang commence aussi par un #. . .
Oui, c'est un commentaire aussi, mais considérez que c'est un commentaire spécial
qui a un sens. Il fait un peu exception.
459
CHAPITRE 28. INTRODUCTION AUX SCRIPTS SHELL
$ ls -l
total 4
-rw-r--r-- 1 mateo21 mateo21 17 2009-03-13 14:33 essai.sh
Ce qui nous intéresse ici, ce sont les droits sur le chier : -rw-r--r--. Si vous vous
souvenez un petit peu du chapitre sur les droits, vous devriez vous rendre compte que
notre script peut être lu par tout le monde (r), écrit uniquement par nous (w), et n'est
pas exécutable (pas de x).
Or, pour exécuter un script, il faut que le chier ait le droit exécutable . Le plus
simple pour donner ce droit est d'écrire :
$ chmod +x essai.sh
$ ls -l
total 4
-rwxr-xr-x 1 mateo21 mateo21 17 2009-03-13 14:33 essai.sh
Tout le monde a maintenant le droit d'exécuter le script. Si vous voulez, vous pouvez
limiter ce droit à vous-mêmes mais pour cela je vous invite à revoir le cours sur les
droits p. 189 car je ne vais pas me répéter. :-)
Exécution du script
Le script s'exécute maintenant comme n'importe quel programme, en tapant ./
devant le nom du script :
$ ./essai.sh
essai.sh
460
EXÉCUTER LE SCRIPT BASH
Que fait le script ? Il fait juste un ls, donc il ache la liste des chiers présents dans
le répertoire (ici, il y avait seulement essai.sh dans mon répertoire).
Bien entendu, ce script est inutile ; il était plus simple de taper ls directement. Cepen-
dant, vous devez vous douter que l'on va pouvoir faire beaucoup mieux que ça dans les
prochains chapitres.
Vous pouvez déjà modier votre script pour qu'avant tout chose il vous donne également
le nom du répertoire dans lequel vous vous trouvez :
#!/bin/bash
pwd
ls
$ ./essai.sh
/home/mateo21/scripts
essai.sh
Exécution de débogage
Plus tard, vous ferez probablement de gros scripts et risquerez de rencontrer des bugs.
Il faut donc dès à présent que vous sachiez comment déboguer un script.
Il faut l'exécuter comme ceci :
$ bash -x essai.sh
$ bash -x essai.sh
+ pwd
/home/mateo21/scripts
+ ls
essai.sh
461
CHAPITRE 28. INTRODUCTION AUX SCRIPTS SHELL
Comment font les autres programmes pour pouvoir être exécutés depuis n'im-
porte quel répertoire sans ./ devant ?
Ils sont placés dans un des répertoires du PATH. Le PATH est une variable système
qui indique où sont les programmes exécutables sur votre ordinateur. Si vous tapez
echo $PATH vous aurez la liste de ces répertoires spéciaux .
Il vous sut donc de déplacer ou copier votre script dans un de ces répertoires, comme
/bin, /usr/bin ou /usr/local/bin (ou encore un autre répertoire du PATH). Notez
qu'il faut être root pour pouvoir faire cela.
Une fois que c'est fait, vous pourrez alors taper simplement essai.sh pour exécuter
votre programme et ce quel que soit le répertoire dans lequel vous vous trouverez !
$ essai.sh
/home/mateo21/scripts
essai.sh
En résumé
Contrairement aux apparences, il existe plusieurs environnements console diérents :
ce sont les shells. Ce sont eux qui gèrent l'invite de commandes et ses fonctionnalités
comme l'historique des commandes, la recherche Ctrl + R, l'autocomplétion des
commandes. . .
Le shell utilisé par défaut sous Ubuntu est bash, mais il existe aussi ksh, zsh, etc.
Il est possible d'automatiser une série de commandes. On crée pour cela un chier
contenant la liste des commandes à exécuter, appelé script shell. On dit que l'on fait
de la programmation shell.
En fonction du shell utilisé, on dispose de diérents outils pour créer son script shell.
Nous utiliserons ici bash, donc notre chier de script doit commencer par la ligne
#!/bin/bash.
Dans le chier de script, il sut d'écrire les commandes à exécuter les unes après les
autres, chacune sur une ligne diérente.
Pour exécuter le script (et donc exécuter la liste des commandes qu'il contient) il faut
donner les droits d'exécution au chier (chmod +x script.sh) et lancer l'exécution
du script avec la commande ./script.sh.
462
Chapitre 29
Acher et manipuler des variables
Diculté :
C omme dans tous les langages de programmation, on trouve en bash ce que l'on appelle
des variables. Elles nous permettent de stocker temporairement des informations en
mémoire. C'est en fait la base de la programmation.
Les variables en bash sont assez particulières. Il faut être très rigoureux lorsqu'on les utilise.
Si vous avez fait du C ou d'autres langages de programmation, vous allez être un peu
surpris par leur mode de fonctionnement ; soyez donc attentifs. Et si vous n'avez jamais
programmé, soyez attentifs aussi. ;-)
463
CHAPITRE 29. AFFICHER ET MANIPULER DES VARIABLES
$ vim variables.sh
La première ligne de tous nos scripts doit indiquer quel shell est utilisé, comme nous
l'avons appris plus tôt. Commencez donc par écrire :
#!/bin/bash
#!/bin/bash
Exécutez-le pour voir ce qui se passe (après avoir modié les droits pour le rendre
exécutable, bien sûr) :
$ ./variables.sh
$
464
ECHO : AFFICHER UNE VARIABLE
Il ne se passe rien !
Il met en mémoire le message Bonjour tout le monde, et c'est tout ! Rien ne s'ache
à l'écran !
Pour acher une variable, il va falloir utiliser une commande dont je ne vous ai pas
encore parlé. . .
Comme vous le voyez, c'est simple comme bonjour. Les guillemets ne sont pas requis.
En fait, la commande echo ache dans la console tous les paramètres qu'elle reçoit.
Ici, nous avons envoyé quatre paramètres :
Salut ;
tout ;
le ;
monde.
Chacun des mots était considéré comme un paramètre que echo a aché. Si vous
mettez des guillemets autour de votre message, celui-ci sera considéré comme étant un
seul et même paramètre (le résultat sera visuellement le même) :
Si vous voulez insérer des retours à la ligne, il faudra activer le paramètre -e et utiliser
le symbole \n :
465
CHAPITRE 29. AFFICHER ET MANIPULER DES VARIABLES
#!/bin/bash
Résultat :
Maintenant, supposons que l'on veuille acher à la fois du texte et la variable. Nous
serions tentés d'écrire :
#!/bin/bash
Le problème est que cela ne fonctionne pas comme on le souhaite car cela ache :
Les quotes
Il est possible d'utiliser des quotes pour délimiter un paramètre contenant des espaces.
Il existe trois types de quotes :
466
ECHO : AFFICHER UNE VARIABLE
Avec de simples quotes, la variable n'est pas analysée et le $ est aché tel quel.
message=`pwd`
echo "Vous êtes dans le dossier $message"
467
CHAPITRE 29. AFFICHER ET MANIPULER DES VARIABLES
La commande pwd a été exécutée et son contenu inséré dans la variable message ! Nous
avons ensuite aché le contenu de la variable.
Cela peut paraître un peu tordu, mais c'est réellement utile. Nous nous en resservirons
dans les chapitres suivants.
read nomvariable
Adaptons notre script pour qu'il nous demande notre nom puis qu'il nous l'ache :
#!/bin/bash
read nom
echo "Bonjour $nom !"
Lorsque vous lancez ce script, rien ne s'ache, mais vous pouvez taper du texte (votre
nom, par exemple) :
Mathieu
Bonjour Mathieu !
Notez que la première ligne correspond au texte que j'ai tapé au clavier.
#!/bin/bash
Deschamps Mathieu
Bonjour Deschamps Mathieu !
468
READ : DEMANDER UNE SAISIE
read lit ce que vous tapez mot par mot (en considérant que les mots sont
séparés par des espaces). Il assigne chaque mot à une variable diérente,
d'où le fait que le nom et le prénom ont été correctement et respectivement
assignés à $nom et $prenom. Si vous rentrez plus de mots au clavier que
vous n'avez prévu de variables pour en stocker, la dernière variable de la liste
récupèrera tous les mots restants. En clair, si j'avais tapé pour le programme
précédent Nebra Mathieu Cyril , la variable $prenom aurait eu pour valeur
Mathieu Cyril .
#!/bin/bash
C'est mieux !
#!/bin/bash
469
CHAPITRE 29. AFFICHER ET MANIPULER DES VARIABLES
Notez que le bash coupe automatiquement au bout de 5 caractères sans que vous ayez
besoin d'appuyer sur la touche Entrée. Ce n'est pas très esthétique du coup, parce que
le message s'ache sur la même ligne. Pour éviter cela, vous pouvez faire un echo avec
des \n, comme vous avez appris à le faire plus tôt :
#!/bin/bash
#!/bin/bash
#!/bin/bash
Comme vous pouvez le constater, le mot de passe que j'ai entré ne s'ache pas lors de
l'instruction read.
470
EFFECTUER DES OPÉRATIONS MATHÉMATIQUES
#!/bin/bash
471
CHAPITRE 29. AFFICHER ET MANIPULER DES VARIABLES
Notez qu'il est possible aussi de contracter les commandes, comme cela se fait en
langage C. Ainsi :
. . . équivaut à écrire :
Actuellement, les résultats renvoyés sont des nombres entiers et non des
nombres décimaux. Si vous voulez travailler avec des nombres décimaux,
renseignez-vous sur le fonctionnement de la commande bc.
$ env
ORBIT_SOCKETDIR=/tmp/orbit-mateo21
GLADE_PIXMAP_PATH=:/usr/share/glade3/pixmaps
TERM=xterm
SHELL=/bin/bash
GTK_MODULES=canberra-gtk-module
USER=mateo21
PATH=/home/mateo21/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:
,→ /usr/bin:/sbin:/bin:/usr/games
GDM_XSERVER_LOCATION=local
PWD=/home/mateo21/bin
EDITOR=nano
SHLVL=1
HOME=/home/mateo21
OLDPWD=/home/mateo21
[ ... ]
Il y en a beaucoup. Certaines sont très utiles, d'autres moins. Parmi celles que je peux
vous commenter et qui peuvent s'avérer utiles, on trouve :
SHELL : indique quel type de shell est en cours d'utilisation (sh, bash, ksh. . .) ;
472
LES VARIABLES DES PARAMÈTRES
PATH : une liste des répertoires qui contiennent des exécutables que vous souhaitez
pouvoir lancer sans indiquer leur répertoire. Nous en avons parlé un peu plus tôt. Si
un programme se trouve dans un de ces dossiers, vous pourrez l'invoquer quel que
soit le dossier dans lequel vous vous trouvez ;
EDITOR : l'éditeur de texte par défaut qui s'ouvre lorsque cela est nécessaire ;
HOME : la position de votre dossier home ;
PWD : le dossier dans lequel vous vous trouvez ;
OLDPWD : le dossier dans lequel vous vous trouviez auparavant.
Notez que les noms de ces variables sont, par convention, écrits en majuscules.
Comment utiliser ces variables dans vos scripts ? C'est très simple, il sut de les appeler
par leur nom !
Exemple :
#!/bin/bash
Plus rarement, vous pourriez avoir besoin de dénir votre propre variable
d'environnement. Pour cela, on utilise la commande export que vous avez
pu voir dans votre .bashrc.
Le problème, c'est que nous n'avons toujours pas vu comment récupérer ces paramètres
dans notre script. Pourtant, c'est très simple à réaliser !
En eet, des variables sont automatiquement créées :
$# : contient le nombre de paramètres ;
$0 : contient le nom du script exécuté (ici ./variables.sh) ;
$1 : contient le premier paramètre ;
473
CHAPITRE 29. AFFICHER ET MANIPULER DES VARIABLES
Et si on utilise plus de neuf paramètres ? J'ai cru voir que les variables s'ar-
rêtaient à $9. . .
Là, ça va un peu loin, mais ça peut arriver. On peut imaginer un script qui accepte
une liste de chiers en paramètre. Rien ne nous empêcherait de lui envoyer quinze
paramètres dans ce cas :
Comme vous le voyez, les paramètres ont été décalés : $1 correspond après le shift au
second paramètre, $2 au troisième paramètre, etc.
Bien sûr, shift est généralement utilisé dans une boucle qui permet de traiter les
paramètres un par un. Nous verrons d'ailleurs comment faire des boucles dans peu de
temps.
474
LES TABLEAUX
Les tableaux
Le bash gère également les variables tableaux . Ce sont des variables qui contiennent
plusieurs cases, comme un tableau. Vous en aurez probablement besoin un jour ; voyons
comment cela fonctionne.
Pour dénir un tableau, on peut faire comme ceci :
tableau=('valeur0' 'valeur1' 'valeur2')
Cela crée une variable tableau qui contient trois valeurs (valeur0, valeur1, valeur2).
Pour accéder à une case du tableau, il faut utiliser la syntaxe suivante :
${tableau[2]}
valeur1
Comme vous pouvez le constater, le tableau peut avoir autant de cases que
vous le désirez. La numérotation n'a pas besoin d'être continue, vous pouvez
sauter des cases sans aucun problème 2 .
Vous pouvez acher l'ensemble du contenu du tableau d'un seul coup en utilisant
${tableau[*]} :
2. La preuve, il n'y a pas de case no 3 ni de case no 4 dans mon script précédent.
475
CHAPITRE 29. AFFICHER ET MANIPULER DES VARIABLES
#!/bin/bash
En résumé
Comme dans la plupart des langages de programmation, on peut créer des variables
en shell qui stockent temporairement des valeurs en mémoire. Une variable nommée
variable est accessible en écrivant $variable.
La commande echo ache un texte ou le contenu d'une variable dans la console.
read attend une saisie au clavier de la part de l'utilisateur et stocke le résultat dans
une variable.
On peut eectuer des opérations mathématiques sur des nombres à l'aide de la
commande let.
Certaines variables sont accessibles partout, dans tous les scripts : ce sont les variables
d'environnement. On peut les lister avec la commande env.
Les paramètres envoyés à notre script (comme ./script -p) sont transmis dans des
variables numérotées : $1, $2, $3. . . Le nombre de paramètres envoyés est indiqué
dans la variable $#.
476
Chapitre 30
Les conditions
Diculté :
477
CHAPITRE 30. LES CONDITIONS
Si
Les conditions ont la forme suivante :
SI test_de_variable
ALORS
------> effectuer_une_action
FIN SI
Bien entendu, ce n'est pas du bash. Il s'agit juste d'un schéma pour vous montrer quelle
est la forme d'une condition.
La syntaxe en bash est la suivante :
if [ test ]
then
echo "C'est vrai"
fi
Le mot fi (if à l'envers !) à la n indique que le if s'arrête là. Tout ce qui est entre
le then et le fi sera exécuté uniquement si le test est vérié.
Vous noterez c'est très important qu'il y a des espaces à l'intérieur des
crochets. On ne doit pas écrire [test] mais [ test ] !
À la place du mot test, il faut indiquer votre test. C'est à cet endroit que vous
testerez la valeur d'une variable, par exemple. Ici, nous allons voir un cas simple où
nous testons la valeur d'une chaîne de caractères, puis nous apprendrons à faire des
tests plus compliqués un peu plus loin dans le chapitre.
Faisons quelques tests sur un script que nous appellerons conditions.sh :
#!/bin/bash
478
IF : LA CONDITION LA PLUS SIMPLE
nom="Bruno"
if [ $nom = "Bruno" ]
then
echo "Salut Bruno !"
fi
B
Copier ce code
Code web : 665574
Comme $nom est bien égal à Bruno , ce script achera :
Salut Bruno !
#!/bin/bash
nom1="Bruno"
nom2="Marcel"
if [ $nom1 = $nom2 ]
then
echo "Salut les jumeaux !"
fi
Comme ici $nom1 est diérent de $nom2, le contenu du if ne sera pas exécuté. Le script
n'achera donc rien.
Sinon
Si vous souhaitez faire quelque chose de particulier quand la condition n'est pas remplie,
vous pouvez rajouter un else qui signie sinon .
En français, cela s'écrirait comme ceci :
SI test_de_variable
ALORS
------> effectuer_une_action
SINON
------> effectuer_une_action
FIN SI
if [ test ]
then
479
CHAPITRE 30. LES CONDITIONS
nom="Bruno"
if [ $nom = "Bruno" ]
then
echo "Salut Bruno !"
else
echo "J'te connais pas, ouste !"
fi
Bon : comme la variable vaut toujours la même chose, le else ne sera jamais exécuté,
ce n'est pas rigolo. Je vous propose plutôt de vous baser sur le premier paramètre ($1)
envoyé au script :
#!/bin/bash
if [ $1 = "Bruno" ]
then
echo "Salut Bruno !"
else
echo "J'te connais pas, ouste !"
fi
B
Copier ce code
Code web : 318546
Testez maintenant votre script en lui donnant un paramètre :
$ ./conditions.sh Bruno
Salut Bruno !
$ ./conditions.sh Jean
J'te connais pas, ouste !
480
IF : LA CONDITION LA PLUS SIMPLE
Sinon si
Il existe aussi le mot clé elif, abréviation de else if , qui signie sinon si . Sa
forme ressemble à ceci :
SI test_de_variable
ALORS
------> effectuer_une_action
SINON SI autre_test
ALORS
------> effectuer_une_action
SINON SI encore_un_autre_test
ALORS
------> effectuer_une_action
SINON
------> effectuer_une_action
FIN SI
if [ test ]
then
echo "Le premier test a été vérifié"
elif [ autre_test ]
then
echo "Le second test a été vérifié"
elif [ encore_autre_test ]
then
echo "Le troisième test a été vérifié"
else
echo "Aucun des tests précédents n'a été vérifié"
fi
On peut reprendre notre script précédent et l'adapter pour utiliser des elif :
#!/bin/bash
if [ $1 = "Bruno" ]
then
481
CHAPITRE 30. LES CONDITIONS
B
Copier ce code
Code web : 830083
Vous pouvez tester ce script ; encore une fois, n'oubliez pas d'envoyer un paramètre
sinon il plantera, ce qui est normal.
Les tests
Voyons maintenant un peu quels sont les tests que nous pouvons faire. Pour l'instant,
on a juste vérié si deux chaînes de caractères étaient identiques, mais on peut faire
beaucoup plus de choses que cela !
#!/bin/bash
if [ $1 != $2 ]
then
echo "Les 2 paramètres sont différents !"
482
LES TESTS
else
echo "Les 2 paramètres sont identiques !"
fi
On peut aussi vérier si le paramètre existe avec -z (vérie si la chaîne est vide). En
eet, si une variable n'est pas dénie, elle est considérée comme vide par bash. On peut
donc par exemple s'assurer que $1 existe en faisant comme suit :
#!/bin/bash
if [ -z $1 ]
then
echo "Pas de paramètre"
else
echo "Paramètre présent"
fi
$ ./conditions.sh
Pas de paramètre
$ ./conditions.sh param
Paramètre présent
#!/bin/bash
if [ $1 -ge 20 ]
then
echo "Vous avez envoyé 20 ou plus"
else
echo "Vous avez envoyé moins de 20"
fi
483
CHAPITRE 30. LES CONDITIONS
Condition Signication
$chaine1 = $chaine2 Vérie si les deux chaînes sont identiques. Notez que bash
est sensible à la casse : b est donc diérent de B .
Il est aussi possible d'écrire == pour les habitués
du langage C.
$chaine1 != $chaine2 Vérie si les deux chaînes sont diérentes.
-z $chaine Vérie si la chaîne est vide.
-n $chaine Vérie si la chaîne est non vide.
Table 30.1 Les diérents types de tests sur des chaînes
Condition Signication
$num1 -eq $num2 Vérie si les nombres sont égaux (equal ). À ne pas confondre
avec le = qui, lui, compare deux chaînes de caractères.
$num1 -ne $num2 Vérie si les nombres sont diérents (non equal ).
Encore une fois, ne confondez pas avec != qui est censé
être utilisé sur des chaînes de caractères.
$num1 -lt $num2 Vérie si num1 est inférieur ( < ) à num2 (lower than ).
$num1 -le $num2 Vérie si num1 est inférieur ou égal ( <= ) à num2
(lower or equal ).
$num1 -gt $num2 Vérie si num1 est supérieur ( > ) à num2
(greater than ).
$num1 -ge $num2 Vérie si num1 est supérieur ou égal ( >= ) à num2
(greater or equal ).
Table 30.2 Les diérents types de tests sur des nombres
484
LES TESTS
$ ./conditions.sh 23
Vous avez envoyé 20 ou plus
$ ./conditions.sh 11
Vous avez envoyé moins de 20
Condition Signication
-e $nomfichier Vérie si le chier existe.
-d $nomfichier Vérie si le chier est un répertoire. N'oubliez pas
que sous Linux, tout est considéré comme un chier,
même un répertoire !
-f $nomfichier Vérie si le chier est un. . . chier.
Un vrai chier cette fois, pas un dossier.
-L $nomfichier Vérie si le chier est un lien symbolique (raccourci).
-r $nomfichier Vérie si le chier est lisible (r).
-w $nomfichier Vérie si le chier est modiable (w).
-x $nomfichier Vérie si le chier est exécutable (x).
$fichier1 -nt $fichier2 Vérie si fichier1 est plus récent que fichier2
(newer than ).
$fichier1 -ot $fichier2 Vérie si fichier1 est plus vieux que fichier2
(older than ).
Table 30.3 Les diérents types de tests sur des chiers
Je vous propose de faire un script qui demande à l'utilisateur d'entrer le nom d'un
répertoire et qui vérie si c'en est bien un :
#!/bin/bash
if [ -d $repertoire ]
then
echo "Bien, vous avez compris ce que j'ai dit !"
else
echo "Vous n'avez rien compris..."
fi
485
CHAPITRE 30. LES CONDITIONS
Notez que bash vérie au préalable que le répertoire existe bel et bien.
$ ./conditions.sh koala
Bravo !
Vous connaissez le mot de passe
Notez que les tests sont eectués l'un après l'autre et seulement s'ils sont
nécessaires. Bash vérie d'abord s'il y a au moins un paramètre. Si ce n'est
pas le cas, il ne fera pas le second test puisque la condition ne sera de toute
façon pas vériée.
486
CASE : TESTER PLUSIEURS CONDITIONS À LA FOIS
Inverser un test
Il est possible d'inverser un test en utilisant la négation. En bash, celle-ci est exprimée
par le point d'exclamation ! .
if [ ! -e fichier ]
then
echo "Le fichier n'existe pas"
fi
#!/bin/bash
if [ $1 = "Bruno" ]
then
echo "Salut Bruno !"
elif [ $1 = "Michel" ]
then
echo "Bien le bonjour Michel"
elif [ $1 = "Jean" ]
then
echo "Hé Jean, ça va ?"
else
echo "J'te connais pas, ouste !"
fi
Ce genre de gros if qui teste toujours la même variable ne pose pas de problème
mais n'est pas forcément très facile à lire pour le programmeur. À la place, il est possible
d'utiliser l'instruction case si nous voulons.
Le rôle de case est de tester la valeur d'une même variable, mais de manière plus
concise et lisible.
Voyons comment on écrirait la condition précédente avec un case :
#!/bin/bash
case $1 in
"Bruno")
echo "Salut Bruno !"
;;
"Michel")
487
CHAPITRE 30. LES CONDITIONS
B
Copier ce code
Code web : 870602
Cela fait beaucoup de nouveautés d'un coup. Analysons la structure du case !
case $1 in
Tout d'abord, on indique que l'on veut tester la valeur de la variable $1. Bien entendu,
vous pouvez remplacer $1 par n'importe quelle variable que vous désirez tester.
"Bruno")
Là, on teste une valeur. Cela signie Si $1 est égal à Bruno . Notez que l'on peut
aussi utiliser une étoile comme joker : B* acceptera tous les mots qui commencent
par un B majuscule.
Si la condition est vériée, tout ce qui suit est exécuté jusqu'au prochain double point-
virgule :
;;
*)
C'est en fait le else du case. Si aucun des tests précédents n'a été vérié, c'est alors
cette section qui sera lue.
esac
488
CASE : TESTER PLUSIEURS CONDITIONS À LA FOIS
#!/bin/bash
case $1 in
"Chien" | "Chat" | "Souris")
echo "C'est un mammifère"
;;
"Moineau" | "Pigeon")
echo "C'est un oiseau"
;;
*)
echo "Je ne sais pas ce que c'est"
;;
esac
En résumé
On eectue des tests dans ses programmes grâce aux if, elif, else, fi.
On peut comparer deux chaînes de caractères entre elles, mais aussi des nombres. On
peut également eectuer des tests sur des chiers : est-ce que celui-ci existe ? Est-il
exécutable ? Etc.
Au besoin, il est possible de combiner plusieurs tests à la fois avec les symboles &&
(ET) et || (OU).
Le symbole ! (point d'exclamation) exprime la négation dans une condition.
Lorsque l'on eectue beaucoup de tests sur une même variable, il est parfois plus
pratique d'utiliser un bloc case in... esac plutôt qu'un bloc if... fi.
489
CHAPITRE 30. LES CONDITIONS
490
Chapitre 31
Les boucles
Diculté :
N ous allons découvrir dans ce chapitre un autre élément de base de tous les langages :
les boucles. Ces structures permettent de répéter autant de fois que nécessaire une
partie du code. En bash, on n'y échappe pas !
Les consignes sont les mêmes que pour le chapitre sur les conditions : il faut être vigilant
sur la syntaxe. Une espace de trop ou de moins, l'oubli d'un caractère spécial et plus rien
ne fonctionne. Soyez donc très rigoureux lorsque vous codez !
Si vous suivez cette simple règle, vous n'aurez pas de problèmes.
491
CHAPITRE 31. LES BOUCLES
while [ test ]
do
echo 'Action en boucle'
done
Il est aussi possible, comme pour le if, d'assembler les deux premières lignes
en une, à condition de mettre un point-virgule :
while [ test ]; do
echo 'Action en boucle'
done
On va demander à l'utilisateur de dire oui et répéter cette action tant qu'il n'a pas
fait ce que l'on voulait. Nous allons créer un script boucles.sh pour l'occasion :
#!/bin/bash
492
FOR : BOUCLER SUR UNE LISTE DE VALEURS
Comme vous pouvez le voir, il ne s'arrête que lorsque l'on a tapé oui !
Il existe aussi le mot clé until, qui est l'exact inverse de while. Il signie
Jusqu'à ce que . Remplacez juste while par until dans le code précédent
pour l'essayer.
#!/bin/bash
493
CHAPITRE 31. LES BOUCLES
B
Copier ce code
Code web : 508222
Ce qui donne, si on l'exécute :
Vous pouvez donc vous servir du for pour faire une boucle sur une liste de valeurs que
vous dénissez :
#!/bin/bash
Toutefois, la liste de valeurs n'a pas besoin d'être dénie directement dans le code. On
peut utiliser une variable :
#!/bin/bash
liste_fichiers=`ls`
On pourrait faire un code plus court sans passer par une variable $liste_fichiers
en écrivant :
494
FOR : BOUCLER SUR UNE LISTE DE VALEURS
#!/bin/bash
for fichier in `ls`
do
echo "Fichier trouvé : $fichier"
done
Bien entendu, ici, on ne fait qu'acher le nom du chier, ce qui n'est ni très amusant
ni très utile. On pourrait se servir de notre script pour renommer chacun des chiers
du répertoire actuel en leur ajoutant un suxe -old par exemple :
#!/bin/bash
$ ls
boucles.sh conditions.sh variables.sh
$ ./boucles.sh
$ ls
boucles.sh-old conditions.sh-old variables.sh-old
./multirenommage.sh *.txt
Si aucun paramètre n'est envoyé, vous demanderez à l'utilisateur de saisir le nom des
chiers à renommer avec read.
#!/bin/bash
for i in `seq 1 10`;
495
CHAPITRE 31. LES BOUCLES
do
echo $i
done
B
Copier ce code
Code web : 352257
Explication : seq génère tous les nombres allant du premier paramètre au dernier
paramètre, donc 1 2 3 4 5 6 7 8 9 10.
1
2
3
4
5
6
7
8
9
10
Si vous le voulez, vous pouvez changer le pas et avancer de deux en deux par exemple.
Dans ce cas, il faut écrire seq 1 2 10 pour aller de 1 à 10 en avançant de deux en
deux ; cela va donc générer les nombres 1 3 5 7 9.
En résumé
Pour exécuter une série de commandes plusieurs fois, on utilise des boucles.
while permet de boucler tant qu'une condition est remplie. Le fonctionnement des
conditions dans les boucles est le même que celui des blocs if découverts dans le
chapitre précédent.
for permet de boucler sur une série de valeurs dénies. À l'intérieur de la boucle,
une variable prend successivement les valeurs indiquées.
496
Chapitre 32
TP : générateur de galerie d'images
Diculté :
L 'intérêt du bash ne commence à se faire sentir que lorsque l'on code de vrais scripts,
alors. . . il est grand temps de pratiquer !
Dans ce TP, vous allez devoir réutiliser un peu tout ce que vous avez appris jusqu'ici sur
bash et sur Linux en général. N'oubliez pas que dans les scripts bash vous pouvez réutiliser
toutes les commandes de la console que vous connaissez : ls, grep, cut, sort, les ux. . .
allez-y, tous les coups sont permis. Vous risquez même d'avoir à lire le manuel pour trouver
quelques paramètres !
Votre objectif est de créer une page web présentant une galerie d'images en fonction des
chiers présents dans un dossier. Plus facile à dire qu'à faire, car vous allez voir qu'il y a là
un vrai dé. Bonne chance à tous.
497
CHAPITRE 32. TP : GÉNÉRATEUR DE GALERIE D'IMAGES
Objectifs
Nous souhaitons réaliser dans ce TP un générateur de galerie d'images en bash.
Le script s'appellera galerie.sh. Pour sa première version, il faudra le placer dans un
dossier contenant des images ; il générera des miniatures à partir de ces dernières et un
chier HTML présentant toutes les images du dossier.
Concrètement, le script devra donc :
créer une miniature de chaque image du dossier ;
générer un chier HTML et y insérer ces miniatures ;
faire un lien vers les images en taille originale.
Le rendu nal
La page web que vous devez arriver à générer devrait ressembler à la gure 32.1.
498
OBJECTIFS
après. ;-)
499
CHAPITRE 32. TP : GÉNÉRATEUR DE GALERIE D'IMAGES
Les paramètres
Notre programme devra accepter un paramètre optionnel : le nom du chier HTML à
générer. S'il n'est pas présent, on générera un chier galerie.html par défaut.
Solution
L'heure est venue de passer à la correction !
#!/bin/bash
if [ -z $1 ]
then
sortie='galerie.html'
else
sortie=$1
fi
if [ ! -e miniatures ]
then
mkdir miniatures
fi
# En-tête HTML
500
AMÉLIORATIONS
echo '</p>
</body>
</html>' >> $sortie
B
Copier ce code
Code web : 423338
Quelques commentaires sur le script :
Il vérie d'abord si un paramètre est présent. Si oui, il l'utilise comme nom de chier
de sortie, sinon il utilise galerie.html.
On doit créer un chier vide pour galerie.html. Normalement, on peut faire ça
avec touch, mais si le chier existe déjà, on veut le vider. On choisit donc de faire
un echo vide dans ce chier pour le vider.
On crée le dossier qui accueillera les images miniatures s'il n'existe pas.
On écrit l'en-tête HTML dans le chier.
On fait une boucle sur tous les chiers de type image (*.png, *.jpg, etc.) qui existent
dans le dossier. Pour chacun d'eux, on crée une miniature d'une taille maximale de
200 x 200 pixels dans le sous-dossier miniatures. Le petit symbole > permet,
comme indiqué dans la documentation du programme, de ne pas générer de miniature
inutilement si l'image est de base plus petite que la taille des miniatures.
On écrit dans la page web la balise qui achera l'image et on fait un lien vers la
version agrandie.
Enn, on termine la page HTML en fermant les balises.
Je tiens à rappeler qu'il n'y a pas une seule façon de réaliser ce script mais plusieurs.
Je vous ai présenté la mienne et, bien qu'elle fonctionne, je vous préviens que l'on peut
largement l'améliorer. Je vous propose d'ailleurs des pistes pour améliorer ce script.
Améliorations
Comme je le disais plus tôt, le script que je vous ai proposé de faire est minimal. Le but
était d'avoir à réaliser un script accessible à tous et qui produise un résultat intéressant.
Si vous voulez l'améliorer, les pistes ne manquent pas. En voici quelques-unes.
Améliorer le design de la galerie avec un peu de CSS.
501
CHAPITRE 32. TP : GÉNÉRATEUR DE GALERIE D'IMAGES
Permettre de choisir le dossier contenant les images dont on veut générer une ga-
lerie. Actuellement, il faut que galerie.sh soit dans le bon dossier pour que cela
fonctionne !
Utiliser un paramètre pour dénir la taille des miniatures à générer.
Acher le nom de l'image sous chaque image.
Acher d'autres informations, comme les dimensions de l'image originale, sous chaque
miniature. Il faudra faire appel à l'outil convert pour obtenir ces informations.
Acher la date de dernière modication sous chaque image.
Pour certaines de ces améliorations, il faudra vous renseigner dans le manuel voire poser
des questions sur les forums. Ne vous arrêtez pas en si bon chemin ! Cherchez, cherchez
et cherchez encore ! Vous allez vous habituer à faire des recherches et vous deviendrez
ainsi beaucoup plus autonomes. :-)
502
Index
503
INDEX
E image CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 invite de commandes . . . . . . . . . . . . . . . . . 124
expression régulière . . . . . . . . . . . . . . . . . . 263 personnalisation . . . . . . . . . . . . . . . . . 207
IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
F iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
fg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 ISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
chier
achage. . . . . . . . . . . . . . . . . . . . . . . . .156 J
caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
copie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 joker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
copie en réseau . . . . . . . . . . . . . . . . . . 388
déplacement . . . . . . . . . . . . . . . . . . . . . 169 K
droits . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 75
lien. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173 kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 killall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
renommage . . . . . . . . . . . . . . . . . . . . . . 169 ksh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
sauvegarde . . . . . . . . . . . . . . . . . . . . . . 394
suppression . . . . . . . . . . . . . . . . . . . . . . 170 L
synchronisation . . . . . . . . . . . . . . . . . . 394 less . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
système de . . . . . . . . . . . . . . . . . . . . . . . 48 raccourcis . . . . . . . . . . . . . . . . . . . . . . . 160
téléchargement . . . . . . . . . . . . . . . . . . 386 lien
find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 physique . . . . . . . . . . . . . . . . . . . . . . . . 175
rewall . . . . . . . . . . . . . . . . . . . . . voir pare-feu symbolique . . . . . . . . . . . . . . . . . . . . . . 176
ux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 ligne de commande. . . . . . . . . . . . . . . . . . .107
for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
ftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
G login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
gestionnaire de bureau . . . . . . . . . . . . . . . . 19 ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Gnome . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 63
GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 M
grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
groupe man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
ajout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 manuel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
suppression . . . . . . . . . . . . . . . . . . . . . . 186 mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
GRUB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6, 61 more . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
gzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . 184
mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
H
halt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 N
head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
heure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 raccourcis . . . . . . . . . . . . . . . . . . . . . . . 197
host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 netstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
nohup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
I
if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 P
ifconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 paquet . . . . . . . . . . . . . . . . . . . . . . . . . . 214, 422
504
INDEX
505
INDEX
conguration . . . . . . . . . . . . . . . . . . . . 447
enregistrement . . . . . . . . . . . . . . . . . . 440
modes . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
recherche . . . . . . . . . . . . . . . . . . . . . . . . 444
sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
VirtualBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
virtualisation. . . . . . . . . . . . . . . . . . . . . . . . . .88
W
w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
wget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
which . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
whois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
wildcard . . . . . . . . . . . . . . . . . . . . . . . voir joker
X
XFCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Z
zsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
506
Notes
Notes
Notes
Notes
Notes
Notes
Dépôt légal : septembre 2010
ISBN : 978-2-9535278-2-7
Code éditeur : 978-2-9535278
Imprimé en France
Achevé d'imprimer le 20 septembre 2010
sur les presses de Corlet Imprimeur (Condé-sur-Noireau)
Numéro imprimeur : 131159
Mentions légales :
Crédit photo Mathieu Nebra 4e de couverture : Xavier Granet - 2009
Conception couverture : Fan Jiyong
Illustrations chapitres : Yannick Piault
Les logos Gnome, KDE, Vim, Tux et Baby Tux sont sous licence GPL.
http://www.gnu.org/licenses/gpl.html