0% ont trouvé ce document utile (0 vote)
10 vues132 pages

Manipuler La Console Et Les Fichiers Ubuntu

cours de linux (Ubuntu)

Transféré par

Abdoul Razac TAPSOBA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
10 vues132 pages

Manipuler La Console Et Les Fichiers Ubuntu

cours de linux (Ubuntu)

Transféré par

Abdoul Razac TAPSOBA
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 132

1

• Chapitre II - Manipuler la console et les


fichiers

1. La console,

2. Entrer une commande

3. La structure des dossiers et fichiers

4. Manipuler les fichiers

5. Les utilisateurs et les droits

6. Nano, l'éditeur de texte du débutant

7. Installer des programmes avec apt-get

8. RTFM : lisez le manuel !

9. Rechercher des fichiers

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
2

1. La console,

Nous allons commencer par la solution la plus « basique » et que vous utiliserez
probablement 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.

Supposons 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 Unity (figure suivante).

Gestionnaire de bureau Unity

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 !).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
3

« Terminal » est un autre nom pour « Console ».

Pour tester, tapez Ctrl + Alt + F1. Votre écran va peut-être clignoter quelques
instants. Vous allez ensuite entrer en mode console plein écran (figure
suivante).

Mode console plein écran – C'est beau, hein ?


Le login

: 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'installation. Votre ordinateur se présente et vous rappelle où vous êtes, en
quelque sorte.

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.

il n'y a même pas d'étoiles qui s'affichent à l'écran. Cela permet d'éviter qu'une
personne derrière vous compte le nombre de caractères de votre mot de passe

voir l'écran de la figure suivante.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
4

Mode console après connexion

La console devrait afficher en bas une ligne similaire à celle-ci :

mateo21@mateo21-desktop:~$ _

Les différentes consoles

Sous toute machine Linux, il y a donc non pas une mais six consoles qui
fonctionnent en simultané (d'où les six raccourcis différents de Ctrl + Alt + F1 à
Ctrl + Alt + F6).

Notez enfin que sous les dernières versions d'Ubuntu, ce raccourci pourtant
commun a été remplacé par Alt + Impr.Écran + K. La combinaison
Ctrl + Alt + Backspace a été considérée comme trop fréquemment utilisée de
manière inappropriée par les débutants habitués à une combinaison similaire
présente sous Windows.

La console en mode graphique

. Les raisons sont multiples :

• que vous pouvez en même temps continuer à utiliser d'autres


applications graphiques tout en discutant avec vos amis en ligne… ;
• mais aussi parce que la résolution de l'écran est plus grande et qu'on
peut afficher plus de choses à la fois dans la console… ;
• parce qu'on peut personnaliser l'apparence de la console et mettre,
pourquoi pas, une image de fond… ;
• et qu'on peut aussi utiliser la souris pour copier-coller du texte dans la
Sous KDE

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
5

Pour KDE, il suffit de rechercher "Konsole" dans le lanceur (figure suivante).

La console de KDE
Sous Unity

Si vous êtes sous Unity, rendez-vous dans le lanceur et recherchez "Terminal"


(figure suivante).

Lancer le Terminal sous Unity

Voyez la console de Unity sur la figure suivante.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
6

Terminal de Unity

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

L'accès à distance en SSH avec PuTTY

Cette partie sur l'accès à distance en SSH avec PuTTY ne sert qu'à vous
montrer les possibilités d'utilisation de la console.

Une des grosses forces de la console, c'est d'être accessible à distance par
Internet. Il suffit 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 ! 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'offrir 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.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
7

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.

Il existe des plusieurs sortes 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.

Pour le télécharger, allez sur le site web du logiciel. Rendez-vous sur la page
« Download » et cliquez sur « putty.exe ».

Lorsque vous le lancez, la fenêtre de configuration s'affiche (figure suivante).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
8

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.openclassrooms.com) ou encore l'adresse IP de l'ordinateur, ce qui marche
aussi bien (c'est juste plus difficile à retenir). Vérifiez que le type de connexion
sélectionné en dessous est bien SSH, puis cliquez sur le bouton Open tout en
bas. Si vous avez l'habitude de vous connecter à plusieurs serveurs différents,
sachez qu'il est possible de sauvegarder les IP et configurations pour se
connecter à chacun d'eux. Utilisez la section « Saved sessions » au centre pour
enregistrer ou ouvrir des connexions pré-enregistrées.

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érifier que le serveur n'a pas changé depuis la dernière
connexion et donc pour éviter 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'affiche alors (figure suivante).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
9

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 (figure suivante) !

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
10

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 effectué 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. lorsque nous nous intéresserons à l'administration de serveurs.

En résumé

• Bien que rebutante au premier abord, la console nous offre 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 Unity) 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.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
11

o 2. Entrer une commande

L'invite de commandes

Le programme Konsole sous KDE ou Terminal sous Unity fera donc très bien
l'affaire (figure suivante).

Terminal de Unity

Nous allons vous présenter le texte affiché en console dans des encadrés
comme celui-ci :

mateo21@mateo21-desktop:~$

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'affiche avant chaque
commande que vous tapez.

Bien : décortiquons cette invite de commandes .

• mateo21 : le premier élément est votre pseudonyme. C'est le pseudo sous


lequel vous vous êtes loggés. En effet, rappelez-vous : on peut créer
plusieurs comptes utilisateurs sous Linux. Il est en général conseillé

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
12

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.
• @ : ce symbole n'indique rien de particulier. C'est le symbole « at » qui
signifie « chez ». Si on lit l'invite de gauche à droite, on doit donc
comprendre « mateo21 chez ».
• mateo21-desktop : ça, c'est le nom de l'ordinateur sur lequel vous êtes en
train de travailler. Dans mon cas il s'appelle mateo21-desktop, mais
j'aurais pu lui attribuer n'importe quel nom lors de l'installation.

Par exemple, la ligne d'invite de commandes se lit donc « mateo21 chez


mateo21-desktop ». En d'autres termes, vous êtes identifié en tant que
mateo21 sur la machine mateo21-desktop.

• : : à nouveau, ce symbole ne veut rien dire de spécial, c'est un


séparateur.
• ~ : ça, c'est le dossier dans lequel vous vous trouvez actuellement. Vous
pouvez naviguer de dossier en dossier dans la console et il est très utile
qu'on vous rappelle systématiquement où vous vous trouvez avant
chaque commande.

Pour information, le symbole ~ signifie que vous êtes dans votre dossier
personnel, ce qu'on appelle le « home » sous Linux ; c'est l'équivalent du
dossier « Mes documents » de Windows.

• $ : ce dernier symbole est très important ; il indique votre niveau


d'autorisation sur la machine. Il peut prendre deux formes différentes :
o $ : signifie que vous êtes en train d'utiliser un compte utilisateur
« normal », avec des droits limités (il ne peut pas modifier les
fichiers système les plus importants). Mon compte mateo21 est
donc un compte normal avec des droits limités ;
o # : signifie que vous êtes en mode superutilisateur, c'est-à-dire
que vous êtes connectés sous le pseudonyme « root ». Le root est
l'utilisateur maître qui a le droit de tout faire sur sa machine
(même de la détruire !). Nous verrons le mode root plus en détail
plus tard.

On comprend ce qu'elle veut dire ! Bonjour et bienvenue, vous êtes mateo21


sur la machine mateo21-desktop. Vous vous trouvez actuellement dans votre
dossier home et possédez des droits utilisateur limités. La température
extérieure est de. »

Comme un peu tout sous Linux, l'invite de commandes est totalement


paramé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'invite, 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 !

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
13

Commandes et paramètres

On travaille dans la console en tapant ce qu'on appelle des commandes. 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.

Une commande simple

Par exemple, tapez date puis appuyez sur la touche Entrée du clavier. Le
résultat devrait ressembler à cela :

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


tapée. La seconde ligne est la réponse de l'ordinateur à cette commande.

Essayons une toute autre commande : tapez ls. C'est l'abréviation de « list »,
qui signifie « lister les fichiers et dossiers du répertoire actuel ».

mateo21@mateo21-desktop:~$ ls
Desktop Examples Images

Cela signifie 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 facilement les dossiers des fichiers. Si vous n'avez aucune
réponse, c'est que vous êtes dans un dossier qui ne contient ni fichier ni
dossier.

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 suffit 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 :

mateo21@mateo21-desktop:~$ commande parametres

Les paramètres peuvent eux-mêmes contenir des espaces, des lettres, des
chiffres… 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 différents types de
paramètres.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
14

Les paramètres courts (une lettre)

Les paramètres les plus courants sont constitués d'une seule lettre précédée
d'un tiret. Par exemple :

commande -d

Si on doit donner plusieurs paramètres, on peut faire comme ceci :

commande -d -a -U -h

Ou, plus court :

commande -daUh

Attention à la casse des paramètres (majuscules / minuscules) ! Si vous


écrivez -u, cela n'a en général pas du tout le même sens que -U !

Faisons un essai avec la commande ls et rajoutons-lui le paramètre « a » (en


minuscule) :

mateo21@mateo21-desktop:~$ ls -a
. .gconfd .mozilla-thunderbird
.. .gimp-2.2 .nautilus
.bash_history ......................................

affiche tout le contenu du dossier, même les fichiers cachés.Un « fichier


caché » sous Linux est un fichier qui commence par un point. Normalement,
si vous vous trouvez dans votre répertoire home, vous devriez avoir une bonne
flopée de fichiers cachés. Ce sont en général des fichiers de configuration de
programmes.

Les paramètres longs (plusieurs lettres)

Les paramètres constitués de plusieurs lettres sont précédés de deux tirets,


comme ceci :

commande --parametre

Cette fois, pas le choix : si vous voulez mettre plusieurs paramètres longs, il
faudra ajouter un espace entre chacun d'eux :

commande --parametre1 --parametre2

On peut aussi combiner les paramètres longs et les paramètres courts dans
une commande :

commande -daUh --autreparametre

Il y a parfois deux écritures possibles pour un paramètre de commande : une


version courte et une version longue. Cela permet de vous laisser le choix selon

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
15

que vous préférez l'une ou l'autre. Notez que c'est la commande qui décide des
paramètres qu'elle accepte : il arrive parfois que certaines ne proposent pas le
choix entre une version courte et une longue.

Testons cela sur la commande ls avec le paramètre --all, qui signifie « tout » en
anglais :

mateo21@mateo21-desktop:~$ ls --all
. .gconfd .mozilla-thunderbird
.. .gimp-2.2 .nautilus
.bash_history .gksu.lock .profile
………………………………………………………

Comme vous le voyez, --all est un synonyme de -a. Comme quoi parfois une
commande propose deux façons d'utiliser un paramètre : une courte et une
longue.

Les valeurs des paramètres

Certains paramètres nécessitent que vous les complétiez avec une valeur. Cela
fonctionne différemment selon que vous travaillez avec un paramètre long ou
avec un paramètre court.

Avec un paramètre court :

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 : « On veut
voir la liste de tous les fichiers 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.

Les autres paramètres

NB : il n'y a pas de règle absolue au niveau des paramètres et vous en


rencontrerez sûrement qui fonctionnent différemment.

Certains paramètres sont donc un peu différents et dépendent vraiment des


commandes. Par exemple avec ls, si on ajoute le nom d'un dossier (ou sous-
dossier), cela affichera le contenu de ce dossier au lieu du contenu du dossier
courant :

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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
16

Linux propose tellement de commandes différentes qu'il est facile de s'y perdre
et d'en oublier une. En effet, Linux vous propose toute une série de façons de
retrouver une commande que vous avez oubliée.

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.

Lister les commandes correspondantes

Tapez juste « da » dans la console, puis tapez deux fois sur la touche Tabulation
située à gauche de votre clavier. Le résultat sera le suivant :

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 a donc deux commandes qui commencent par « da », et vous venez
de retrouver celle que vous cherchiez, c'est-à-dire « date

Trop de commandes !

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

Sous certaines distributions (Ubuntu 14.04 LTS et LinuxMint 17.2, par


exemple), cette manipulation ne fonctionne pas. Il faut au moins entrer un
caractère pour avoir une réponse.

Cela demande de faire la liste de toutes les commandes disponibles sur votre
ordinateur.

mateo21@mateo21-desktop:~$
Display all 2173 possibilities? (y or n)

Il y a 2 173 commandes disponibles sur mon ordinateur. Plus j'installerai de


programmes, plus j'aurai de commandes utilisables.

À cette question, vous pouvez répondre « y » (yes) et la liste s'affichera page par
page. Quelques raccourcis à connaître quand une liste s'affiche page par
page :

• tapez Espace pour passer à la page suivante ;


• tapez Entrée pour aller à la ligne suivante ;

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
17

• tapez q pour arrêter la liste.

Ce raccourci vaut de l'or : appuyez sur la flèche directionnelle Haut (figure


suivante) ; vous verrez apparaître la dernière commande que vous avez tapée.
Si vous appuyez de nouveau sur la flèche directionnelle Haut, vous verrez
l'avant-dernière commande, puis l'avant-avant-dernière, etc.

Flèche directionelle Haut

Si vous appuyez sur la flèche directionnelle Bas (figure suivante), vous


reviendrez aux commandes les plus récentes.

Flèche directionelle Bas

C'est ainsi que vous pouvez successivement retrouver les commandes que
vous venez de taper, dans l'ordre inverse :

• ls --all ;
• ls -a ;
• ls ;
• date ;
• etc.

Si vous voulez « remonter » très loin en arrière dans l'historique de vos


commandes, pas la peine de taper cent fois sur la flèche directionnelle Haut
comme des forcenés. Il existe la commande history qui vous rappelle
l'historique des commandes :

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 152ème commande que j'ai tapée dans le terminal.

Ctrl + R : rechercher une commande tapée avec quelques lettres

Dans le cas où la flèche directionnelle Haut et la commande history ne


suffiraient pas à retrouver une vieille commande que vous avez tapée, il y a
un raccourci super utile : Ctrl + R. Appuyez donc sur les touches Ctrl et R en
même temps et l'ordinateur se mettra en mode « recherche d'une commande
tapée » (« R » comme Recherche).

Là, vous pouvez taper n'importe quelle suite de lettres correspondant à une
vieille commande. Par exemple, faites Ctrl + R puis tapez « all ». Linux retrouve

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
18

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

Quelques raccourcis clavier pratiques

On ne dirait pas comme ça, mais la console de Linux propose une quantité
incroyable de raccourcis clavier. Ce sont des raccourcis qu'on ne peut pas
deviner, qu'on a un peu de mal à retenir au début

Ces raccourcis ne sont pas intuitifs, mais ça vaut vraiment le coup de les
retenir. Les premiers temps vous reviendrez certainement souvent ici pour les
consulter (et encore, si vous vous faites un petit pense-bête, ça ne devrait pas
arriver), mais petit à petit vous les connaîtrez par cœur !

Commençons par quelques raccourcis généraux qu'il vous faut connaître.

• Ctrl + L: efface le contenu de la console. Utile pour faire un peu de


ménage quand votre console est encombrée, ou quand votre boss passe
derrière vous et que vous n'aimeriez pas qu'il voie ce que vous étiez en
train de faire.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
19

À noter qu'il existe aussi une commande, clear, qui fait exactement la
même chose.

• Ctrl + D: envoie le message EOF (fin de fichier) à la console. Si vous tapez


ce raccourci dans une ligne de commande vide (c'est-à-dire sans avoir
écrit un début de commande au préalable), cela fermera la console en
cours.

À noter qu'il existe aussi la commande exit qui a le même effet.

• Shift + PgUp: vous permet de « remonter » dans les messages envoyés par
la console. En mode graphique, la molette de la souris accomplit aussi
très bien cette action.

La touche Page Up est généralement représentée sur votre clavier par une
flèche directionnelle Haut barrée de plusieurs petites lignes horizontales.

• Shift + PgDown : pareil, mais pour redescendre.

Les raccourcis suivants sont utiles lorsque vous êtes en train d'écrire une
longue commande.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
20

• Ctrl + A : ramène le curseur au début de la commande. La touche Origine


a le même effet (elle est située à côté de la touche Fin et représentée par
une flèche pointant en haut à gauche).
• Ctrl + E : ramène le curseur à la fin de la ligne de commandes. La touche
Fin a le même effet.
• Ctrl + U : supprime tout ce qui se trouve à gauche du curseur. Si celui-
ci est situé à la fin de la ligne, cette dernière sera donc supprimée.
• Ctrl + K : supprime tout ce qui se trouve à droite du curseur. S'il est situé
au début de la ligne, celle-ci sera donc totalement supprimée.
• Ctrl + W : supprime le premier mot situé à gauche du curseur. Un « mot »
est séparé par des espaces ; on s'en sert en général pour supprimer le
paramètre situé à gauche du curseur.
• Ctrl + Y : si vous avez supprimé du texte avec une des commandes
Ctrl + U, Ctrl + K ou Ctrl + W qu'on vient de voir, alors le raccourci Ctrl + Y
« collera » le texte que vous venez de supprimer. C'est donc un peu
comme un couper-coller.

En résumé

• La console affiche 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 modifier 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 flèches
directionnelles Haut et Bas ou encore effectuer 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 profiter pleinement de la console.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
21

3. La structure des dossiers et fichiers

Vous croyez savoir ce que sont les fichiers 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 fichiers, c'est quand même sacrément important ! C'est pour cela que
nous allons voir ensemble le fonctionnement des fichiers sous Linux dès
maintenant.

Organisation des dossiers

Le système qui gère les fichiers sous Linux est un peu déroutant au début,
surtout quand on est habitué à celui de Windows. En effet, ici vous ne
trouverez pas de C:\,D:\. Les fichiers sont organisés d'une manière
complètement différente.

Au lieu de séparer chaque disque dur, lecteur CD, lecteur de disquettes,


lecteur de carte mémoire… Linux place en gros tout au même endroit.

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 ce qu'on pourrait croire au premier abord, mais en fait c'est juste une
autre façon de penser la chose. ;

Deux types de fichiers

Pour faire simple, il existe deux grands types de fichiers sous Linux :

• les fichiers classiques : ce sont les fichiers que vous connaissez, ça


comprend les fichiers texte (.txt,.doc,.odt…), les sons (.wav,.mp3,.ogg), mais
aussi les programmes. ce sont des fichiers que vous connaissez et que
vous retrouvez dans Windows ;
• les fichiers spéciaux : certains autres fichiers sont spéciaux car ils
représentent quelque chose. Par exemple, votre lecteur CD est un
fichier pour Linux. Là où Windows fait la distinction entre ce qui est un
fichier et ce qui ne l'est pas, Linux, lui, dit que tout est un fichier.

La racine

Dans un système de fichiers, 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
fichiers ».

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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
22

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.

Architecture des dossiers

Sous Windows, un dossier peut être représenté de la manière suivante :


C:\Program Files\Winzip. On dit que Winzip est un sous-dossier du dossier
Program Files, lui-même situé à la racine. Vous noterez que c'est
l'antislash\(aussi appelé backslash) qui sert de séparateur aux noms de
dossiers.

Sous Linux, c'est au contraire le /q ui sert de séparateur.


Comme je vous l'ai dit, il n'y a pas de C: sous Linux, la racine (le début)
s'appelant juste/.

Le dossier de notre superprogramme ressemblerait plutôt à quelque chose


comme cela : /usr/bin/. On dit que bin est un sous-dossier du dossier usr, lui-
même situé à la racine.

Linux gère sans problème les noms de fichiers et dossiers contenant des
espaces, des accents et des majuscules. Toutefois, vous remarquerez que la
plupart du temps on préfère les éviter. On trouve ainsi plutôt des noms tout
en minuscules sans accents ni espaces, comme usr , bin ,apache, etc.

Souvenez-vous qu'il n'est pas obligatoire de nommer vos fichiers en suivant la


même règle, mais la plupart des programmes que vous installerez préfèrent
utiliser des noms tout en minuscules sans espaces ni accents, ne soyez donc
pas surpris.

Les dossiers de la racine

Sous Windows, on a l'habitude de trouver souvent les mêmes dossiers à la


racine : Documents and Settings,Program Files,Windows…

Sous Linux, vous vous en doutez, les dossiers sont complètement différents.
Et l'on ne risque pas de trouver de dossier qui s'appelle Windows !

Nous fairons ici la liste des dossiers les plus courants que l'on retrouve à
chaque fois à la racine de Linux. La description de chaque dossier sera rapide,
mais c'est juste pour que vous puissiez vous repérer au début. ;

Il n'est PAS nécessaire de retenir cette liste par cœur. D'ailleurs vous verrez
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,

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
23

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 : fichiers permettant le démarrage de Linux.
• dev : fichiers 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 fichier qui
représente le lecteur CD.
• etc : fichiers de configuration.
• home : répertoires personnels des utilisateurs. On en a déjà parlé un
peu avant : c'est dans ce dossier que vous placerez vos fichiers
personnels, à la manière du dossier Mes documents de Windows.

Chaque utilisateur de l'ordinateur possède son dossier personnel. Par


exemple, dans mon cas mon dossier personnel se trouve dans/home/mateo21/.
S'il y avait un autre utilisateur (appelons-le Patrick) sur mon ordinateur, il
aurait eu droit lui aussi à son propre dossier :/home/patrick/.

• lib : dossier contenant les bibliothèques partagées (généralement des


fichiers.so) utilisées par les programmes. C'est en fait là qu'on trouve
l'équivalent des.dllde Windows.
• media : lorsqu'un périphérique amovible (comme une carte mémoire SD
ou une clé USB) est inséré dans votre ordinateur, Linux vous permet d'y
accéder à partir d'un sous-dossier de media. On parle de montage.
• mnt : c'est un peu pareil que media, mais pour un usage plus
temporaire.
• opt : répertoire utilisé pour les add-ons de programmes.
• proc : contient des informations système.
• root : c'est le dossier personnel de l'utilisateur « root ». Normalement,
les dossiers personnels sont placés dans home, mais celui de « root » fait
exception. En effet, comme je vous l'ai dit dans le chapitre précédent,
« root » est le superutilisateur, le « chef » de la machine en quelque sorte.
Il a droit à un espace spécial.
• sbin : contient des programmes système importants.
• tmp : dossier temporaire utilisé par les programmes pour stocker des
fichiers.
• usr : c'est un des plus gros dossiers, dans lequel vont s'installer la
plupart des programmes demandés par l'utilisateur.
• var : ce dossier contient des données « variables », souvent des logs
(traces écrites de ce qui s'est passé récemment sur l'ordinateur).

Cette liste de dossiers est en fait présente sur tous les OS de type Unix, et pas
seulement sous Linux. Encore une fois, ne retenez pas tout ça. C'est juste
pour vous donner une idée de ce que contiennent les dossiers à la racine de
Linux, car je sais que c'est une question qu'on se pose souvent quand on
débute.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
24

Schéma résumé de l'architecture

Pour que vous vous y repériez correctement, sachez qu'on peut présenter
l'organisation des dossiers de Linux comme le suggère la figure suivante.

Organisation des dossiers de Linux

La racine tout en haut est/ ; elle contient plusieurs dossiers, qui contiennent
chacun eux-mêmes plusieurs dossiers, qui contiennent des dossiers et
fichiers, etc.

pwd & which :

Le nombre de dossiers et de fichiers présents après l'installation d'Ubuntu est


tellement grand qu'il serait facile de s'y perdre. Un grand nombre de
programmes sont en effet préinstallés pour que vous puissiez profiter
rapidement des possibilités de Linux.

Maintenant vous allez apprendre comment vous repérez dans l'arborescence


des dossiers ? Vous saurez alors à tout moment où vous êtes sur votre disque.

pwd : afficher le dossier actuel

Lorsque vous ouvrez la console pour la première fois, Linux vous place dans
votre dossier personnel, votre home. En l'occurrence dans mon cas, le dossier
dans lequel je serai placé sera/home/mateo21.

Normalement, l'invite de commandes vous indique le nom du dossier dans


lequel vous vous trouvez :

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 « ~ ».
Enseignant : Mr TAPSOBA David UNIX à 20H
ANNEE : 2022 - 2023
25

Rappel : sous Linux le symbole ~ est un synonyme de votre dossier personnel.


Dans notre cas cela signifie 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 « Afficher le


dossier actuel ».

C'est une commande très simple qui ne prend aucun vous pouvez la tester :

mateo21@mateo21-desktop:~$ pwd
/home/mateo21

Nous sommes en ce moment dans le dossier/home/mateo21 (figure suivante).

Dossier /home/mateo21

À tout moment, si vous vous sentez perdus dans les méandres des dossiers,
souvenez-vous de la commande pwd, elle vous dira où vous êtes !

which : connaître l'emplacement d'une commande

Alors, que fait cette commande ? Elle vous permet de localiser la position du
programme correspondant à une commande: En effet chaque commande sous
Linux correspond à un programme. Ainsi, pwd qu'on vient de voir est un
programme.

Une commande n'est rien d'autre qu'un programme qu'on peut appeler
n'importe quand et n'importe où dans la console.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
26

La commande which prend un paramètre : le nom de la commande dont vous


voulez connaître l'emplacement. Testons sur pwd :

mateo21@mateo21-desktop:~$ which pwd


/bin/pwd

pwd setrouve donc dans le dossier/bin/ ! Le « pwd » à la fin n'est pas un dossier
mais le nom du programme lui-même.

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 commande which !

On va donc devoir écrire which which dans la console :

mateo21@mateo21-desktop:~$ which which


/usr/bin/which

Cette fois, le programme ne se trouve pas dans/bin/mais dans/usr/bin/

ls : lister les fichiers et dossiers

lsest une des toutes premières commandes que nous avons essayées dans la
partie précédente. Nous allons rentrer ici plus dans le détail de son
fonctionnement (et de ses nombreux paramètres…).

Commençons par taper « ls » sans paramètre depuis notre dossier personnel :

mateo21@mateo21-desktop:~$ ls
Desktop Examples images log tutos

Ubuntu active la coloration des fichiers 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 signifie que
c'est un raccourci vers un dossier qui se trouve en fait ailleurs sur le disque.

Si la couleur ne s'affiche pas, vous pouvez rajouter le paramètre--color=auto,


comme ceci :ls --color=auto. Si vous ne voulez pas de la couleur au contraire,
essayez le paramètre--color=none. Pour éviter d'avoir à taper à chaque fois ce
long paramètre, il faut modifier un fichier de configuration, mais on verra cela
plus tard.

La commande ls accepte un grand nombre de paramètres. Nous allons vous


faire découvrir les paramètres les plus utiles. Ça vous permettra de vous
entraîner à utiliser et combiner des paramètres !

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
27

-a : afficher tous les fichiers et dossiers cachés

Sous Linux, on peut « cacher » des fichiers et dossiers. Ce n'est pas une
protection, car on peut toujours les réafficher si on veut, mais ça évite
d'encombrer l'affichage de la commande ls.

Votre dossier home est un très bon exemple car il est rempli de fichiers et
dossiers cachés. En ajoutant le paramètre -a, on peut voir tous ces fichiers et
dossiers cachés :

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

dossiers sont cachés : c'est encombrant. Certains éléments commençant par


un point « . » sont des dossiers, d'autres sont des fichiers. 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à nous sommes
dans/home/mateo21, « .. » représente donc le dossier/home.

Le paramètre-A (un « A » majuscule au lieu d'un « a » minuscule) a


pratiquement la même signification : cela affiche la même chose sauf ces
éléments « . » et « .. ». Comme quoi il faut faire attention aux majuscules !

-F : indique le type d'élément

Ce paramètre est surtout utile pour ceux qui n'ont pas affiché la couleur dans
la console (ou n'en veulent pas). Il rajoute à la fin des éléments un symbole
pour qu'on puisse faire la distinction entre les dossiers, fichiers, raccourcis…

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@).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
28

-l : liste détaillée

Le paramètre-l (la lettre « L » en minuscule) est un des plus utiles. Il affiche


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

Il y a un élément par ligne. Chaque colonne a sa propre signification. De


gauche à droite :

1. droits sur le fichier (on fera une étude pour expliquer comment
fonctionnent les droits sous Linux) ;
2. nombre de liens physiques (cela ne nous intéresse pas ici) ;
3. nom de la personne propriétaire du fichier (là, c'est mateo21 !). Si le
fichier avait été créé par quelqu'un d'autre, par exemple Patrick, on
aurait vu son nom à la place ;
4. groupe auquel appartient le fichier (on en reparlera dans le chapitre sur
les droits). Il se peut que le nom du groupe soit le même que celui du
propriétaire ;
5. taille du fichier, en octets ;
6. date de dernière modification ;
7. nom du fichier (ou dossier).

Vous noterez aussi que dans le cas du raccourci (on parle de lien
symbolique), la commande nous précise vers où pointe le raccourci (en
l'occurrence/usr/share/example-content).

-h : afficher la taille en Ko, Mo, Go…

Quand on fait un ls -l, la taille est affichée en octets. Seulement, ce n'est parfois
pas très lisible. Par exemple :

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

Si vous rajoutez le paramètre h (« h » pour Human Readable, c'est-à-dire


« lisible par un humain »), vous obtenez des tailles de fichiers beaucoup plus
lisibles (normal, vous êtes des humains) :

mateo21@mateo21-desktop:~/Examples$ ls -lh

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
29

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 fichier Experience ubuntu.ogg fait 3,5 Mo,
logo-Edubuntu.pngfait 47 Ko, etc.

-t : trier par date de dernière modification

Voilà une option dont l'intérêt est sous-estimé !-t permet en effet de trier par
date de dernière modification, au lieu de trier par ordre alphabétique comme
cela est fait par défaut. On voit ainsi en premier le dernier fichier que l'on a
modifié, et en dernier celui auquel on n'a pas touché depuis le plus
longtemps :

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

De toute évidence, le dernier fichier (ici, c'est un dossier) modifié est « images ».
En revanche, comme on n’a jamais touché à « Examples », il est normal qu'il
apparaisse en dernier.

En pratique, nous combinons -t avec –r qui renverse l'ordre d'affichage des


fichiers. Nous préférons en effet avoir le dernier fichier modifié en bas de la
liste, c'est plus pratique à l'usage dans la console. Nous combinons un peu
tous les paramètres que l'on vient de voir, ce qui donne un beau ls –larth qui
contient toutes les options :

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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
30

Note : nous avons volontairement réduit cette liste car il y a beaucoup de


fichiers dans mon home. En pratique la liste est beaucoup plus grande.

Le fichier caché « .xsession-errors » est donc le dernier qui a été modifié 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, nous
avons créé l'aliasll (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 fichiers.

cd: changer de dossier

La commande que nous allons étudier ici s'appelle cd, abréviation de Change
Directory (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 suffit de taper cd / :

mateo21@mateo21-desktop:~$ cd /
mateo21@mateo21-desktop:/$ pwd/

Après avoir tapé cd /, on se retrouve à la racine. L'invite de commandes a


changé et le ~ a été remplacé par un/. Un petit coup de pwd devrait vous
confirmer que vous êtes bien dans/.

Bien ! Listons les fichiers et dossiers contenus dans/ :

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@

Vous y retrouvez un grand nombre de dossiers qu’on vous a décrits au début.


Allons dans le sous-dossier usr :

mateo21@mateo21-desktop:/$ cd usr

Voyons voir ce qu'il y a là-dedans…

mateo21@mateo21-desktop:/usr$ ls -F
bin/ games/ include/ lib/ local/ sbin/ share/ src/ X11R6/

voyons voir:

mateo21@mateo21-desktop:/usr$ cd games
mateo21@mateo21-desktop:/usr/games$

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
31

Schématiquement, on vient de faire ce qui est illustré dans la figure suivante.

Illustration de la commande cd

Supposons maintenant que j'aie envie de revenir au dossier précédent, aussi


appelé dossier parent, c'est-à-dire/usr.

Il faut utiliser les deux points comme ceci :

mateo21@mateo21-desktop:/usr/games$ cd ..
mateo21@mateo21-desktop:/usr$

on est revenu au dossier parent ! (figure suivante.)

Retour au dossier parent

Si on avait voulu reculer de deux dossiers parents, on aurait écrit../..(« reviens


en arrière, puis reviens en arrière »). Cela nous aurait ramené à la racine :

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
32

mateo21@mateo21-desktop:/usr/games$ cd ../..
mateo21@mateo21-desktop:/$

On est allé à la racine en tapant cd /, et maintenant en tapant cd ../..

Il y a en fait deux façons de changer de dossier : en indiquant un chemin


relatif, ou en indiquant un chemin absolu.

Les chemins relatifs

Un chemin relatif est un chemin qui dépend du dossier dans lequel vous vous
trouvez. Tout à l'heure, on est allé dans le sous-dossier games de/usr en tapant
juste son nom :

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

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$
Les chemins absolus

Contrairement aux chemins relatifs, les chemins absolus fonctionnent quel


que soit le dossier dans lequel on se trouve.

Un chemin absolu est facile à reconnaître : il commence toujours par la racine


(/). Vous devez ensuite faire la liste des dossiers dans lesquels vous voulez
entrer. Par exemple, supposons que nous soyons dans/home/mateo21et que
nous souhaitons aller dans/usr/games. Avec un chemin absolu :

mateo21@mateo21-desktop:~$ cd /usr/games
mateo21@mateo21-desktop:/usr/games$

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
33

Chemin absolu

Le schéma suivante 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 signifie « 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 figure suivante.

Chemin relatif

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
34

Ici, comme c'est un chemin relatif, on part du dossier dans lequel on se trouve
(ici, c'est/home/mateo21) et on indique à la machine le chemin à suivre à partir
de là pour aller dans le dossier qu'on veut.

Un chemin absolu est donc facile à reconnaître, car on part toujours de la


racine/.Un chemin relatif peut aussi s'avérer très pratique et plus court (ça
dépend des cas).Ce sera à vous de choisir à chaque fois comment vous voulez
écrire votre chemin. Vous avez le choix.

Retour au répertoire home

Si vous voulez retourner dans votre répertoire home personnel, plusieurs


solutions s'offrent à vous.

• La brutale : il suffit d'écrire le chemin absolu en entier. Cela donne :

mateo21@mateo21-desktop:/usr/games$ cd /home/mateo21/
mateo21@mateo21-desktop:~$

La maligne : plus court et plus pratique, vous pouvez utiliser l'alias~qui


signifie la même chose. Cela donne :

mateo21@mateo21-desktop:/usr/games$ cd ~
mateo21@mateo21-desktop:~$

La super maligne : si vous ne mettez aucun paramètre à la commande cd, ça


vous ramène aussi dans votre répertoire personnel.

mateo21@mateo21-desktop:/usr/games$ cd
mateo21@mateo21-desktop:~$
Autocomplétion du chemin

L'idée est simple : taper cd /usr/games/trucbidule c'est bien, mais c'est parfois un
peu long de tout écrire.

L'autocomplétion de chemin fonctionne de la même manière que


l'autocomplétion de commande qu'on a vue dans l’étude précédemment : avec
la touche Tab (Tabulation). Faites le test. Commencez par vous placer
dans/usr :

mateo21@mateo21-desktop:~$ cd /usr
mateo21@mateo21-desktop:/usr$

Tapez ensuite juste cd ga, puis appuyez sur Tab. 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 signifie que l'ordinateur n'a

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
35

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
signifie qu'il faut préciser votre recherche parce que sinon, l'ordinateur ne peut
pas deviner dans quel dossier vous voulez entrer. 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 !

du: taille occupée par les dossiers

La commande « du », pour Disk Usage (utilisation du disque) vous donne des


informations sur la taille qu'occupent les dossiers sur votre disque.

Placez-vous pour commencer dans/usr/games, et tapez du :

mateo21@mateo21-desktop:~$ cd /usr/games
mateo21@mateo21-desktop:/usr/games$ du 5732 .

Comme ce dossier ne contient pas de sous-dossier, la commande du nous


renvoie la taille totale que font les fichiers contenus dans le dossier.

Si vous allez dans votre home en revanche, celui-ci contient beaucoup de sous-
dossiers. Dans ce cas, la commande du va renvoyer la taille de chacun des
sous-dossiers, puis la taille totale à la fin (« . ») :

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 .

la liste est très longue.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
36

-h : la taille pour les humains

Ce qui est bien, c'est que les commandes reprennent souvent les mêmes
paramètres. Ainsi, on avait vu -h pour ls, eh bien ce paramètre est le même
pour avoir des tailles « humaines » avec du !

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 .

Mon dossier home prend donc 81 Mo d'espace disque, son sous-dossier caché.
Jedit prend 856 Ko, etc.

-a : afficher la taille des dossiers ET des fichiers

Par défaut, du n'affiche que la taille des dossiers. Pour avoir aussi la taille des
fichiers qu'ils contiennent, rajoutez l'option-a (all) :

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 .
-s : avoir juste le grand total

Pour n'avoir que l'espace total occupé par le dossier et donc ne pas afficher le
détail des sous-dossiers, utilisez -s (que nous combinons à-h pour plus de
lisibilité) :

mateo21@mateo21-desktop:~$ du -sh
81M .

Le dossier home fait 81 Mo (rappel : le symbole point « . » signifie « le dossier


actuel »).

En résumé

• Sous Linux, tout est organisé sous forme de fichiers. Il n'y a pas de
lecteur du type C:comme sous Windows.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
37

• 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 affiche la liste des fichiers présents dans le dossier actuel.
• cd permet de changer de dossier.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
38

4. Manipuler les fichiers

Après avoir vu comment étaient organisés les fichiers sous Linux, nous allons
apprendre à les manipuler !

Par exemple, comment faire pour afficher le contenu d'un fichier ? Comment
le déplacer, le copier, le supprimer ?

cat & less : afficher un fichier

Nous allons d'abord voir comment afficher le contenu d'un fichier. Il y a en


gros deux commandes basiques sous Linux qui permettent de faire cela :

• cat ;
• less.

Aucune de ces commandes ne permet d'éditer un fichier, elles permettent juste


de le voir.

Mais… pourquoi deux commandes pour afficher un fichier ? Une seule


n'aurait pas suffi ?

En fait, chacune a ses spécificités ! Nous allons les voir dans le détail.

Pour nos exemples, nous allons travailler sur un fichier 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 fichiers de log, c'est-à-dire des fichiers 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
…………………………………………………………………

Le fichier 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 fichiers sans extension sous Linux.
Notre fichier 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 fichier sans extension

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
39

peut être ouvert et lu sans aucun problème comme n'importe quel autre
fichier.

cat : afficher tout le fichier

La commande cat permet d'afficher tout le contenu d'un fichier dans la console
d'un coup. Il vous suffit d'indiquer en paramètre le nom du fichier que vous
voulez afficher, en l'occurrence syslog :

mateo21@mateo21-desktop:/var/log$ cat syslog


Nov 14 00:44:23 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 mateo21-desktop anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 mateo21-desktop anacron[6725]: Normal exit (1 job run)
Nov 14 00:44:25 mateo21-desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:44:51 mateo21-desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <debug> [1194997508.332093] nm_device_802_11_wireless_get_
activation_ap(): Forcing AP 'WIFI'
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <info> User Switch: /org/freedesktop/NetworkManager/Devices
/eth1 / WIFI
Nov 14 00:45:08 mateo21-desktop NetworkManager: <info> Deactivating device eth1.
Nov 14 00:45:08 mateo21-desktop NetworkManager: <info> Activation (eth1): cancelling...
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <info> Activation (eth1) cancellation handler scheduled...
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <info> Activation (eth1): waiting for device to cancel activation.
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <info> Activation (eth1) cancellation handled.
Nov 14 00:45:08 mateo21-desktop NetworkManager: <info> Activation (eth1): cancelled.
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <info> SUP: sending command 'DISABLE_NETWORK 0'
Nov 14 00:45:08 mateo21-desktop NetworkManager: <info> SUP: response was 'OK'
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <info> SUP: sending command '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 (>120
s), 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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
40

Nov 14 00:48:42 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.

...

La commande cat vous envoie tout le fichier à la figure. Elle est plus adaptée
lorsque l'on travaille sur de petits fichiers que sur des gros, car dans un cas
comme celui-là, on n'a pas le temps de lire tout ce qui s'affiche à 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'afficher les numéros de ligne :

mateo21@mateo21-desktop:/var/log$ cat -n syslog


1 Nov 14 00:44:23 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.
2 Nov 14 00:44:23 mateo21-desktop anacron[6725]: Job `cron.daily' terminated
3 Nov 14 00:44:23 mateo21-desktop anacron[6725]: Normal exit (1 job run)
4 Nov 14 00:44:25 mateo21-desktop NetworkManager: <info> eth1: link timed out.
5 Nov 14 00:44:51 mateo21-desktop NetworkManager: <info> eth1: link timed out.
6 Nov 14 00:45:08 mateo21-
desktop NetworkManager: <debug> [1194997508.332093]

...
less : afficher le fichier page par page

La commande cat est rapide. Trop rapide. Tout le fichier est lu et affiché d'un
coup dans la console, ce qui fait que l'on n'a pas le temps de le lire s'il est très
gros.

C'est là qu'une autre commande comme less devient vraiment indispensable.


La grosse différence entre less et cat, c'est que less affiche progressivement le
contenu du fichier, page par page. Ça vous laisse le temps de le lire dans la
console. :-)

Notez qu'il existe aussi une commande très proche : more. Pour faire simple,
la diffé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.

Comment ça marche ? la commande est très simple : less nom du fichier.

mateo21@mateo21-desktop:/var/log$ less syslog


Nov 14 00:44:23 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 mateo21-desktop anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 mateo21-desktop anacron[6725]: Normal exit (1 job run)
Nov 14 00:44:25 mateo21-desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:44:51 mateo21-desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <debug> [1194997508.332093] nm_device_802_11_wireless_get_
activation_ap(): Forcing AP 'WIFI'
Nov 14 00:45:08 mateo21-
desktop NetworkManager: <info> User Switch: /org/freedesktop/NetworkManager/Devices
……………………………………………

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
41

Ce qui est intéressant pour nous ici, c'est que la commande less a arrêté la
lecture du fichier au bout de quelques lignes (la taille d'un écran de console).
Cela vous laisse le temps de lire le début du fichier.

On n'a lu pour le moment que les toutes premières lignes du fichier.

Et comment lire la suite ?

Il y a quelques raccourcis clavier à connaître.

Les raccourcis basiques indispensables

Commençons par les quelques raccourcis clavier les plus indispensables, à


connaître absolument.

• Espace : affiche la suite du fichier. La touche Espace fait défiler le fichier


vers le bas d'un « écran » de console. C'est celle que j'utilise le plus
souvent.
• Entrée : affiche la ligne suivante. Cela permet donc de faire défiler le
fichier vers le bas ligne par ligne.

Vous pouvez aussi utiliser la touche Flèche vers le bas.

d : affiche les onze lignes suivantes (soit une moitié d'écran). C'est un peu
l'intermédiaire entre Espace (tout un écran) et Entrée (une seule ligne).

b : retourne en arrière d'un écran.

Vous pouvez aussi appuyer sur la touche Page Up.

y : retourne d'une ligne en arrière.

Vous pouvez aussi appuyer sur la touche Flèche vers le haut.

u : retourne en arrière d'une moitié d'écran (onze lignes).

q : arrête la lecture du fichier. Cela met fin à la commande less.

La casse des caractères est importante. Ainsi, si vous 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 différence entre majuscules et
minuscules : souvenez-vous-en !

Si on tape Espace, on avance donc d'un écran dans le fichier :

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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
42

Quelques raccourcis plus avancés

Ce ne sont pas des raccourcis que l'on utilise tous les jours, mais ça vaut le
coup de savoir qu'ils existent. :

• = : indique où vous en êtes dans le fichier (numéro des lignes affichées


et pourcentage).
• h : affiche l'aide (toutes les commandes que je vous apprends ici, je les
tire de là). Tapez q pour sortir de l'aide.
• / : tapez/suivi du texte que vous recherchez pour lancer le mode
recherche. Faites Entrée pour valider. Pour ceux qui savent s'en servir,
sachez que les expressions régulières sont acceptées.
• n : après avoir fait une recherche avec/, la touche n vous permet d'aller
à la prochaine occurrence de votre recherche. C'est un peu comme si
vous cliquiez sur le bouton « Résultat suivant ».
• N : pareil que n, mais pour revenir en arrière.

Comme vous le voyez, la commande less est très riche. On peut utiliser
beaucoup de touches différentes pour se déplacer dans le fichier.
Prenez le temps de vous familiariser avec : vous aurez déjà fait un grand pas
en avant… et puis ça vous sera très utile plus tard,

head & tail : afficher le début et la fin d'un fichier

Ces deux commandes sont un peu à l'opposé l'une de l'autre : la première


permet d'afficher le début du fichier, la seconde permet d'afficher la fin.

head : afficher le début du fichier

La commande head (« tête » en anglais) affiche seulement les premières lignes


du fichier. Elle ne permet pas de se déplacer dans le fichier comme less, mais
juste de récupérer les premières lignes.

mateo21@mateo21-desktop:/var/log$ head syslog


Nov 14 00:44:23 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.
Nov 14 00:44:23 mateo21-desktop anacron[6725]: Job `cron.daily' terminated
Nov 14 00:44:23 mateo21-desktop anacron[6725]: Normal exit (1 job run)
Nov 14 00:44:25 mateo21-desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:44:51 mateo21-desktop NetworkManager: <info> eth1: link timed out.
Nov 14 00:45:08 mateo21-…………………………………………….

Si vous avez juste besoin de récupérer les premières lignes d'un fichier, head
est donc la commande qu'il vous faut.

Comment ? Vous voulez des paramètres ?

-n,suivi d'un nombre. Il permet d'afficher le nombre de lignes que vous voulez.
Par exemple, si vous ne voulez que les trois premières lignes, tapez :

mateo21@mateo21-desktop:/var/log$ head -n 3 syslog


Nov 14 00:44:23 mateo21-desktop syslogd 1.4.1#21ubuntu3: restart.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
43

Nov 14 00:44:23 mateo21-desktop anacron[6725]: Job `cron.daily' terminated


Nov 14 00:44:23 mateo21-desktop anacron[6725]: Normal exit (1 job run)

tail : afficher la fin du fichier

la commande tail vous renvoie la fin du fichier, donc les dernières lignes.

mateo21@mateo21-desktop:/var/log$ tail syslog


Nov 14 22:42:10 mateo21-desktop NetworkManager: <info> Clearing nscd hosts cache.
Nov 14 22:42:10 mateo21-
desktop NetworkManager: <WARN> nm_spawn_process(): nm_spawn_process('/usr/sbin/n
scd -
i hosts'): could not spawn process. (Failed to execute child process "/usr/sbin/nscd" (No suc
h file or directory))
Nov 14 22:42:10 mateo21-
desktop NetworkManager: <info> Activation (eth1) Finish handler scheduled.
……………………………………………………………

On peut là encore utiliser-n suivi d'un nombre pour afficher les dernières
lignes :

mateo21@mateo21-desktop:/var/log$ tail -n 3 syslog


Nov 14 22:42:08 mateo21-desktop kernel: [ 7870.160000] eth1: no IPv6 routers present
Nov 14 23:11:26 mateo21-desktop -- MARK --
Nov 14 23:17:01 mateo21-desktop /USR/SBIN/CRON[8515]: (root) CMD ( cd / && run-
parts --report /etc/cron.hourly)

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 fin du fichier au fur et à


mesure de son évolution. C'est extrêmement utile pour suivre un fichier de log
qui évolue souvent. Vous pouvez tester sur syslog par exemple :

mateo21@mateo21-desktop:/var/log$ tail -f syslog


Nov 14 23:11:26 mateo21-desktop -- MARK --
Nov 14 23:17:01 mateo21-desktop /USR/SBIN/CRON[8515]: (root) CMD ( cd / && run-
parts --report /etc/cron.hourly)
Nov 14 23:27:52 mateo21-
desktop kernel: [10614.344000] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x
2 frozen
Nov 14 23:27:52 mateo21-
desktop kernel: [10614.344000] ata2.00: cmd a0/00:00:00:00:20/00:00:00:00:00/a0 tag 0
cdb 0x0 data 0
Nov 14 23:27:52 mateo21-
desktop kernel: [10614.344000] res 40/00:03:00:00:00/00:00:00:00:00/a0 Emask 0x
4 (timeout)
Nov 14 23:27:57 mateo21-
desktop kernel: [10619.388000] ata2: port is slow to respond, please be patient (Status 0xd0
)
……………………………………………

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.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
44

Faites Ctrl + C (Ctrl et C en même temps) pour arrêter la commande tail.

À connaître : la combinaison de touches Ctrl + C est utilisable dans la plupart


des programmes console pour demander leur arrêt. C'est un peu l'équivalent
du Alt + F4de Windows.

Pour tout vous dire, tail –f est une de mes commandes préférées sous Linux.
C'est un bon moyen de surveiller ce qui se passe en temps réel sur un
ordinateur (si vous êtes assez rapides pour suivre).

Notez que par défaut, tail –f recherche les nouveaux changements dans le
fichier toutes les secondes. Si vous voulez, vous pouvez rajouter le paramètre
-s suivi d'un nombre. Par exemple, tail -f -s 3 syslog recherchera les changements
toutes les trois secondes (plutôt que toutes les secondes). Les nombres
décimaux sont acceptés, à condition d'utiliser le point « . » à la place de la
virgule.

touch & mkdir : créer des fichiers et dossiers

Nous allons d'abord voir comment créer un fichier, puis comment créer un
dossier, car ce n'est pas la même commande…

touch : créer un fichier

La commande touch est à la base faite pour modifier la date de dernière


modification d'un fichier. D'où son nom : on « touche » le fichier pour faire
croire à l'ordinateur qu'on vient de le modifier alors que l'on n'a rien changé.

L'intérêt de touch pour nous, c'est que si le fichier n'existe pas, il sera créé ! On
peut donc aussi utiliser touch pour créer des fichiers, même s'il n'a pas
vraiment été fait pour ça à la base.

La commande attend un paramètre : le nom du fichier à créer. Commencez


par vous rendre dans votre dossier personnel dans/var/log, le dossier
personnel est là pour ça. Si vous vous souvenez bien, il suffit de taper cd :

mateo21@mateo21-desktop:/var/log$ cd
mateo21@mateo21-desktop:~$

Pour le moment, mon dossier personnel ne contient que des sous-dossiers :

mateo21@mateo21-desktop:~$ ls -F
Desktop/ Examples@ Images/ Modèles/ Public/ Vidéos/
Documents/ images/ log/ Musique/ tutos/

Créons un fichier appelé fichier bidon :

mateo21@mateo21-desktop:~$ touch fichierbidon


mateo21@mateo21-desktop:~$ ls -F
Desktop/ Examples@ images/ log/ Musique/ tutos/
Documents/ fichierbidon Images/ Modèles/ Public/ Vidéos/

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
45

La commande ls –F que j'ai tapée ensuite le montre, un fichier appelé


fichierbidon (sans extension) a été créé. Bien entendu, vous pouvez créer un
fichier de l'extension que vous voulez :

mateo21@mateo21-desktop:~$ touch autrefichierbidon.txt


mateo21@mateo21-desktop:~$ ls -F
autrefichierbidon.txt Examples@ Images/ Musique/ Vidéos/
Desktop/ fichierbidon log/ Public/
Documents/ images/ Modèles/ tutos/

Autre information intéressante : vous pouvez créer plusieurs fichiers en une


seule commande. Il vous suffit de les lister l'un après l'autre, séparés par des
espaces.

Ainsi, on aurait pu créer nos deux fichiers comme ceci :

touch fichierbidon autrefichierbidon.txt

Pour que le fichier contienne un espace,

Entourez-le de guillemets !

touch "Fichier bidon"


mkdir : créer un dossier

La commande mkdir, elle, est faite pour créer un dossier. Elle fonctionne de la
même manière que touch.

mkdir mondossier

On peut créer deux dossiers en même temps en les séparant là aussi par des
espaces :

mkdir mondossier autredossier

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 TD:

mkdir -p animaux/vertebres/chat

… créera le dossier animaux, puis à l'intérieur le sous-dossier vertebres, puis à


l'intérieur encore le sous-dossier chat !

cp & mv : copier et déplacer un fichier

Parmi les opérations de base que l'on veut pouvoir faire avec les fichiers, il y a
la copie et le déplacement de fichier.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
46

cp : copier un fichier

La commande cp (abréviation de CoPy, « copier » en anglais) vous permet


comme son nom l'indique de copier un fichier… mais aussi de copier plusieurs
fichiers à la fois, et même de copier des dossiers !

Si on essayait de copier le fichier fichierbidon qu'on a créé tout à l'heure ?


Ça fonctionne comme ceci :

cp fichierbidon fichiercopie

Le premier paramètre est le nom du fichier à copier, le second le nom de la


copie du fichier à créer. En faisant cela, on aura donc deux fichiers identiques
dans le même répertoire : fichierbidon et fichiercopie.

N'oubliez pas d'utiliser l'autocomplétion avec la touche Tab ! Lorsque vous avez
écrit cp fic, tapez Tab, et fichierbidon devrait se compléter tout seul !

Copier dans un autre dossier

On n'est pas obligé de copier le fichier dans le même dossier, bien sûr. On
peut très bien utiliser le système de répertoires relatifs et absolus qu'on a vu
précédemment. Par exemple, si on veux copier fichierbidon dans le sous-dossier
mondossier que j'ai créé tout à l'heure :

cp fichierbidon mondossier/

Le fichier fichierbidon sera copié dans mondossier sous le même nom.

Notez que mettre le /à la fin n'est pas obligatoire. Si vous le voyez là, c'est
parce que l'autocomplétion me l'a automatiquement ajouté lorsque j'ai appuyé
sur Tab. 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 !

Enfin là, nous utilisons des répertoires relatifs, mais nous pouvons aussi
écrire un répertoire en absolu :

cp fichierbidon /var/log/

… copier a fichierbidon dans le dossier/var/log.

Copier des dossiers

Avec l'option-R (un « R » majuscule !), vous pouvez copier un dossier, ainsi que
tous les sous-dossiers et fichiers qu'il contient !

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
47

Tout à l'heure, on a créé un dossier animaux qui contenait un autre dossier


vertebres, qui lui-même contenait le dossier chat. Si vous tapez cette
commande :

cp -R animaux autresanimaux

… cela aura pour effet de copier animaux ainsi que tous ses sous-dossiers sous
le nom autresanimaux. Faites des ls après pour vérifier que les sous-dossiers
sont bien là

Utiliser le joker*

Le symbole*est appelé joker, ou encore wildcard en anglais sous Linux.


Il vous permet de copier par exemple tous les fichiers image.jpg dans un sous-
dossier :

cp *.jpg mondossier/

Vous pouvez aussi vous en servir pour copier tous les fichiers dont le nom
commence par « so » :

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 fichiers que vous manipulez à la souris.

mv : déplacer un fichier

Très proche de cp, la commande mv (MoVe, « déplacer » en anglais) a en fait


deux utilités :

• déplacer un fichier (ou un dossier) ;


• renommer un fichier (ou un dossier).

Vous allez comprendre pourquoi.

Déplacer un fichier

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 fichier. Il n'existe plus dans son dossier d'origine.

Vous pouvez déplacer des dossiers aussi simplement :

mv animaux/ mondossier/

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
48

… déplacera le dossier animaux (et tous ses sous-dossiers) dans mondossier.

Vous pouvez aussi utiliser les jokers :

mv *.jpg mondossier/

Renommer un fichier

La commande mv permet de faire quelque chose d'assez étonnant : renommer


un fichier. En effet, il n'existe pas de commande spéciale pour renommer un
fichier en console sous Linux, c'est la commande mv qui est utilisée pour ça.

Par exemple :

mv fichierbidon superfichier

… renommera fichierbidon en superfichier. Après cette commande, fichierbidon


n'existe plus, il a été renommé.

Déplacer et renommer un fichier à la fois

Vous pouvez aussi déplacer fichierbidon dans mondossier tout en lui affectant un
nouveau nom :

mv fichierbidon mondossier/superfichier

Et voilà le travail !

NB : entraînez vous à 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.

N'oubliez pas d'utiliser l'autocomplétion de fichiers et dossiers avec la touche


Tab ;Autre chose : le symbole ..signifie « dossier précédent », et .signifie
« dossier dans lequel je me trouve ». Vous pourriez en avoir besoin lorsque
vous copiez ou déplacez un fichier.

rm : supprimer des fichiers et dossiers

On attaque la commande qui fâche : rm Pourquoi est-ce qu'elle fâche ? Parce


qu'il n'existe pas de corbeille dans la console de Linux : le fichier est
directement supprimé sans possibilité de récupération !

rm : supprimer un fichier

La commande rm ( pour ReMove, « supprimer » en anglais) peut supprimer un


fichier, plusieurs fichiers, des dossiers, voire même votre ordinateur entier si
vous le voulez.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
49

Il faut donc l'utiliser avec précaution. Commençons par des choses simples,
supprimons ce fichierbidon :

rm fichierbidon

Normalement, on ne vous demande pas de confirmation, on ne vous affiche


rien. Le fichier est supprimé sans autre forme d'avertissement.

Vous pouvez aussi supprimer plusieurs fichiers en séparant leurs noms par
des espaces :

rm fichierbidon fichiercopie
-i : demander confirmation

La commande -i permet de vous demander une confirmation pour chacun des


fichiers :

mateo21@mateo21-desktop:~$ rm -i fichierbidon
rm: détruire fichier régulier vide `fichierbidon'?

Lorsqu'on vous demande une confirmation de type oui/non comme ici, vous
devez répondre par une lettre :

• o : signifie « Oui ». Sur certains systèmes anglais, il faudra peut-être


utiliser y de Yes ;
• n : signifie « Non ».

Tapez ensuite sur Entrée pour valider.

-f : forcer la suppression, quoi qu'il arrive

-f,
c'est un peu le contraire de -i : Ce paramètre force la suppression, ne
demande pas de confirmation, même s'il y a un problème potentiel.

En raison des risques que cela comporte, utilisez-le aussi rarement que
possible.

rm -f fichierbidon
-v : dis-moi ce que tu fais,

Le paramètre-v (Verbose, verbeux en anglais, c'est-à-dire « parler beaucoup »)


est un paramètre que l'on retrouve dans beaucoup de commandes sous Linux.
Il permet de demander à la commande de dire ce qu'elle est en train de faire.

Comme vous l'avez vu, par défaut la commande rm est silencieuse. Si vous
supprimez de très nombreux fichiers, ça peut prendre du temps. Pour éviter
que vous vous impatientiez, pensez à utiliser-v :

mateo21@mateo21-desktop:~$ rm -v fichierbidon fichiercopie


détruit `fichierbidon'

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
50

détruit `fichiercopie'

Vous voyez au fur et à mesure de l'avancement ce qui est en train d'être fait.
Très pratique !

-r : supprimer un dossier et son contenu

Le paramètre -r peut être utilisé pour supprimer un dossier (au lieu d'un
fichier) ainsi que tout ce qu'il contient : fichiers et dossiers !

C'est un paramètre assez dangereux, faites donc bien attention de l'utiliser


sur un dossier dont vous ne voulez vraiment plus, car tout va disparaître à
l'intérieur :

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 diffé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.

rm et le joker de la mort (qui tue)

Le moment est venu de vous révéler un terrible secret : la commande rm est


vraiment dangereuse. Très dangereuse. Vous pouvez potentiellement bousiller
tout votre système avec !

NON NON NON NE FAITES JAMAIS CA !!! => rm -rf /*

à ne pas faire sous Linux.

• rm : commande la suppression ;
• -r : supprime de manière récursive tous les fichiers et dossiers ;
• -f : force la suppression sans demander la moindre confirmation ;
• /* : supprime tous les fichiers 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 confirmation. 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.

En fait, il y a plusieurs mécanismes de protection. Par exemple, les fichiers à


la racine ne vous « appartiennent » pas, ils appartiennent au superutilisateur
« root ». en tant que mateo21, nous n’avons donc théoriquement pas le droit de
supprimer ces fichiers. La suppression sera refusée.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
51

Seulement, pour peu que vous soyez loggés en tant que « root » (on verra
comment le faire par la suite), vous aurez le droit de le faire, et là plus rien ne
vous arrêtera !

On apprendra plus tard comment utiliser les alias de commande pour éviter
qu'une commande aussi dangereuse ne s'exécute. avec.

Le joker reste quand même très utile, mais lorsque vous l'utilisez avec rm,
triplez d'attention. Par exemple :

rm -rf *

… supprime tous les fichiers et sous-dossiers du dossier dans lequel je me


trouve.

ln : créer des liens entre fichiers

Bien qu'un peu moins courante, la commande ln vous sera certainement utile
un jour ou l'autre. Elle permet de créer des liens entre des fichiers, c'est-à-
dire (pour employer des mots que vous connaissez) qu'elle permet de créer
des raccourcis.

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 effet,
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 différencie, il faut savoir comment un OS tel que Linux gère les fichiers
sur le disque dur Allons :

Le stockage des fichiers

Sur le disque dur, chaque fichier est grosso-modo séparé en deux parties :

• son nom ;
• son contenu.

Vous avez bien lu : la liste des noms de fichiers est stockée à un autre endroit
que leur contenu. Cette séparation aide Linux à s'organiser.

On simplifie ici volontairement les choses. En pratique, c'est (toujours) un peu


plus compliqué. Il y en fait trois parties : le nom, les informations de gestion
(droits d'accès) et le contenu. Mais nous allons faire simple car notre but est
juste de comprendre l'idée générale du fonctionnement.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
52

Chaque contenu de fichier se voit attribuer un numéro d'identification appelé


inode (figure suivante). Chaque nom de fichier est donc associé à un inode
(son contenu).

Fichiers associés à des inodes

C'est tout ce que vous avez besoin de savoir pour comprendre la suite.

Nous allons maintenant découvrir comment créer des liens physiques puis
des liens symboliques.

Créer des liens physiques

Ce type de lien est plus rarement utilisé que le lien symbolique, mais il faut
tout de même le connaître car il peut se révéler pratique.

Un lien physique permet d'avoir deux noms de fichiers qui partagent


exactement le même contenu, c'est-à-dire le même inode (figure suivante).

Lien physique

Ainsi, que vous passiez par fichier1 ou par fichier2, vous modifiez exactement le
même contenu. En quelque sorte, le fichier est le même. On peut juste y
accéder via deux noms de fichiers différents.

On ne peut pas créer de liens physiques sur des répertoires. Cela ne


fonctionne qu'avec les fichiers Il existe des options pour que ça fonctionne
avec des répertoires, mais c'est un peu particulier et on n'en parlera pas. Pour

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
53

faire un « raccourci » vers un répertoire, on préfèrera utiliser un lien


symbolique.

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 fichier 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 fichiers du répertoire, vous avez l'impression d'avoir deux
fichiers différents :

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 fichiers modifient le même
contenu. Le lien physique est donc un lien dur, pas évident à détecter au
premier coup d’œil.

La seconde colonne de la liste (qui indique « 2 » pour chacun des fichiers)


correspond au nombre de fichiers qui partagent le même inode. C'est le seul
indice qui vous permet de savoir que quelqu'un a fait un lien physique, mais
vous ne pouvez pas savoir lequel. Le seul moyen de vérifier que ces fichiers
partagent le même contenu, c'est de faire ls –i pour afficher les numéros d'inode
correspondants et de vérifier que ces deux fichiers sont associés au même
inode.
En temps normal, sur la plupart des fichiers la seconde colonne indique donc
« 1 ». Si c'est un dossier, ce nombre indique en revanche le nombre de fichiers
à l'intérieur.

Si vous supprimez un des deux fichiers, l'autre fichier reste en place et le


contenu sera toujours présent sur le disque. L'inode est supprimé uniquement
quand plus aucun nom de fichier ne pointe dessus. En clair, supprimez fichier1
pour voir. Vous verrez que fichier2 existe toujours et qu'il affiche toujours le
même contenu. Il faut supprimer fichier1 ET fichier2 pour supprimer le contenu.

Créer des liens symboliques

Les liens symboliques ressemblent plus aux « raccourcis » dont vous avez
peut-être l'habitude sous Windows. La plupart du temps, on crée des liens
Enseignant : Mr TAPSOBA David UNIX à 20H
ANNEE : 2022 - 2023
54

symboliques sous Linux pour faire un raccourci, et non des liens physiques
qui sont un peu particuliers.

Le principe du lien symbolique est que l'on crée un lien vers un autre nom de
fichier. Cette fois, on pointe vers le nom de fichier et non vers l'inode
directement (figure suivante).

Lien symbolique

Supprimez le fichier2 que nous avons créé tout à l'heure (sous forme de lien
physique) :

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

Cette fois, la commande détaillée ls –l sera beaucoup plus précise :

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

On note deux choses :

• la toute première lettre de la seconde ligne est unl (comme link, c'est-à-
dire lien) ;
• tout à la fin de la seconde ligne, une flèche montre clairement que fichier2
pointe vers fichier1.

Bref, les liens symboliques sont beaucoup plus faciles à repérer que les liens
physiques !

Ok, mais quelles différences à part ça ? Le résultat revient au même? Qu'on


ouvre fichier1 ou fichier2, on éditera le même contenu au final !

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
55

Tout à fait. Il y a quand même quelques subtilités :

• par exemple, si vous supprimez fichier2, il ne se passe rien de mal. Par


contre, si vous supprimez fichier1, fichier2 pointera vers un fichier qui
n'existe plus. Le lien symbolique sera cassé et ne servira donc plus à
rien. On parle de « lien mort » ;
• d'autre part, l'avantage des liens symboliques est qu'ils fonctionnent
aussi sur des répertoires, contrairement aux liens physiques.

En résumé

• cat permet d'afficher tout le contenu d'un fichier, mais lorsque celui-ci
est long, il est préférable d'utiliser less qui affiche le fichier page par page.
• On peut obtenir uniquement le début ou la fin d'un fichier avec head et
tail. En utilisant tail –f on peut suivre l'évolution d'un fichier en temps
réel, ce qui est utile sur les fichiers de log qui enregistrent l'activité du
système.
• mkdir permet de créer un dossier, touch permet de créer un fichier vide.
• cp permet de copier un fichier ou un dossier, tandis que mv permet de
les déplacer ou de les renommer.
• rm supprime un fichier. Il n'y a pas de corbeille en console, la
suppression est définitive ; il faut donc être prudent.
• On peut créer des liens (raccourcis) vers des fichiers et dossiers à l'aide
de la commande ln.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
56

5. Les utilisateurs et les droits

Linux est un système multi-utilisateurs. Cela signifie que plusieurs personnes


peuvent travailler simultanément sur le même OS, en s'y connectant à
distance notamment, 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.

sudo: exécuter une commande en root

Lorsque vous avez installé Ubuntu, on vous a demandé le nom du compte


utilisateur que vous vouliez créer. Par exemple dans notre cas nous avons 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 ».

Bien vrai que 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 signifie 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 cette partie, nous apprendrons à créer et supprimer des utilisateurs
en ligne de commande.

L'organisation des utilisateurs sous Linux

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 figure suivante.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
57

Au départ, par rapport à notre d’étude, 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 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
manipulation, de virus sur votre PC, etc. En effet, 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.

Exception : Ubuntu est une des rares distributions à interdire de se connecter


(logger) en root. Le compte root existe mais vous n'y avez pas accès
directement. Nous allons voir que ce n’est pas un problème puisqu’on peut y
accéder indirectement. Les développeurs d'Ubuntu justifient ce choix car ils
considèrent, à juste titre, qu'il est dangereux de laisser le compte root entre
les mains d'un débutant. Moi-même sur d'autres distributions j'ai tendance à
désactiver l'accès direct à l'utilisateur root.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
58

sudo : devenir root un instant

Par défaut, vous êtes connectés sous votre compte limité (mateo21 pour ma
part). Il est impossible sous Ubuntu de se connecter directement en root au
démarrage de l'ordinateur.

Comment faire alors pour exécuter des commandes que seul root a le droit
d'exécuter ?

On peut devenir root temporairement à l'aide de la commande sudo. Cette


commande signifie « Faire en se substituant à l'utilisateur » : Substitute User
DO.

Écrivez donc sudo suivi de la commande que vous voulez exécuter, comme
ceci :

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 utilisateur limité.

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.

sudo su : devenir root et le rester

Si vous tapez sudo su (tout court), vous passerez root indéfiniment.

mateo21@mateo21-desktop:/home$ sudo su
[sudo] password for mateo21:
root@mateo21-desktop:/home#

Le symbole # à la fin de l'invite de commandes vous indique que vous êtes


devenus superutilisateur. Vous pouvez alors exécuter autant de commandes
en root que vous le voulez.

Pour quitter le « mode root », tapez exit (ou faites la combinaison Ctrl + D).

root@mateo21-desktop:/home/mateo21# exit
exit

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
59

mateo21@mateo21-desktop:~$

Et vous voilà redevenus simples mortels.

Sous les autres distributions qu'Ubuntu, écrire « su » suffit à passer root. Il est
néanmoins recommandé dans ce cas d'ajouter un tiret en paramètre, c'est-à-
dire d'écrire « su - ». L'ajout du tiret a pour effet de rendre accessibles certains
programmes destinés seulement à root. Par ailleurs, cela vous place
directement dans le dossier personnel de root (/root).

adduser : gestion des utilisateurs

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.

adduser : ajouter un utilisateur

La commande adduser permet d'ajouter un utilisateur. Vous devez au


minimum fournir un paramètre : le nom de l'utilisateur à créer. Par exemple,
pour créer un compte pour Patrick :

root@mateo21-desktop:/home# adduser patrick


Ajout de l'utilisateur « patrick »...
Ajout du nouveau groupe « patrick » (1001)...
Ajout du nouvel utilisateur « patrick » (1001) avec le groupe « patrick »...
Création du répertoire personnel « /home/patrick »...
Copie des fichiers depuis « /etc/skel »...

Pensez à rajouter un sudo devant la commande si vous n'êtes pas déjà root ;
pour cela, tapez sudo adduser patrick. 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éconfiguré. On vous demande ensuite de taper son mot de
passe :

Entrez le nouveau mot de passe UNIX :


Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès

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.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
60

Modification des informations relatives à l'utilisateur patrick


Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
Nom complet []:
N° de bureau []:
Téléphone professionnel []:
Téléphone personnel []:
Autre []:
Ces informations sont-elles correctes ? [o/N] o

À la fin, on vous demande de confirmer par un « o » (oui) que tout est bon.
Tapez Entrée et ça y est, le compte de patrick est créé !

passwd : changer le mot de passe

S'il était nécessaire de changer le mot de passe de patrick par la suite, utilisez
la commande passwd en indiquant en paramètre le nom du compte à modifier.

root@mateo21-desktop:/home# passwd patrick


Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès

Attention ! Si vous appelez passwd sans préciser de compte en paramètre, c'est


le mot de passe de l'utilisateur sous lequel vous êtes connecté que vous
changerez ! Ainsi, si vous êtes en root, c'est le mot de passe de root qui sera
modifié.

deluser : supprimer un compte

patrick vous ennuie ? patrick est parti ? Si son compte n'est plus nécessaire
(ou que vous voulez vous venger) vous pouvez le supprimer avec deluser.

deluser patrick

Aucune confirmation ne vous sera demandée !

Ne supprimez en aucun cas votre compte utilisateur ! Par exemple, je ne dois


surtout pas supprimer le compte mateo21. En effet, si je le fais, il n'y aura
plus que root sur la machine… et Ubuntu interdit de se logger en root. Par
conséquent, au prochain démarrage de la machine vous ne pourrez pas vous
connecter… et vous serez complètement coincés !

Toutefois, cette commande seule ne supprime pas le répertoire personnel de


patrick. Si vous voulez supprimer aussi son home et tous ses fichiers
personnels, utilisez le paramètre --remove-home :

deluser --remove-home patrick

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 partout.
Elles font globalement la même chose mais de manière beaucoup plus
Enseignant : Mr TAPSOBA David UNIX à 20H
ANNEE : 2022 - 2023
61

basique : si vous n'appelez pas passwd vous-mêmes, le compte ne sera pas


activé et n'aura pas de mot de passe.

addgroup : gestion des groupes

chaque utilisateur appartient à un groupe.

Oui mais dans ce cas, à quel groupe appartiennent les utilisateurs mateo21
et patrick ? On n'a rien défini, nous !

En effet, si vous ne définissez 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érifier 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

Souvenez-vous : la 3ème colonne indique le propriétaire du fichier ou dossier ;


la 4ème indique le groupe qui possède ce fichier ou dossier.

Ainsi, le dossier mateo21 appartient à l'utilisateur mateo21 et au groupe


mateo21.
Même chose pour patrick. On constatera par ailleurs que lost + found appartient
à root et qu'il y a un groupe root (root fait donc partie du groupe root).

Bon, mais quel intérêt y a-t-il à ce que tout le monde soit dans son propre
groupe, me direz-vous ? Vous pourriez très bien vous contenter de ce
fonctionnement (un utilisateur = un groupe), mais au cas où vous auriez
beaucoup d'utilisateurs, comment créer des groupes.

addgroup : créer un groupe

La commande addgroup crée un nouveau groupe. Vous avez juste besoin de


spécifier le nom de celui-ci en paramètre :

root@mateo21-desktop:/home# addgroup amis


Ajout du groupe « amis » (identifiant 1002)...
Terminé.

Super, mais personne ne fait encore partie de ce groupe. :-(

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
62

usermod : modifier un utilisateur

La commande usermod permet d'éditer un utilisateur. Elle possède plusieurs


paramètres ; nous allons en retenir deux :

• -l : renomme l'utilisateur (le nom de son répertoire personnel ne sera


pas changé par contre) ;
• -g : change de groupe.

Si je veux mettre patrick dans le groupe amis, je ferai donc comme ceci :

usermod -g amis patrick

Et pour remettre patrick dans le groupe patrick comme il l'était avant :

usermod -g patrick patrick

Il est aussi possible de faire en sorte qu'un utilisateur appartienne à plusieurs


groupes. Pour ce faire, utilisez le paramètre -G (majuscule). Exemple : usermod -
G amis,paris,collegues patrick. Séparez les noms des groupes par une virgule, sans
espace entre chaque nom de groupe.

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
appartenait 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 : supprimer un groupe

Si vous voulez supprimer un groupe, c'est tout simple :

delgroup amis

addgroupet delgroup n'existent que sous Debian et ses dérivés (même remarque
que pour adduser et deluser). Les commandes « traditionnelles » qui fonctionnent
partout sont groupadd et groupdel, mais elles offrent moins d'options.

chown : gestion des propriétaires d'un fichier

Seul l'utilisateur root peut changer le propriétaire d'un fichier. Supposons par
exemple que mateo21 possède dans son répertoire personnel un fichier appelé
rapport.txt.

Voici le résultat d'un ls -l pour ce fichier :

mateo21@mateo21-desktop:~$ ls -l rapport.txt
-rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
63

Petite astuce : comme vous venez de le voir, si on précise un nom de fichier en


dernier paramètre de la commande ls, on ne verra que ce fichier dans les
résultats.
Le joker * est là aussi utilisable : ls -l *.jpg afficherait uniquement les images
JPEG contenues dans ce dossier.

Ce fichier, je souhaite le « donner » à patrick. C'est là qu'intervient la


commande chown.

chown : changer le propriétaire d'un fichier

La commande chown, qui doit être utilisée en tant que root, attend deux
paramètres au moins :

• le nom du nouveau propriétaire ;


• le nom du fichier à modifier.

Cela donne donc :

chown patrick rapport.txt

On peut voir ensuite que patrick est bien le nouveau propriétaire du fichier :

root@mateo21-desktop:/home/mateo21# ls -l rapport.txt
-rw-r--r-- 1 patrick mateo21 0 2007-11-15 23:14 rapport.txt

Seulement… il appartient toujours au groupe mateo21 !

chgrp : changer le groupe propriétaire d'un fichier

chgrp s'utilise exactement de la même manière que chown à la différence près


qu'il affecte cette fois le groupe propriétaire d'un fichier.

chgrp amis rapport.txt

Cette commande affectera le fichier rapport.txt au groupe amis.

Un petit ls -l nous confirmera que rapport.txt appartient désormais à patrick et


au groupe amis :

root@mateo21-desktop:/home/mateo21# ls -l rapport.txt
-rw-r--r-- 1 patrick amis 0 2007-11-15 23:14 rapport.txt
chown peut aussi changer le groupe propriétaire d'un fichier !

chown patrick:amis rapport.txt

Cela affectera le fichier à l'utilisateur patrick et au groupe amis. Il suffit de


séparer par un symbole deux points (« : ») le nom du nouvel utilisateur (à
gauche) et le nom du nouveau groupe (à droite).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
64

-R : affecter récursivement les sous-dossiers

Très utile aussi, l'option -R de chown. Elle modifie tous les sous-dossiers et
fichiers contenus dans un dossier pour y affecter un nouvel utilisateur (et un
nouveau groupe si on utilise la technique du deux points que l'on vient de
voir).

Par exemple, si je suis sadique et que je veux donner tout le contenu du


dossier personnel de patrick à mateo21 (et au groupe mateo21), c'est très
simple :

chown -R mateo21:mateo21 /home/patrick/

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

Désormais tous les fichiers à l'intérieur du dossier de patrick appartiennent à


mateo21 (Expérimenté et connaissance).

chmod : modifier les droits d'accès

On attaque maintenant la partie aussi très très importante je puis dire : les
droits d'accès.

Le fonctionnement des droits

Chaque fichier et chaque dossier possède une liste de droits. C'est une liste
qui indique qui a le droit de voir le fichier, de le modifier et de l'exécuter.

Vous avez déjà vu des listes de droits, oui oui ! Lorsque vous faites un ls -l, il
s’agit de la première colonne :

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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
65

Vous voyez tous ces d, r, w et x au début ? Ce sont ce qu'on appelle les droits
d'accès du fichier ou dossier.

On peut voir cinq lettres différentes. Voici leur signification :

• 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 modifier l'élément ;
• x (eXecute) : si c'est un fichier, « x » indique qu'on peut l'exécuter. Ce
n'est utile que pour les fichiers 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.

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.

Pourquoi est-ce qu'on voit parfois r, w et x à plusieurs reprises ?

Les droits sont découpés en fonction des utilisateurs (figure suivante).

Le premier élément d mis à part, on constate que r, w et x sont répétés trois


fois en fonction des utilisateurs :

• le premier triplet rwx indique les droits que possède le propriétaire du


fichier sur ce dernier ;
• le second triplet rwx indique les droits que possèdent les autres membres
du groupe sur ce fichier ;
• enfin, le dernier triplet rwx indique les droits que possèdent tous les
autres utilisateurs de la machine sur le fichier.

Prenons un cas concret, le fichier rapport.txt :

mateo21@mateo21-desktop:~$ ls -l rapport.txt
-rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt

Ses droits sont : -rw-r--r--

• - : le premier tiret indique qu'il ne s'agit pas d'un dossier. S'il y avait eu
un d à la place, cela aurait indiqué qu'il s'agissait d'un dossier.
• rw- : indique que le propriétaire du fichier, mateo21 en l'occurrence,
peut lire et modifier (et donc supprimer) le fichier. En revanche, il ne

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
66

peut pas l'exécuter car il n'a pas de x à la fin. On rappelle que quiconque
peut modifier un fichier a aussi le droit de le supprimer.
• r-- : tous les utilisateurs qui font partie du groupe mateo21 mais qui ne
sont pas mateo21 peuvent seulement lire le fichier. Ils ne peuvent ni le
modifier, ni l'exécuter. On reconnaît qu'avoir un nom de groupe
identique au nom d'utilisateur peut embrouiller : si vous êtes aussi bien
organisés que sur mon premier schéma, on parlera plutôt du groupe
famille.
• r-- : tous les autres (ceux qui ne font pas partie du groupe mateo21)
peuvent seulement lire le fichier.

En résumé, ces droits nous apprennent que l'élément est un fichier, que
mateo21 peut le lire et le modifier et que tous les autres utilisateurs peuvent
seulement le lire.

Et root ? Il a quels droits ?

Souvenez-vous d'une chose : root a TOUS les droits. Il peut tout faire : lire,
modifier, exécuter n'importe quel fichier.

chmod : modifier les droits d'accès

Maintenant que nous savons voir et comprendre les droits d'accès d'un fichier,
nous allons apprendre à les modifier à l'aide de la commande chmod.

Une précision importante pour commencer : contrairement aux commandes


précédentes, vous n'avez pas besoin d'être root pour utiliser chmod. Vous devez
juste être propriétaires du fichier dont vous voulez modifier les droits d'accès.

chmod est un petit peu délicat à utiliser. En effet, on peut attribuer les droits
sur un fichier / dossier via plusieurs méthodes différentes, la plus courante
étant celle des chiffres.

Attribuer des droits avec des chiffres (chmod absolu)

Il va falloir faire un petit peu de calcul mental. En effet, on attribue un chiffre


à chaque droit :

Droit Chiffre
r 4
w 2
x 1

Si vous voulez combiner ces droits, il va falloir additionner les chiffres


correspondants.
Ainsi, pour attribuer le droit de lecture et de modification, il faut additionner
$4+2$, ce qui donne 6. Le chiffre 6 signifie donc « Droit de lecture et
d'écriture ».

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
67

Voici la liste des droits possibles et la valeur correspondante :

Droits Chiffre Calcul


--- 0 0+0+ 0
r-- 4 4+0+ 0
-w- 2 0+2+ 0
--x 1 0+0+ 1
rw- 6 4+2+ 0
-wx 3 0+2+ 1
r-x 5 4+0+ 1
Rwx 7 4+2+ 1

C'est compris ? Avec ça, on peut calculer la valeur d'un triplet de droits. Il faut
faire le 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
fichier.
Au contraire, avec un droit de 000, personne ne peut rien faire… à part root,
bien sûr.

Pour changer les droits sur le fichier rapport.txt, et être le seul autorisé à le lire
et l'éditer, je dois exécuter cette commande :

chmod 600 rapport.txt

Un petit ls -l pour voir le résultat :

mateo21@mateo21-desktop:~$ ls -l rapport.txt
-rw------- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt

On a bien confirmation que seul le propriétaire du fichier, c'est-à-dire moi,


peut le lire et le modifier !

Attribuer des droits avec des lettres (chmod relatif)

Il existe un autre moyen de modifier les droits d'un fichier. Il revient un peu
au même mais permet parfois de paramétrer plus finement, droit par droit.
Dans ce mode, il faut savoir que :

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
68

• u = user (propriétaire) ;
• g = group (groupe) ;
• o = other (autres).

… et que :

• + signifie : « Ajouter le droit » ;


• - signifie : « Supprimer le droit » ;
• = signifie : « Affecter le droit ».

Maintenant que vous savez cela, vous pouvez écrire :

chmod g+w rapport.txt

Signification : « Ajouter le droit d'écriture au groupe ».

chmod o-r rapport.txt

Signification : « Enlever le droit de lecture aux autres ».

chmod u+rx rapport.txt

Signification : « Ajouter les droits de lecture et d'exécution au propriétaire ».

chmod g+w,o-w rapport.txt

Signification : « Ajouter le droit d'écriture au groupe et l'enlever aux autres ».

chmod go-r rapport.txt

Signification : « Enlever le droit de lecture au groupe et aux autres ».

chmod +x rapport.txt

Signification : « Ajouter le droit d'exécution à tout le monde ».

chmod u=rwx,g=r,o=- rapport.txt

Signification : « Affecter tous les droits au propriétaire, juste la lecture au


groupe, rien aux autres ».

Avec la commande chmod, normalement si vous suivez les exemples vous


devriez être capables de tout faire !

Et toujours… -R pour affecter récursivement

Le paramètre -R existe aussi pour chmod. Si vous affectez des droits sur un
dossier avec -R, tous ses fichiers et sous-dossiers récupèreront le même droit.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
69

Si je veux être le seul à pouvoir lire, éditer et exécuter les fichiers de mon
répertoire personnel et de tous ses fichiers, j'ai juste besoin d'écrire :

chmod -R 700 /home/mateo21

C'est tout !

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 effectuer certaines modifications 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’utilisateur (adduser), de suppression
d'utilisateur (deluser) ou encore de changement de propriétaire d'un
fichier (chown).
• On peut modifier les droits d'accès à un fichier avec chmod. Il existe trois
types de droits : r (droit de lecture), w (droit d'écriture) et x (droit
d'exécution).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
70

6. Nano, l'éditeur de texte du débutant

Nous avons découvert plusieurs façons de voir le contenu d'un fichier


en console. Mais… aucune des commandes que nous avons étudiées ne
nous permettait d'éditer un fichier.

Pourquoi avons-nous mis du temps pour aborder les é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.

Nous découvrirons Vim plus loin , car il est plus complexe et nécessite
déjà un bon niveau.

Premiers pas avec Nano

En sciences, le terme « nano » représente une toute petite unité. Par


exemple, un atome a une taille d'environ 0,1 nanomètre.

L’éditeur de texte s'appelle Nano, c'est parce qu'il est tout petit. Il s'agit
d'un programme très simple comparé à Vim et Emacs et il nous
conviendra tout à fait pour démarrer. Il possède assez peu de fonctions
par rapport aux deux autres logiciels (qui peuvent devenir de véritables
machines de guerre) mais suffisamment pour commencer à vous
débrouiller avec un éditeur de texte.

Nano est un éditeur de texte, pas un traitement de texte !

Savez-vous vraiment ce qu'est un éditeur de texte ? Ne le confondez-


vous pas avec un traitement de texte ?

Un éditeur de texte est un programme qui permet de modifier des


fichiers de texte brut, sans mise en forme (gras, italique, souligné…).
Sous Windows, on dispose d'un éditeur de texte très basique : le Bloc-
Notes. Sous Linux, on a le choix entre Nano, Vim, Emacs et bien
d'autres, sachant qu'au moins un de ceux-là est installé par défaut sur
la plupart des distributions.

Un traitement de texte est fait pour rédiger des documents mis en


forme. Sous Windows, Word est le plus célèbre traitement de texte ; sous
Linux, on possède l'équivalent : Open Office Writer. Ces programmes ne
peuvent être utilisés qu'en mode graphique, la console ne permettant
pas vraiment de faire de la mise en forme.

Quand a-t-on besoin d'un éditeur de texte ?

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
71

Chaque fois que vous devez éditer un fichier de texte brut. Sous
Windows, vous avez l'habitude de voir des fichiers de texte brut au
format.txt. Sous Linux, vous savez que l'extension importe peu (on peut
trouver des fichiers en texte brut sans extension).

Les éditeurs de texte sont parfaits pour les programmeurs en


particulier : ils permettent d'éditer des fichiers.c,.cpp,.h,.rb,.py, etc. (En
fonction de votre langage de programmation.) Même si vous ne
programmez pas, vous aurez besoin d'utiliser un éditeur de texte pour
modifier des fichiers de configuration. Ces fichiers n'ont pas d'extension
particulière, mais à force vous apprendrez à les reconnaître.

Découverte de Nano

Le nom complet de Nano est « GNU nano », en référence au projet GNU


dont. 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 suffit simplement de taper nano dans


la console :

nano

L'éditeur Nano s'ouvre immédiatement (figure suivante).

Nano

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
72

Dès lors, vous pouvez commencer à taper du texte (exemple sur la figure
suivante).

Nano : écriture de texte

C'est aussi simple que cela ! il faut aussi préciser qu'il « suffit de taper
du texte » car ce n'est pas aussi simple sous d'autres éditeurs, comme
Vim par exemple.

Les raccourcis clavier de Nano

En bas de votre écran, vous pouvez voir un espace d'aide (figure


suivante). Que signifie-t-il exactement ? Il s'agit d'un aide-mémoire pour
vous rappeler à tout moment les commandes principales que vous
pouvez lancer sous Nano.

Aide de Nano

Le symbole ^ signifie Ctrl (la touche Contrôle de votre clavier). Ainsi,


pour quitter Nano, il suffit de taper Ctrl + X.

Voici les raccourcis les plus importants :

• Ctrl + G : afficher l'aide ;

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
73

• Ctrl + K : couper la ligne de texte (et la mettre dans le presse-


papier) ;
• Ctrl + U : coller la ligne de texte que vous venez de couper ;
• Ctrl + C : afficher à quel endroit du fichier votre curseur est
positionné (numéro de ligne…) ;
• Ctrl + W : rechercher dans le fichier ;
• Ctrl + O : enregistrer le fichier (écrire) ;
• Ctrl + X : quitter Nano.

Vous pouvez vous déplacer dans le fichier avec les flèches du clavier
ainsi qu'avec les touches Page Up et Page Down pour avancer de page
en page (les raccourcis Ctrl + Y et Ctrl + V fonctionnent aussi).

Si l'aide-mémoire vous encombre, vous pouvez gagner de la place en


appuyant sur Échap puis sur X. Vous pouvez l'afficher de nouveau avec
la même suite de touches.

La recherche

La combinaison de touches Ctrl + W lance une recherche dans le fichier


(figure suivante).

Recherche dans Nano

Il vous suffit d'écrire le mot que vous recherchez (figure suivante)…

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
74

Recherche dans Nano

… puis de taper Entrée (figure suivante).

Recherche dans Nano

Le curseur est automatiquement positionné à la première occurrence


trouvée. Si le curseur est à la fin, la recherche recommence du début.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
75

Si vous voulez sortir du mode recherche, tapez Ctrl + C(Annuler).

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 apparaî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 (figure suivante).

Recherche dans Nano


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 (figure suivante).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
76

Confirmation de sortie de Nano

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 fichier que vous voulez créer puis pressez Entrée (figure
suivante).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
77

Enregistrement dans Nano

Après ça, Nano sera fermé et vous retrouverez votre bonne vieille ligne
de commandes.

Les paramètres de la commande Nano

Lorsque vous appelez Nano dans la ligne de commandes, vous pouvez


spécifier plusieurs paramètres. Le plus courant est d'indiquer en
paramètre le nom du fichier qu'on veut ouvrir. Ainsi :

nano salut.txt

… ouvrira le fichier salut.txt que l'on vient de créer.

Si le fichier n'existe pas, il sera automatiquement créé par Nano lors du


premier enregistrement.

À part ça, la commande nano accepte de nombreux paramètres.

• -m : autorise l'utilisation de la souris sous Nano. En console, oui,


oui. Vous pouvez vous en servir pour cliquer avec votre souris sur
la zone de texte où vous voulez placer votre curseur.
• -i : indentation automatique. L'alinéa (tabulations) de la ligne
précédente sera respecté lorsque vous irez à la ligne. Très utile
lorsque vous éditez un fichier de code source.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
78

• -A : active le retour intelligent au début de la ligne. Normalement,


lorsque vous appuyez sur la touche Origine (aussi connue sous le
nom de Home) située à côté de la touche Fin, le curseur se
repositionne au tout début de la ligne. Avec cette commande, il se
positionnera après les alinéas. Comme -i, il s'agit d'une option utile
avant tout pour les programmeurs.

Si je veux lancer Nano avec toutes ces options à la fois, je peux donc
écrire :

nano -miA salut.txt

Configurer Nano avec .nanorc

Vous savez maintenant utiliser Nano. Comme vous avez pu le voir, ce


n'est pas très compliqué. Il suffit d'apprendre un peu les raccourcis
clavier les plus utiles et on peut rapidement s'en servir.

Alors pour l'occasion, nous allons éditer quelques fichiers de


configuration. Par exemple, il existe un fichier de configuration de Nano
qui indique toutes vos préférences. Celui-ci s'appelle .nanorc.

Pourquoi. nanorc ?

La plupart des fichiers de configuration commencent par un point. Cela


permet de « cacher » le fichier quand on fait un ls. Bien entendu, comme
vous devriez maintenant le savoir, les fichiers cachés peuvent toujours
être affichés en utilisant le paramètre -a : ls -a.

Chaque utilisateur de la machine peut créer son propre fichier de


configuration. nanorc dans son répertoire personnel (home). Chez
mateo21, ce fichier doit être placé à la
position :/home/mateo21/.nanorc. Ce fichier est lu par Nano à chaque
fois que vous le démarrez.

En regardant la liste des fichiers de mon home, mais même en incluant


les fichiers cachés avec-a nous ne voyons pas de fichier appelé .nanorc !

En effet, il se peut que le fichier .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 ? il suffit de le créer. On peut par exemple faire ceci :

nano .nanorc

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
79

Cette commande ouvre Nano. Comme le fichier .nanorc n'existe pas, un


document vide est ouvert (figure suivante). Le fichier .nanorc sera créé
lorsque vous enregistrerez.

Dans ce fichier, vous devez écrire une commande par ligne. Chaque
commande commence 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 final, on écrira ceci :

set mouse
set autoindent
set smarthome

Enregistrez le fichier avec Ctrl + O. Comme vous avez déjà mentionné le


nom du fichier en paramètre lors de l'ouverture de Nano, celui-ci sera
automatiquement écrit pour vous (figure suivante).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
80

Vous pouvez ensuite faire Ctrl + X pour quitter Nano. On vous rappelle
que pour que ces options soient prises en compte, il faut démarrer une
nouvelle session de Nano (c'est pour ça que la souris n'a pas
automatiquement fonctionné dès que vous avez enregistré le fichier).

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.

Le nanorc global et la coloration syntaxique

Ce fichier .nanorc dans votre home est très pratique car il vous permet
de définir vos propres options. Mais si vous avez dix utilisateurs sur
votre machine et que vous voulez activer le support de la souris pour
tout le monde, vous n'allez quand même pas créer un fichier .nanorc
pour chacun !

Il existe un fichier nanorc« global » qui est pris en compte pour tout le
monde. Celui-ci est situé dans/etc/nanorc (attention : il n'y a pas de
point devant, cette fois.) Ce fichier ne peut être modifié que par root. On
vous conseille donc de l'ouvrir avec un sudo (ou dans une console en
root si vous avez fait sudo su avant) :

sudo nano /etc/nanorc

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
81

Normalement, ce fichier existe déjà. Comme vous pouvez le constater


sur la figure suivante, il est bien rempli.

Il sert en fait de fichier d'exemple. Toutes les options disponibles dans


un .nanorc sont présentes, mais elles sont précédées d'un #q ui signifie
qu'il s'agit d'un commentaire. Les commentaires sont ignorés par Nano.

Le début du fichier vous explique (en anglais) que c'est un fichier


d'initialisation d'exemple de Nano.

Après l'introduction, vous avez la liste des options disponibles. Toutes


sont commentées. Le premier est autoindent.

# set autoindent

Supprimez juste le # pour décommenter la ligne et donc pour activer


l'indentation automatique pour tous les utilisateurs.

set autoindent

Vous pouvez parcourir le fichier à la recherche d'options intéressantes


que vous voulez activer.

Vers la fin, vous verrez une section appelée « color setup », qui
commence par ces lignes-là :

## Nanorc files
Enseignant : Mr TAPSOBA David UNIX à 20H
ANNEE : 2022 - 2023
82

# include "/usr/share/nano/nanorc.nanorc"

## C/C++
# include "/usr/share/nano/c.nanorc"

## HTML
# include "/usr/share/nano/html.nanorc"

Nous vous invitons à décommenter toutes les lignes d'include. Cela


permettra d'activer la coloration « intelligente » de vos fichiers selon leur
type. Vous pourrez ainsi avoir des fichiers HTML colorés, des fichiers C
colorés, des fichiers nanorc colorés, etc.

Enregistrez le fichier puis quittez Nano.

Si vous avez une erreur lors de l'enregistrement, cela signifie que vous
n'avez pas ouvert le fichier en root. Seul root a le droit de modifier ce
fichier. Fermez Nano et relancez-le avec un sudo cette fois.

Configurer sa console avec .bashrc

Tout comme il existe un fichier de configuration de Nano, il existe un


fichier de configuration de l'ensemble de la console : le .bashrc. Il se
situe dans votre répertoire personnel et celui-ci existe déjà
normalement.

mateo21@mateo21-desktop:/usr/share/nano$ cd
mateo21@mateo21-desktop:~$ nano .bashrc
Édition du .bashrc personnel

Le fichier .bashrc est un peu complexe (pour le moment), donc attention


à ne pas éditer n'importe quoi au risque de tout casser.

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.

Personnaliser l'invite de commandes

Le fichier .bashrc vous permet entre autres choses de personnaliser


l'invite de commandes. Vous savez, ce petit message qui s'affiche devant
votre curseur dans la console :

mateo21@mateo21-desktop:~$

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
83

Rendez-vous plus bas dans le fichier, jusqu'à ce que vous tombiez sur
ces lignes :

# set a fancy prompt (non-color, unless we know we "want" color)


case "$TERM" in
xterm-color)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\
033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
;;
*)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
;;
esac

# Comment in the above and uncomment this below for a color prompt
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\0
33[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 PS1pour que la coloration
de l'invite de commandes puisse fonctionner :

# set a fancy prompt (non-color, unless we know we "want" color)


case "$TERM" in
xterm-color)
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[
\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
;;
*)
# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
;;
esac

# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\03
3[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Enregistrez. Il faudra ouvrir une nouvelle console pour que la


modification soit prise en compte afin de profiter d'une invite de
commandes en couleurs.

Si vous êtes en forme, vous pouvez éditer la ligne que vous venez de
décommenter :

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
84

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\03
3[00m\]: \[\033[01;34m\]\w\[\033[00m\]\$ '

C'est en fait elle qui indique ce que l'invite de commandes doit afficher.
Les séquences de type «\033» servent à paramétrer la couleur (ce n'est
pas simple). Le symbole\u au milieu indique le nom de l'utilisateur
(mateo21 par exemple) et \h indique le nom de la machine hôte
(mateo21-desktop). Vous pouvez repérer dans cette ligne le « @ » qui
sépare les deux, le « : », le « $ », etc.

Vous pouvez essayer de personnaliser un peu ces éléments ainsi que


leur ordre si ça vous amuse (mais faites quand même attention à ne pas
mettre le bazar là-dedans, hein. ;-).

Créer des alias

Les alias sont des commandes que vous créez et qui sont
automatiquement transformées en d'autres commandes. Descendez un
peu plus bas dans le fichier, vous trouverez des lignes commentées
commençant par « alias ».

Vous êtes invité à les personnaliser pour commencer :

# enable color support of ls and also add handy aliases


if [ "$TERM" != "dumb" ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
#alias dir='ls --color=auto --format=vertical'
#alias vdir='ls --color=auto --format=long'
fi

# some more ls aliases


#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

Vous avez déjà probablement un alias créé :

alias ls='ls --color=auto'

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 paramètres.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
85

Il y a un autre alias utiliser habituellement, c'est ll (deux fois la lettre L


minuscule). Cela permet de faire un ls en mode détaillé.:

alias ll='ls -lArth'

… signifie que la commande ll fera appel à ls avec les options qui


permettent d'afficher le détail de chaque fichier, d'afficher les fichiers
cachés, d'afficher les fichiers dans l'ordre inverse de dernière
modification (le fichier le plus récent sera en bas) et d'afficher des tailles
de fichiers 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.

Si vous tapez la commande alias dans la console, vous verrez la liste de


tous les alias définis pour votre utilisateur.

Vous pouvez vous aussi définir vos propres alias. Comme vous pouvez
le voir, c'est très simple car cela fonctionne sur le modèle :

alias nom='commande'

Attention à ne pas mettre d'espace autour du symbole « = ».

On peut par exemple en profiter pour sécuriser un peu nos rm pour


éviter que l'on puisse supprimer tout le système depuis la racine/. Il y a
en effet un paramètre de sécurité disponible avec rm:--preserve-root.
Mais ce serait un peu long de l'écrire à chaque fois et on risquerait
surtout d'oublier. En définissant un alias sur rm, vous ne pourrez pas
oublier :

alias rm='rm --preserve-root'

Ne testez pas l'efficacité de cette commande en faisant un rm -rf /en root


! En effet, il faut relancer une console pour que les modifications soient
prises en compte, et si vous avez fait une faute de frappe dans votre
alias, vous ne serez pas protégés… mais pendant ce temps votre système
sera détruit, lui !

Édition du bashrc global

Si vous voulez définir des alias ou modifier l'invite de commandes pour


tous vos utilisateurs, vous pouvez le faire en une seule fois en éditant le
fichier bashrc global situé dans : /etc/bash.bashrc. Ce bashrc doit être
édité en root.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
86

Ce fichier propose un peu moins d'exemples commentés que celui


présent dans votre home. Vous pouvez y copier vos alias et la ligne
définissant l'invite de commandes (commençant parPS1).

Les éléments du bashrc personnel ont la priorité sur ceux du bashrc


global. Si un même alias est défini 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 différence ?

En gros, le .profile 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 Unity, Konsole sous KDE).

C'est un peu compliqué pour pas grand-chose au final. Dans la pratique,


le.profile fait par défaut appel au .bashrc… Donc il suffit d'éditer votre
.bashrc et vous modifierez ainsi les options de toutes vos consoles :
celles avec et sans login. Voilà pourquoi on vous a 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 figure suivante.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
87

Le fichier .profile appelle le .bashrc

Le shell est le programme qui interprète les commandes que vous tapez
(vous pouvez considérer que c'est un synonyme de « console »).

On a, sur ce schéma, deux types de shell possibles :

• soit on a ouvert un shell qui demande un mot de passe et dans ce


cas, c'est le. profile qui est lu pour la configuration ;
• soit on a ouvert un shell qui ne demande pas de mot de passe (c'est
le cas d'une console en mode graphique en général) et dans ce cas-
là, c'est le.bashrc qui servira à la configuration.

La particularité, comme le montre le schéma, c'est que le .profile fait


appel au .bashrc… ce qui signifie que vous pouvez faire toutes vos
configurations dans le .bashrc pour qu'elles soient valables quel que soit
le type de shell que vous ouvrez.

En résumé

• Un éditeur de texte est un programme qui ouvre des fichiers texte


(un peu comme Bloc-Notes sous Windows). On en a régulièrement
besoin sous Linux pour modifier des fichiers de configuration, par
exemple.
• Il existe de nombreux éditeurs de texte en console qui peuvent être
très complets, comme Vim et Emacs.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
88

• L'éditeur Nano est un des éditeurs en console les plus simples à


utiliser ; nous commenç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
fichier, Ctrl + X permet de quitter, etc.
• On peut utiliser Nano pour modifier son fichier de configuration
.bashrc et personnaliser sa console. On peut notamment s'en
servir pour colorer l'invite de commandes et créer des alias.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
89

7. Installer des programmes avec apt-get

Quand 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. Vous récupérez un programme
d'installation, vous faites « Suivant », « 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.

Les paquets et leurs dépendances

Tout d'abord, il faut savoir que nous parlons les distributions Linux
basées sur Debian et qu'Ubuntu en fait partie).En effet, l'installation de
programmes fonctionne différemment d'une distribution à une autre.
C'est justement une des différences majeures entre les distributions.

Des programmes livrés sous forme de paquets

Sous Windows, vous connaissez ce que l'on appelle des « Programmes


d'installation ». En général, il s'agit de fichiers .exe à lancer qui
s'exécutent et extraient les fichiers du programme dans un dossier
Program Files.
Exemple : le programme d'installation du jeu Trackmania Nations sous
Windows est présenté par la figure suivante.

Sous Ubuntu, on n'a pas de programmes d'installation ; on a ce qu'on


appelle des paquets. Un paquet est une sorte de dossier zippé qui
contient tous les fichiers du programme. Il se présente sous la forme
d'un fichier .deb, en reférence à DEBian. Il contient toutes les
instructions nécessaires pour installer le programme.

Mais alors… un paquet .deb, c'est un peu comme un programme


d'installation .exe sous Windows, non ?

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
90

Ça y ressemble, mais en fait ça fonctionne très différemment. On citerait


deux différences notables :

• il y a une gestion des dépendances du programme ;


• on n'a pas besoin de faire une recherche sur un moteur de
recherche pour trouver un .deb. Tous les .deb sont rassemblés au
même endroit sur un même serveur appelé dépôt (repository).

Ces deux points méritent plus d'explications. Dans un premier temps


nous allons voir ce que sont les dépendances ; dans un second temps,
nous traiterons les dépôts.

Les dépendances,

Il est très rare qu'un programme puisse fonctionner seul sous Linux.
Très souvent, il utilise d'autres programmes ou d'autres « bouts de
programmes » appelés bibliothèques. 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 !

Vous avez certainement déjà rencontré un peu ce problème sous


Windows. Par exemple, quand vous installez un jeu, on vous dit « Il faut
installer Direct X avant de pouvoir jouer à ce jeu ».

Heureusement, le système de paquets Debian est intelligent. Chaque


paquet indique de quels autres paquets il dépend. Cela permet au
système d'aller récupérer les dépendances manquantes
automatiquement si besoin est.
Du coup, vous n'avez plus qu'à dire « Je veux installer Nano » et le
système ira chercher toutes les dépendances manquantes tout seul !

Les dépôts

Comme on vous l'a 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 simplifie
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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
91

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 effet, les programmes étant « libres », tout le
monde est autorisé à les diffuser ; ç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 diffusé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).

On peut certes mettre un gros serveur avec une grosse bande passante
(qui permet à plusieurs centaines de personnes de télécharger en même
temps), mais on peut difficilement 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 suffit à installer la plupart


des programmes qui existent sous Linux !

Schématiquement, on représentera les dépôts comme sur la figure


suivante.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
92

C'est donc à vous de choisir le dépôt que vous voulez utiliser. Chacun
de ces dépôts est identique : peu importe celui que vous choisissez, vous
devriez retrouver les mêmes paquets.

Comme vous allez probablement beaucoup télécharger depuis votre


dépôt, il est conseillé de choisir un serveur qui soit proche de chez vous
(sur lequel vous téléchargez suffisamment 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 ;'utiliser le dépôt de Free.


Si vous êtes chez Wanadoo / Orange, utiliser le dépôt Oleane
(appartenant à Orange).

Nous allons voir comment changer de dépôt.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
93

Gérer ses dépôts

Par défaut, quand vous installez Ubuntu, celui-ci utilise les dépôts
officiels de la distribution. Seulement, ces serveurs risquent d'être
souvent encombrés.

Il n'y a aucun mal à utiliser les dépôts officiels, mais il peut être bien de
savoir en changer. D'ailleurs, la liste des dépôts que votre ordinateur
utilise est stockée dans un fichier. Pour éditer ce fichier, il faut utiliser
un éditeur de texte comme… Nano, que l'on a vu dans la partie
précédente (c’est une suite logique de notre étude ?).

C'est le moment de mettre en pratique ce que vous avez appris


précédement. Le fichier à ouvrir qui contient la liste des dépôts que vous
utilisez est :

/etc/apt/sources.list

Ce fichier ne peut être modifié que par root, l'administrateur de la


machine.
Pour que vous puissiez modifier ce fichier, il faut donc passer root.

Pour cela, vous avez deux possibilités. Soit vous faites un sudo juste
avant :

sudo nano /etc/apt/sources.list

… et vous modifierez le fichier en tant que root. Soit vous passez root
« définitivement » en faisant sudo su d'abord.

Le fichier que vous avez devrait ressembler à ceci :

# See http://help.ubuntu.com/community/UpgradeNotes for how to u


pgrade to
# newer versions of the distribution.

deb http://fr.archive.ubuntu.com/ubuntu/ hardy main restricted


deb-src http://fr.archive.ubuntu.com/ubuntu/ hardy main restricted

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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
94

## N.B. software from this repository is ENTIRELY UNSUPPORTED by


the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself a
s to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu
security
## team.
deb http://fr.archive.ubuntu.com/ubuntu/ hardy universe
deb-src http://fr.archive.ubuntu.com/ubuntu/ hardy universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by


the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself a
s to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubunt
u
## security team.
deb http://fr.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://fr.archive.ubuntu.com/ubuntu/ hardy multiverse

## Uncomment the following two lines to add software from the 'backp
orts'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includ
es
## newer versions of some applications which may provide useful featu
res.
## Also, please note that software in backports WILL NOT receive any r
eview
## 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

deb http://security.ubuntu.com/ubuntu hardy-


security main restricted
deb-src http://security.ubuntu.com/ubuntu hardy-
security main restricted
deb http://security.ubuntu.com/ubuntu hardy-security universe
deb-src http://security.ubuntu.com/ubuntu hardy-security universe
deb http://security.ubuntu.com/ubuntu hardy-security multiverse

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
95

deb-src http://security.ubuntu.com/ubuntu hardy-


security multiverse

Les lignes commençant par un # sont des lignes de commentaires. Elles


seront ignorées. Normalement, chaque ligne du fichier 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. C'est l'avantage
des logiciels libres de pouvoir consulter la source des
programmes !

A priori seules les lignes deb nous intéressent. On pourrait même


supprimer (ou commenter) les lignes deb-src, récupérer les sources
n'ayant aucun intérêt pour nous.

Voici une ligne « type » :

deb http://fr.archive.ubuntu.com/ubuntu/ hardy universe

En premier paramètre, on a l'adresse du dépôt. Ici, le dépôt français par


défaut est http://fr.archive.ubuntu.com/ubuntu/. Ensuite, on a le nom
de la version de la distribution qu'on utilise, « hardy » dans ce cas. Enfin,
le dernier paramètre (et tous les paramètres suivants s'il y en a)
correspond à la « section » du dépôt dans laquelle vous voulez regarder.

Ouf… c'est un peu compliqué, tout ça. En fait, la seule chose que vous
devriez avoir à faire, c'est remplacer toutes les adresses (http…) par celle
du nouveau dépôt que vous voulez utiliser.

Mais comment je connais l'adresse des autres dépôts qui existent ?

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 différents que vous pourriez
utiliser. On ne les connais pas tous et on ne va pas 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.

Utiliser l'outil graphique

Le plus simple, est de passer par l'outil graphique fourni par Ubuntu.
L'outil en question dépend de votre Ubuntu. Si vous avez :

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
96

• Ubuntu : allez dans Système → Administration →


Sources de logiciels ;
• KUbuntu : allez dans Menu K → Système → Gestionnaire Adept
→ Adept → Gérer les dépôts ;
• XUbuntu : allez dans Applications → Système →
Sources de mises à jour.

Par exemple, la fenêtre sous Xubuntu est présentée sur la figure


suivante.

Notez la liste déroulante « Télécharger depuis : Server for France », qui


signifie que vous utilisez les dépôts français officiels d'Ubuntu. Cette
liste vous offre le choix pour le moment entre « Main server » (le serveur
américain officiel) et le serveur français. Cliquez sur « Autre… » (figure
suivante).

Cette fenêtre recense les dépôts les plus connus regroupés par pays
(figure suivante). Certains sont fournis par des universités (u-
picardie.fr), d'autres par des FAI (Free, Oleane pour Orange…).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
97

Pour savoir lequel est le plus rapide, cliquez sur le bouton « Sélectionner
le meilleur serveur (le plus proche) ». Une fenêtre va s'ouvrir et tester la
vitesse de tous les serveurs (figure suivante).

Le serveur qui sera sélectionné à la fin sera celui que le logiciel aura
détecté comme étant le plus rapide pour vous. Cliquez sur « Choisir un
serveur » pour valider.

Ensuite, le logiciel vous fera remarquer que votre cache n'est pas à jour.
En effet, 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 (figure suivante).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
98

Et voilà ! L'outil graphique est plus pratique pour mettre à jour votre
fichier sources.list, il faut bien le reconnaître.

Maintenant que nous avons choisi notre dépôt, nous sommes prêts à
télécharger à gogo !

Les outils de gestion des paquets

Résumons.
Jusqu'ici, nous avons découvert trois nouveaux termes :

• paquet : c'est un programme « prêt à l'emploi », l'équivalent des


programmes d'installation sous Windows en quelque sorte ;
• dépendance : un paquet peut avoir besoin de plusieurs autres
paquets pour fonctionner, on dit qu'il a des dépendances ;
• dépôt : c'est le serveur sur lequel on va télécharger nos paquets.

On vous a 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 efficace lors de la
désinstallation de paquets (il supprime aussi les dépendances

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
99

inutilisées). Cependant apt-get sous Ubuntu a évolué aussi et peut


supprimer les dépendances inutilisées.

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 voulons 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 !

apt-get update : mettre à jour le cache des paquets

Commençons par la mise à jour du cache des paquets (apt-get update).


Cela correspond à télécharger la nouvelle liste des paquets proposés par
le dépôt.

Toutefois, il n'est pas nécessaire de mettre à jour son cache à chaque


fois que l'on veut télécharger un paquet.

Il y a deux cas où vous avez besoin de le mettre à jour :

• quand vous changez ou ajoutez un dépôt à votre liste de dépôts ;


• quand vous n'avez pas mis à jour votre cache depuis un moment
(quelques semaines).

Pour mettre à jour votre cache, tapez ceci dans la console en tant que
root :

apt-get update

Pensez à rajouter un sudo si vous n'êtes pas déjà root.

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 :

root@mateo21-desktop:~# apt-get update


Réception de : 1 http://wine.budgetdedicated.com hardy Release.gpg [
191B]

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
100

Ign http://wine.budgetdedicated.com hardy/main Translation-fr


Atteint http://wine.budgetdedicated.com hardy Release
Atteint ftp://ftp.free.fr hardy Release.gpg
Ign http://wine.budgetdedicated.com hardy/main Packages
Atteint ftp://ftp.free.fr hardy/restricted Translation-fr
Atteint http://wine.budgetdedicated.com hardy/main Sources
Atteint ftp://ftp.free.fr hardy/main Translation-fr
Atteint http://wine.budgetdedicated.com hardy/main Packages
Atteint ftp://ftp.free.fr hardy/universe Translation-fr
Atteint ftp://ftp.free.fr hardy/multiverse Translation-fr
Atteint ftp://ftp.free.fr hardy-updates Release.gpg
Réception de : 2 ftp://ftp.free.fr hardy-updates/restricted Translation-
fr
Ign ftp://ftp.free.fr hardy-updates/restricted Translation-fr
Réception de : 3 ftp://ftp.free.fr hardy-updates/main Translation-fr
Ign ftp://ftp.free.fr hardy-updates/main Translation-fr
Réception de : 4 ftp://ftp.free.fr hardy-security Release.gpg [191B]
Réception de : 5 ftp://ftp.free.fr hardy-security/restricted Translation-
fr
Ign ftp://ftp.free.fr hardy-security/restricted Translation-fr
Réception de : 6 ftp://ftp.free.fr hardy-security/main Translation-fr
Ign ftp://ftp.free.fr hardy-security/main Translation-fr
Réception de : 7 ftp://ftp.free.fr hardy-security/universe Translation-fr
Ign ftp://ftp.free.fr hardy-security/universe Translation-fr
Réception de : 8 ftp://ftp.free.fr hardy-
security/multiverse Translation-fr
Ign ftp://ftp.free.fr hardy-security/multiverse Translation-fr
Réception de : 9 ftp://ftp.free.fr hardy Release [57,2kB]
Réception de : 10 ftp://ftp.free.fr hardy-updates Release [50,9kB]
Réception de : 11 ftp://ftp.free.fr hardy-security Release [50,9kB]
Atteint ftp://ftp.free.fr hardy/restricted Packages
Atteint ftp://ftp.free.fr hardy/main Packages
Atteint ftp://ftp.free.fr hardy/restricted Sources
Atteint ftp://ftp.free.fr hardy/universe Packages
Atteint ftp://ftp.free.fr hardy/universe Sources
Atteint ftp://ftp.free.fr hardy/multiverse Packages
Atteint ftp://ftp.free.fr hardy/multiverse Sources
Atteint ftp://ftp.free.fr hardy-updates/restricted Packages
Atteint ftp://ftp.free.fr hardy-updates/main Packages
Atteint ftp://ftp.free.fr hardy-updates/restricted Sources
Réception de : 12 ftp://ftp.free.fr hardy-
security/restricted Packages [5990B]
Réception de : 13 ftp://ftp.free.fr hardy-
security/main Packages [120kB]

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
101

Réception de : 14 ftp://ftp.free.fr hardy-


security/restricted Sources [956B]
Réception de : 15 ftp://ftp.free.fr hardy-
security/universe Packages [78,6kB]
Réception de : 16 ftp://ftp.free.fr hardy-
security/universe Sources [11,8kB]
Réception de : 17 ftp://ftp.free.fr hardy-
security/multiverse Packages [5395B]
Réception de : 18 ftp://ftp.free.fr hardy-
security/multiverse Sources [1042B]
382ko réceptionnés en 7s (50,1ko/s)
Lecture des listes de paquets... Fait

Voilà : ça fait un peu peur la première fois mais en général, c'est assez
rapide.
Juste vous rappelez 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.

apt-cache search : rechercher un paquet

À moins que vous ne connaissiez déjà le nom exact du paquet que vous
voulez, il va falloir effectuer une petite recherche. On utilise pour cela la
commande suivante :

apt-cache search votre recherche

Cette commande effectue une recherche de paquet dans votre cache.


Cela évite d'avoir à aller sur Internet pour faire la recherche, ce qui
aurait été lent.

Que veut-on télécharger ? Un éditeur de texte ? Un navigateur ?


Allez : pour s'amuser, On 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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
102

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.

Si vous voulez une plus ample description d'un paquet, utilisez apt-
cache show nomdupaquet. Exemple : apt-cache show lbreakout2.

apt-get install : installer un paquet

Pour ma part, j'aime beaucoup le jeu lbreakout2 (figure suivante). ce qui


se fait très simplement (toujours en tant que root, rajoutez un sudo
devant la commande si vous n'êtes pas déjà root pour le télécharger,) :

apt-get install lbreakout2

La commande apt-get install attend que vous lui donniez le nom du


paquet à installer.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
103

Astuce : vous pouvez installer plusieurs paquets d'un coup en les listant
un à un :

apt-get install paquet1 paquet2 paquet3

Essayons donc d'installer lbreakout2 :

root@mateo21-desktop:~# apt-get install lbreakout2


Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture de l'information d'état... Fait
Les paquets supplémentaires suivants seront installés :
lbreakout2-data libsdl-mixer1.2 libsmpeg0
Les NOUVEAUX paquets suivants seront installés :
lbreakout2 lbreakout2-data libsdl-mixer1.2 libsmpeg0
0 mis à jour, 4 nouvellement installés, 0 à enlever et 153 non mis à jou
r.
Il est nécessaire de prendre 2943ko dans les archives.
Après dépaquetage, 5358ko d'espace disque supplémentaires seront ut
ilisés.
Souhaitez-vous continuer [O/n] ? O
Réception de : 1 ftp://ftp.free.fr feisty/main libsmpeg0 0.4.5+cvs20030
824-1.9build1 [105kB]
Réception de : 2 ftp://ftp.free.fr feisty/main libsdl-mixer1.2 1.2.6-
1.1build1 [145kB]
Réception de : 3 ftp://ftp.free.fr feisty/universe lbreakout2-data 2.5.2-
2.1ubuntu1 [2444kB]
Réception de : 4 ftp://ftp.free.fr feisty/universe lbreakout2 2.5.2-
2.1ubuntu1 [249kB]
2943ko réceptionnés en 6s (484ko/s)
Sélection du paquet libsmpeg0 précédemment désélectionné.
(Lecture de la base de données... 123350 fichiers et répertoires déjà ins
tallés.)
Dépaquetage de libsmpeg0 (à partir de .../libsmpeg0_0.4.5+cvs200308
24-1.9build1_amd64.deb) ...
Sélection du paquet libsdl-mixer1.2 précédemment désélectionné.
Dépaquetage de libsdl-mixer1.2 (à partir de .../libsdl-mixer1.2_1.2.6-
1.1build1_amd64.deb) ...
Sélection du paquet lbreakout2-data précédemment désélectionné.
Dépaquetage de lbreakout2-data (à partir de .../lbreakout2-data_2.5.2-
2.1ubuntu1_all.deb) ...
Sélection du paquet lbreakout2 précédemment désélectionné.
Dépaquetage de lbreakout2 (à partir de .../lbreakout2_2.5.2-
2.1ubuntu1_amd64.deb) ...
Paramétrage de libsmpeg0 (0.4.5+cvs20030824-1.9build1) ...

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
104

Paramétrage de libsdl-mixer1.2 (1.2.6-1.1build1) ...

Paramétrage de lbreakout2-data (2.5.2-2.1ubuntu1) ...


Paramétrage de lbreakout2 (2.5.2-2.1ubuntu1) ...

Si vous obtenez le message d'erreur suivant :

E: Impossible d'ouvrir le fichier verrou /var/lib/dpkg/lock - open (13 P


ermission non accordée)
E: Unable to lock the administration directory (/var/lib/dpkg/), are yo
u root? … c'est que vous n'avez pas exécuté la commande en tant que
root. Pensez à passer root (en utilisant sudo) avant de l'exécuter.

Il s'en est passé des choses, dites donc !

Comme vous pouvez le voir, au début apt-get a vérifié si le paquet


existait et les dépendances dont il avait besoin. Il se trouve que
lbreakout2 avait besoin de dépendances qu'on n'a pas, comme
libsdlmixer-1.2 par exemple.
C'est pour cela qu'on nous a demandé confirmation au milieu :

Souhaitez-vous continuer [O/n] ?

Répondez par un « O » majuscule (comme « Oui ») et tapez Entrée pour


que l'installation se poursuive.

C'est alors que la magie d'apt-get opère : le programme va aller


télécharger tout seul le paquet sur le dépôt ainsi que toutes les
dépendances dont il a besoin et que nous n'avons pas. Puis il
« dépaquète » les fichiers qui étaient contenus à l'intérieur du paquet,
les installe et effectue les paramétrages tout seul.

Ce qui est fort là-dedans, c'est qu'apt-get ne vous demande rien ! Il


installe tout ce qu'il faut tout seul, dans les bons répertoires, et crée
même le raccourci pour lancer le jeu dans la section « Jeux » !

Vérifiez par vous-mêmes. Le menu des applications d'Ubuntu comporte


désormais une section Jeux (qu'il a créée si elle n'existait pas) et possède
un raccourci vers le jeu que nous venons d'installer (figure suivante).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
105

C'est bon, vous pouvez jouer !

Recommencez l'opération autant de fois que vous voulez, tous les


paquets que vous devriez voir sont des logiciels libres que vous pouvez
télécharger à volonté. Sur la figure suivante, vous pouvez voir
OpenArena, basé sur le célèbre jeu Quake III Arena dont le code source
est devenu libre.

Pour l'obtenir, c'est très simple :

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
106

apt-get install openarena

C'est aussi simple que ça. Toutefois il est fortement conseillé d'avoir
installé les pilotes de votre carte graphique avant d'y jouer.

apt-get autoremove : supprimer un paquet

Si vous voulez désinstaller un paquet, vous pouvez utiliser la commande


apt-get remove :

apt-get remove lbreakout2

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 :

apt-get autoremove lbreakout2

Faisons un autoremove, comme ça nous serons sûrs de libérer un


maximum d'espace disque.

root@mateo21-desktop:~# apt-get autoremove lbreakout2


Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture de l'information d'état... Fait
Les paquets suivants ont été automatiquement installés mais ne sont
plus nécessaires :
libsdl-mixer1.2 libsmpeg0
Les paquets suivants seront ENLEVÉS :
lbreakout2 lbreakout2-data libsdl-mixer1.2 libsmpeg0
0 mis à jour, 0 nouvellement installés, 4 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 0o dans les archives.
Après dépaquetage, 5358ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ?

apt-get analyse le paquet, vérifie 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 confirmer que vous voulez bien désinstaller le paquet


et ses dépendances. Vous voyez alors les paquets se faire désinstaller
par apt-get :

Suppression de lbreakout2 ...

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
107

Suppression de lbreakout2-data ...


Suppression de libsdl-mixer1.2 ...
Suppression de libsmpeg0 ...

C'est fini, le paquet et ses dépendances sont proprement désinstallés. :-


)

apt-get upgrade : mettre à jour tous les paquets

Une autre fonctionnalité particulièrement géniale d'apt-get est sa


capacité à mettre à jour tous les paquets installés sur votre système
d'un seul coup. Le programme ira chercher les nouvelles versions de
tous vos programmes et les mettra à jour si une nouvelle version est
disponible :

apt-get upgrade

Pensez à faire un apt-get update pour mettre à jour le cache des paquets
sur votre machine avant de lancer un upgrade. En effet, 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
nouveau, 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 confirmation 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 :

root@mateo21-desktop:~# apt-get upgrade


Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture de l'information d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Tous ces « 0 » de la dernière ligne nous indiquent que rien ne s'est passé
car il n'y avait rien à faire. Cela signifie que votre système est à jour.

Il est conseillé de faire un apt-get upgrade régulièrement pour avoir le


système le plus à jour possible. Cela vous permet de bénéficier des
dernières fonctionnalités des logiciels, mais cela corrige aussi les failles

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
108

de sécurité qui auraient pu être découvertes dans les programmes (et on


en trouve tous les jours, même dans les logiciels libres !).

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 fournisseur d'accès ou une université) qui font office
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.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
109

8. RTFM : lisez le manuel !

Quand 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éflexe. En effet, 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.

C'est peut-être la partie du cours les plus importants, car si vous savez lire la
doc, vous êtes capables d'apprendre tout ce dont vous avez besoin… et vous
pourrez donc tout faire !

« RTFM » est une abréviation qui signifie « Read The Fucking Manual », ce qui
se traduirait en français par quelque chose comme « Lis ce p*** de manuel ».
Mais oui, c'est amical ! Puisque je vous le dis…

man : afficher le manuel d'une commande

La commande magique que nous allons expérimenter est man, qui est
l'abréviation de manual.

La commande man s'utilise très simplement : elle prend en paramètre le nom


de la commande dont vous voulez lire la doc. Par exemple, si je veux tout
savoir sur la commande mkdir, je dois écrire :

man mkdir

Votre console devrait alors ressembler à l'image de la figure suivante.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
110

Le manuel de la commande mkdir

Il s'agit de la documentation de la commande mkdir. Là-dedans, il y a tout ce


qu'il faut savoir sur mkdir. La doc de la commande étant généralement un peu
longue, celle-ci s'affiche page par page, à la manière de less qu'on a vue
précédemment.

Se déplacer dans le manuel

Voici quelques commandes à connaître pour se déplacer dans le manuel.

• Utilisez les touches fléchées du clavier (vers le haut et vers le bas) pour
vous déplacer ligne par ligne.
• Vous pouvez utiliser les touches Page Up et Page Down (ou Espace) pour
vous déplacer de page en page.
• Appuyez sur la touche Home (aussi appelée Origine) pour revenir au début
du manuel, et sur Fin pour aller à la fin.
• Appuyez sur la touche / (slash) pour effectuer une recherche ; c'est très
pratique ! Tapez ensuite le mot que vous recherchez dans le manuel
puis appuyez sur Entrée. Si la recherche renvoie un résultat vous serez
automatiquement placés sur le premier résultat trouvé. Pour passer au
résultat suivant, tapez à nouveau / puis directement sur Entrée (sans
retaper votre recherche).
• Appuyez sur la touche Q pour quitter le manuel à tout moment, comme
vous le faisiez avec less.

Si comme moi vous avez ouvert votre manuel dans une console graphique,
vous pouvez aussi utiliser la molette de la souris !

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
111

Les principales sections du manuel

Comme vous pouvez le voir, le manuel de la commande est découpé en


plusieurs sections (leurs noms sont écrits en gras et alignés à gauche de
l'écran).

Voici leur signification.

• NAME : le nom de la commande dont vous êtes en train d'afficher le


manuel ainsi qu'une courte description de son utilité.
• SYNOPSIS : c'est la liste de toutes les façons d'utiliser la commande. Nous
y reviendrons un peu plus loin car il est vital de comprendre ce qui est
écrit dans cette section.
• DESCRIPTION : une description plus approfondie de ce que fait la
commande. On y trouve aussi la liste des paramètres et leur
signification. C'est en général la section la plus longue.
• AUTHOR : l'auteur du programme. Il y a parfois de nombreux auteurs ;
c'est souvent le cas d'ailleurs avec le logiciel libre.
• REPORTING BUGS : si vous rencontrez un bug dans le logiciel, on vous
donne l'adresse de la personne à contacter pour le rapporter.
• COPYRIGHT : le copyright, c'est-à-dire la licence d'utilisation de la
commande. La plupart des programmes que vous utilisez sont
certainement des programmes open source sous licence GPL, ce qui
vous donne le droit de voir la source et de redistribuer le programme
librement.
• 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. ;-)

La langue des pages du manuel

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'ignore.

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 cours précédemment (rien n'est laissé au hasard, par rapport à
l’évolution des différentes parties du cours.) :

apt-get install manpages-fr

Le paquet à installer est manpages-fr comme vous pouvez le voir.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
112

Maintenant, si vous tapez man mkdir, vous verrez la page s'afficher en français
(figure suivante).

Pages du manuel en français

Utiliser les pages du manuel en français n'est pas recommandé. En effet, ces
pages ne sont parfois pas à jour, certaines ne sont pas traduites, et seule la
version anglaise est assurée d'être la plus à jour et de comporter le moins
d'erreurs. D'ailleurs, en parlant d'erreur cher lecteur, une faute d'orthographe
s'est glissée dans la capture d'écran de la figure ci-dessus, sauras-tu la
retrouver ?

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 si vous ne comprenez rien à l'anglais, sinon faites un
petit effort ; ça vaut le coup.

Nous allons donc désinstaller les pages du manuel en français et revenir à la


version anglaise pour la suite de ce chapitre :

apt-get autoremove manpages-fr

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
difficiles à lire.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
113

Quel est le rôle du SYNOPSIS ?

Son rôle est de lister toutes les façons possibles d'utiliser la commande.
En clair, le SYNOPSIS vous affiche toutes les combinaisons de paramètres que
l'on peut réaliser avec cette commande. Certains SYNOPSIS sont simples,
d'autres plus compliqué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 signifie que mkdir sert à créer des
répertoires.

SYNOPSIS

La section SYNOPSIS de mkdir est présentée sur la figure suivante.

SYNOPSIS de mkdir

Même si ce SYNOPSIS est court, il contient déjà beaucoup d'informations : il


vous dit comment on doit utiliser la commande.
Détaillons point par point ce SYNOPSIS.

• mkdir : pour utiliser la commande mkdir, vous devez commencer par


taper mkdir ; ça, c'est logique.
• [OPTION] : après mkdir, vous pouvez écrire une option. Dans le SYNOPSIS,
on met des crochets pour indiquer que c'est facultatif. Vous n'êtes donc
pas obligés d'écrire une option.
• DIRECTORY : c'est le nom du répertoire à créer. Ce paramètre est
obligatoire puisqu'il n'est pas entre crochets. C'est en effet logique : la
commande mkdir sert à créer un dossier, la moindre des choses est
d'indiquer le nom du dossier à créer !
• … : le terme DIRECTORY est suivi de points de suspension. Cela signifie
que l'on peut répéter DIRECTORY autant de fois que l'on veut.
Traduction : on peut indiquer plusieurs répertoires à la fois pour que la
commande les crée tous d'un coup.

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é signifie donc : « Remplacez le mot souligné par un mot qui
convient à votre cas ».

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
114

Exemples d'utilisation

D'après le SYNOPSIS, on doit au minimum écrire le nom du dossier. Par


exemple :

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 :

mkdir images videos musiques

… ce qui aura pour effet 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.

Mandatory arguments to long options are mandatory for short options


too.

-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

--help display this help and exit

--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) affiche un
message après chaque répertoire créé. On peut donc écrire :

mkdir -v images videos musiques

Résultat :

mateo21@mateo21-desktop:~/tests$ mkdir -v images videos musiques


mkdir: création du répertoire `images'

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
115

mkdir: création du répertoire `videos'


mkdir: création du répertoire `musiques'

La commande nous informe maintenant de ce qu'elle fait. Sans le -v, la


commande n'affiche rien (on dit qu'elle est silencieuse).

Vous remarquerez d'ailleurs qu'on retrouve l'option -v dans beaucoup de


commandes. Elle a chaque fois la même signification : elle demande à la
commande d'afficher le détail de ce qu'elle est en train de faire. On dit alors
qu'on utilise la commande en mode « verbeux » (bavard), pour bien voir tout
ce qu'elle fait.

man cp

Essayons une commande un peu plus complexe : cp. cette commande sert à
copier des fichiers et des répertoires.

SYNOPSIS

Son SYNOPSIS est présenté sur la figure suivante.

SYNOPSIS de cp

Là, ça commence à devenir un peu plus délicat.

Pourquoi y a-t-il trois lignes, déjà ? Tout simplement parce qu'on ne pouvait
pas exprimer toutes les façons d'utiliser cp sur une seule ligne.

• Commençons par la première ligne :

cp [OPTION]… [-T] SOURCE D EST La seule chose obligatoire ici ce sont les
paramètres SOURCE (le nom du fichier à copier) et DEST (le nom de la
copie à créer).Ces fichiers peuvent être précédés d'une ou plusieurs
options (remarquez les points de suspension) ainsi que de l'option -T.

• La seconde ligne est un peu différente :

cp [OPTION]… SOURCE… DIRECTORY Cette fois, on peut copier un ou


plusieurs fichiers (SOURCE…) vers un répertoire (DIRECTORY). Tout cela
peut encore une fois être précédé d'une ou plusieurs options.

• Enfin, la troisième ligne :

cp [OPTION]… -t DIRECTORY SOURCE…… signifie qu'on peut aussi écrire le


répertoire (DIRECTORY) dans un premier temps, suivi d'un ou plusieurs

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
116

fichiers (SOURCE…). Attention, vous remarquez que dans ce cas il est


obligatoire d'utiliser le paramètre -t qui n'est plus entre crochets.

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

… ce qui aura pour effet de créer la copie photo_copie.jpg.

On peut aussi ajouter une ou plusieurs options. Pour connaître toutes les
options disponibles, vous devrez lire la section DESCRIPTION. Pour cp, il y a
beaucoup de choix comme vous pouvez le voir. Par exemple, on retrouve notre
mode -v (verbeux) qui demande à la commande de détailler ce qu'elle fait. On
pourrait aussi ajouter -i qui demande confirmation si le fichier de destination
existe déjà.

On peut donc faire :

cp -vi photo.jpg photo_copie.jpg

Dans mon cas, le fichier photo_copie.jpg existait déjà. L'ajout de l'option -i va me


demander confirmation pour savoir si je veux bien écraser le fichier. On peux
répondre par « o » ou « n » (pour oui ou non), ou « y » ou « n » (pour yes ou no).

mateo21@mateo21-desktop:~$ cp -vi photo.jpg photo_copie.jpg


cp: écraser `photo_copie.jpg'? o
`photo.jpg' -> `photo_copie.jpg'

Comme le fichier existait déjà, on m'a demandé confirmation. 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 fichier. Essayons un peu ce que propose la seconde ligne : copier un
ou plusieurs fichiers dans un dossier.

cp photo.jpg photo_copie.jpg images/

Là, on exploite la seconde façon d'utiliser cp (seconde ligne du SYNOPSIS). On


copie deux fichiers dans le sous-dossier images/. Bien entendu, comme
l'indique le SYNOPSIS, on peut là encore utiliser des options, comme -v et -i que
l'on vient de voir.

Mon conseil : vous vous demandez peut-être comment je comprends la


signification de chaque mot du SYNOPSIS. Par exemple, était-il évident de savoir
que SOURCE correspondait au fichier que l'on voulait copier ?
Si je sais tout ça, c'est parce que j'ai lu attentivement le début de la section

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
117

du man. Je vous recommande d'en faire de même quelle que soit


DESCRIPTION
la commande que vous êtes en train d'analyser.

DESCRIPTION
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Cette phrase est claire, pour peu que l'on comprenne l'anglais.
Elle signifie que l'on peut copier le paramètre appelé SOURCE vers DEST, ou
encore (cas de la seconde ligne) plusieurs fichiers SOURCE vers un répertoire
(DIRECTORY).

man apt-get

Plus joyeux encore : le SYNOPSIS de la commande apt-get (figure suivante).

SYNOPSIS de apt-get

La bonne nouvelle cette fois c'est que les créateurs d'apt-get n'ont pas eu besoin
de faire tenir la commande sur trois lignes : ils ont mis tous les cas
d'utilisation possibles sur une seule ligne ! La mauvaise nouvelle, c'est que
c'est un peu difficile à lire comme ça.

Décortiquons.

La commande apt-get doit commencer par « apt-get » (ce mot est d'ailleurs écrit
en gras). Ça, c'est logique.

Ensuite, vous pouvez utiliser une des options -hvs (vous pouvez utiliser juste
-h, mais aussi -hv, -v, -vs, -hvs…). Ces options étant entre crochets, elles sont
facultatives.

Pareil ensuite pour -o et -c ; ces options sont facultatives. En revanche, vous


remarquerez qu'elles doivent être obligatoirement suivies d'une valeur. Par
exemple -o=option de configuration. On vous rappelle que le fait que
option de configuration soit souligné signifie que vous ne devez pas recopier ces
mots tels quels dans la console : vous devez les remplacer par une valeur qui
convient (lisez la section DESCRIPTION pour en savoir plus sur -o).

La section qui m'intéresse et que je voudrais qu'on analyse plus en détail arrive
juste après. Elle commence et se termine par des accolades :

{[update] | [upgrade] | [dselect-


upgrade] | [install paquet…] | [remove paquet…] | [source paquet…] | [build-
dep paquet…] | [check] | [clean] | [autoclean]}

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
118

Vous remarquerez qu'à l'intérieur les mots sont séparés par des barres
verticales « | ». Ces barres verticales signifient « 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 » signifie que vous pouvez indiquer
plusieurs paquets à installer d'un coup ;
• etc.

Il y a bien d'autres mots clés utilisables. Pour voir la signification 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 :

apt-get install monpaquet

Ou encore :

apt-get update

Ou encore :

apt-get autoclean

En revanche, on ne peut pas utiliser simultanément deux options séparées


par une barre verticale :

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 signifient « OU » et tout ira bien.

Résumé de la syntaxe du SYNOPSIS

Voici un petit résumé de la syntaxe du SYNOPSIS pour vous souvenir de la façon


dont chaque élément doit être interprété :

• gras : tapez le mot exactement comme indiqué ;

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
119

• souligne : remplacez le mot souligné par la valeur qui convient dans votre
cas ;
• [-hvc] : toutes les options -h, -v et -c sont facultatives ;
• a|b : vous pouvez écrire l'option « a » OU « b », mais pas les deux à la
fois ;
• option… : les points de suspension indiquent que l'option peut être
répétée autant de fois que vous voulez.

apropos : trouver une commande

Le man suppose que vous connaissez déjà votre commande et que vous voulez
en savoir plus. Mais si vous ne connaissez pas la commande, comment faites-
vous ?

C'est là que la commande apropos intervient. Vous lui donnez en paramètre un


mot clé et elle va le rechercher dans les descriptions de toutes les pages du
manuel.
La commande apropos est donc un peu l'inverse de man : elle vous permet de
retrouver une commande.

Prenons un exemple : vous recherchez une commande (que vous avez


installée) en rapport avec le son parce que vous aimeriez bien savoir comment
modifier le volume en console. Vous pouvez taper :

apropos sound

… ce qui va rechercher toutes les commandes qui parlent de son (sound) dans
leur page du manuel.

Résultat :

mateo21@mateo21-desktop:~$ apropos sound


alsactl (1) - advanced controls for ALSA soundcard driver
alsamixer (1) - soundcard mixer for ALSA soundcard driver, with ncurse...
amixer (1) - command-line mixer for ALSA soundcard driver
aplay (1) - command-line sound recorder and player for ALSA soundc...
arecord (1) - command-line sound recorder and player for ALSA soundc...
artscat (1) - pipe data to sound device
asoundconf (1) - utility to read and change the user's ALSA library con...

À gauche la commande, à droite l'extrait de sa courte description dans laquelle


apropos a trouvé le mot que vous recherchiez. Il se trouve que ce que je
cherchais était alsamixer (figure suivante). Et zou ! :-)

alsamixer

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
120

Et si vous voulez en savoir plus sur la commande alsamixer, vous savez


maintenant comment faire !

man alsamixer

Son SYNOPSIS, présenté sur la figure suivante, est ridiculement simple. Pfeuh !
Même pas drôle.
Enseignant : Mr TAPSOBA David UNIX à 20H
ANNEE : 2022 - 2023
121

D'autres façons de lire le manuel

Bien que ce soit la technique la plus courante, utiliser man et apropos n'est pas
le seul moyen de vous documenter. Quelles sont les alternatives à man ?

Le paramètre -h (et --help)

Bien que ça ne soit pas une règle, la plupart des commandes acceptent un
paramètre -h (et parfois son équivalent plus long --help) qui provoque l'affichage
d'une aide résumée. Parfois cette aide est d'ailleurs plus facile à lire que celle
du man, ce qui fait qu'il m'arrive de l'utiliser de temps en temps.

Par exemple :

apt-get -h

Ce qui nous donne :

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

apt-get is a simple command line interface for downloading and


installing packages. The most frequently used commands are update
and install.

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
check - Verify that there are no broken dependencies

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

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
122

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

Le -h est parfois un bon complément au man si vous n'arrivez pas à


comprendre comment utiliser la commande. On y trouve parfois des
informations utiles comme ici : « The most frequently used commands are
update and install », ce qui signifie que l'on utilise le plus souvent apt-get avec
les paramètres update et install (et c'est vrai).

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.

mateo21@mateo21-desktop:~$ whatis mkdir


mkdir (1) - make directories
Rechercher man sur le Web

Enfin, il est bien de le préciser : on retrouve aussi le man sur le Web !


Si vous devez lire un manuel et que vous n'êtes pas sous Linux à ce moment-
là, utilisez tout bêtement un moteur de recherche comme Google pour
retrouver la doc.

Par exemple, vous pouvez taper la recherche : man mkdir. Vous trouverez le
manuel dans les premiers liens qui s'offrent à vous.

Bonne recherche !

En résumé

• Sous Linux, toutes les commandes et leurs paramètres sont


documentés dans le manuel. 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.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
123

• Dans le manuel, on se déplace avec les touches flé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 diffé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 affichera toutes les commandes ayant un
rapport avec le son.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
124

9. Rechercher des fichiers

Sous Linux, les fichiers sont organisés d'une façon assez particulière. Nous
l'avons vu en affichant 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 difficile de retrouver le fichier
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 fichier 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 fichiers !

locate : une recherche rapide

La première façon d'effectuer une recherche que nous allons voir est de loin la
plus simple. La commande s'appelle locate (« localiser »). Elle est très rapide.

Utiliser locate

Son utilisation est intuitive, il suffit d'indiquer le nom du fichier que vous
voulez retrouver. Par exemple :

mateo21@mateo21-desktop:~$ locate notes.txt


/home/mateo21/notes.txt

La commande a retrouvé notre fichier notes.txt qui était situé dans


/home/mateo21.

Essayons maintenant de retrouver ces vieilles photos d'Australie…

mateo21@mateo21-desktop:/var/log$ locate australie


/home/mateo21/photos/australie1.jpg
/home/mateo21/photos/australie2.jpg
/home/mateo21/photos/australie3.jpg

locate vous donne tous les fichiers qui contiennent le mot « australie » dans
leur nom. Que ce soient des fichiers ou des dossiers, elle ne fait pas la
différence. Elle vous donne la liste complète des fichiers 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 différence près qu'elle vérifie
les droits des fichiers avant de les lister. Avec slocate, un utilisateur ne pourra
donc pas voir un nom de fichier apparaître s'il n'a pas le droit de le lire, tandis

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
125

qu'avec un locate le nom du fichier serait apparu dans les résultats quand
même.

La base de données des fichiers

Je ne comprends pas. Je viens de créer des fichiers (avec la commande touch


par exemple), et locate ne me renvoie aucun résultat. Pourquoi ?

C'est justement le défaut de locate : la commande ne fait pas la recherche sur


votre disque dur entier, mais seulement sur une base de données de vos
fichiers (figure suivante).

Votre problème, c'est que les fichiers 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 enfin votre fichier.

Vous pouvez forcer la commande locate à reconstruire la base de données des


fichiers du disque dur. Cela se fait avec la commande updatedb, à exécuter en
root (avec sudo) :

sudo updatedb

La mise à jour de la liste des fichiers peut être un peu longue, il faudra
patienter. Une fois que c'est fini, réessayez de faire un locate, il devrait
maintenant trouver votre fichier.

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
fichiers qui viennent tout juste d'être créés ne seront pas découverts, à moins
d'exécuter updatedb.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
126

Quand locate ne suffit pas, on a besoin d'une commande plus puissante. On


sort l'artillerie lourde : find.

find : une recherche approfondie

findest la commande de recherche par excellence pour retrouver des fichiers,


mais aussi pour effectuer des opérations sur chacun des fichiers trouvés. Elle
est très puissante, permet donc de faire beaucoup de choses, et par
conséquent… elle est un peu complexe.

Savoir la manipuler est toutefois indispensable, donc découvrons-la !

find recherche les fichiers actuellement présents

Contrairement à locate, find ne va pas lire dans une base de données mais au
contraire parcourir tout votre disque dur (figure suivante). Cela peut être très
long si vous avez plusieurs giga-octets de données !

Avec cette méthode de recherche, vous ne risquez pas de rater un fichier récent
qui aurait pu être créé aujourd'hui. Et ce n'est pas le seul avantage, loin de
là !

Fonctionnement de la commande find

La commande find s'utilise de la façon suivante :

find « où » « quoi » « que faire avec »

Seul le paramètre « quoi » est obligatoire.

• Où : c'est le nom du dossier dans lequel la commande va faire la


recherche. Tous les sous-dossiers seront analysés. Contrairement à
locate, il est donc possible de limiter la recherche à /home par exemple.

Par défaut, si ce paramètre n'est pas précisé, la recherche s'effectuera


dans le dossier courant et ses sous-dossiers.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
127

• Quoi : c'est le fichier à rechercher. On peut rechercher un fichier par


son nom, mais aussi en fonction de la date de sa création, de sa taille,
etc.

Ce paramètre est obligatoire.

• Que faire avec : il est possible d'effectuer des actions automatiquement


sur chacun des fichiers trouvés (on parle de « post-traitement »). L'action
la plus courante consiste à afficher simplement la liste des fichiers
trouvés, mais nous verrons que nous pouvons faire bien d'autres
choses.

Par défaut, la commande find affiche les résultats trouvés et ne fait rien
d'autre avec.

Utilisation basique de la commande find

Commençons doucement et voyons des exemples pratiques. Nous allons tout


d'abord rechercher un fichier et afficher sa position.

Recherche à partir du nom

Utilisons dans un premier temps le seul paramètre obligatoire : le nom du


fichier à retrouver.

On se place dans mon répertoire home et pour essayer de retrouver un fichier


appelé logo.png que j'ai égaré. Je dois écrire :

find -name "logo.png"

Le -name "logo.png" est un paramètre qui demande de retrouver un fichier qui


s'appelle très exactement logo.png.

Voici le résultat :

mateo21@mateo21-desktop:~$ find -name "logo.png"


/home/mateo21/projet/images/logo.png

Si la recherche n'affiche rien, cela signifie qu'aucun fichier 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 signifie 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 fichiers qui
s'appellent syslog situés dans /var/log (et ses sous-répertoires), je dois écrire :

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
128

find /var/log/ -name "syslog"

Essayons ça !

mateo21@mateo21-desktop:~$ find /var/log/ -name "syslog"


/var/log/syslog
/var/log/installer/syslog

Les paramètres correspondent à ceux que je vous ai présentés un peu plus


tôt :

• où : dans /var/log (et ses sous-dossiers) ;


• quoi : le fichier syslog.

Il n'y a pas de paramètre « que faire avec », donc par défaut find choisit
d'afficher les fichiers trouvés.

Notez que, contrairement à locate, find récupère uniquement la liste des fichiers
qui s'appellent exactement comme demandé. Ainsi, s'il existe un fichier
nommé syslog2, il ne sera pas listé dans les résultats. Pour qu'il le soit, il faut
utiliser le joker : l'étoile « * » !

Exemple :

mateo21@mateo21-desktop:~$ find /var/log/ -name "syslog*"


/var/log/syslog.3.gz
/var/log/syslog.5.gz
/var/log/syslog.4.gz
/var/log/syslog
/var/log/syslog.6.gz
/var/log/syslog.2.gz
/var/log/syslog.1.gz
/var/log/installer/syslog
/var/log/syslog.0

Ici, nous avons affiché tous les fichiers qui commençaient par « syslog ».

Si on avait voulu avoir la liste des fichiers qui se terminent par « syslog », on
aurait écrit "*syslog". De même, si on avait voulu avoir la liste des fichiers qui
contiennent « syslog », que ce soit au début, au milieu ou à la fin, on aurait
écrit "*syslog*".

L'étoile est donc un joker qui signifie « il peut y avoir n'importe quel caractère
à cet endroit ».

Et si je veux rechercher sur tout le disque dur, et pas seulement dans un


dossier ?

Facile, il suffit d'indiquer le répertoire racine /. On 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.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
129

find / -name "syslog"

La recherche depuis la racine prend beaucoup de temps si vous avez de


nombreux fichiers. De plus, si vous n'êtes pas root, vous aurez de nombreux
messages d'erreur vous indiquant que vous n'avez pas le droit d'aller dans
certains répertoires. En général, à moins d'être très patient (ou désespéré), on
ne fait pas de recherche depuis la racine.

Recherche à partir de la taille

Vous ne connaissez pas le nom du fichier que vous recherchez ? Pas de


panique !
Il y a bien d'autres façons de retrouver des fichiers (ou des dossiers, d'ailleurs).

Par exemple, on peut rechercher tous les fichiers qui font plus de 10 Mo.

mateo21@mateo21-desktop:/var$ find -size +10M


/home/mateo21/souvenirs.avi
/home/mateo21/backups/backup_mai.gz
/home/mateo21/backups/backup_juin.gz

Rappel : le tilde « ~

» signifie « rechercher dans mon home », en l'occurrence chez moi


« /home/mateo21/ ».}

Au lieu de se baser sur le nom, on se base ici sur la taille (-size). Le +10M indique
que l'on recherche des fichiers 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 fichiers de moins de 10 Mo. Et si vous
enlevez le « + », la commande cherchera des fichiers de 10 Mo exactement (ni
plus, ni moins).

Recherche à partir de la date de dernier accès

Vous êtes sûrs d'avoir accédé à votre rapport au format .odt il y a moins de 7
jours, mais vous n'arrivez pas à le retrouver ?

Avec -atime, vous pouvez indiquer le nombre de jours qui vous séparent du
dernier accès à un fichier.

mateo21@mateo21-desktop:~$ find -name "*.odt" -atime -7


/home/mateo21/ecriture/resume_infos_juin.odt

On'a combiné ici une recherche par le nom avec une recherche par la date. Si
On ne me souvenait même plus de l'extension du fichier, on aura dû utiliser
seulement -atime, mais ça m'aurait probablement donné beaucoup de fichiers
(en fait, tous les fichiers modifiés depuis 7 jours dans mon répertoire
personnel !).

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
130

Là encore, vous pouvez utiliser un « + » à la place… ou même enlever le signe


pour rechercher un fichier auquel on aurait accédé il y a exactement 7 jours.

Rechercher uniquement des répertoires ou des fichiers

On peut aussi rechercher uniquement des répertoires ou des fichiers.

Utilisez :

• -type d : pour rechercher uniquement des répertoires (directories) ;


• -type f : pour rechercher uniquement des fichiers (files).

Par défaut, find cherche des répertoires ET des fichiers. Ainsi, si vous avez un
fichier appelé syslog et un répertoire appelé syslog, les deux résultats seront
affichés.

Pour obtenir uniquement les répertoires qui s'appellent syslog (et non pas les
fichiers), tapez donc :

find /var/log -name "syslog" -type d


Utilisation avancée avec manipulation des résultats

Pour l'instant, nous n'avons pas indiqué de paramètre « que faire avec » pour
effectuer une action sur les résultats trouvés. Par défaut, les noms des fichiers
trouvés étaient affichés.

En fait,

find -name "*.jpg"

… est équivalent à :

find -name "*.jpg" -print

signifie « afficher les résultats trouvés ». Si le -print n'est pas écrit, la


-print
commande comprend toute seule qu'elle doit afficher la liste des fichiers.

On peut cependant remplacer ce -print par d'autres paramètres.

Afficher les fichiers de façon formatée

Par défaut, on liste juste les noms des fichiers trouvés. On peut cependant
avec l'option -printf, qui rappellera à certains le langage C, manipuler un peu
ce qui est affiché.

Exemple :

mateo21@mateo21-desktop:~$ find . -name "*.jpg" -printf "%p - %u\n"


./photos/australie1.jpg - mateo21
./photos/australie2.jpg - mateo21

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
131

./photos/australie3.jpg - mateo21

Ici, j'affiche le nom du fichier, un tiret et le nom du propriétaire de ce fichier.


Le \n permet d'aller à la ligne.

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

Supprimer les fichiers trouvés

Un des usages les plus courants de find, à part retrouver des fichiers, consiste
à les supprimer.

Si on veut faire le ménage dans mon home et par exemple supprimer tous mes
fichiers « jpg », je vais écrire ceci :

find -name "*.jpg" -delete

Soyez bien sûrs de ce que vous faites ! Il n'y aura pas de confirmation !

Et voilà, toutes les images ont disparu.

Appeler une commande

Avec -exec, vous pouvez appeler une commande qui effectuera une action sur
chacun des fichiers trouvés.

Imaginons que qu’on souhaite mettre un chmod à 600 pour chacun de mes
fichiers « jpg », pour que je sois le seul à pouvoir les lire :

find -name "*.jpg" -exec chmod 600 {} \;

La commande n'affiche rien s'il n'y a pas eu d'erreur.

Pour chaque fichier .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 fichier ;
• la commande doit finir 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 fichiers .jpg éparpillés dans votre
répertoire home dans un dossier images.

Si le fait que la commande ne vous demande pas de confirmation vous ennuie,


vous pouvez utiliser -ok à la place de -exec. Le principe est le même, mais on

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023
132

vous demandera une confirmation pour chaque fichier rencontré. Il faudra


répondre par « y » (yes) ou « n » (no) à chaque fois.

En résumé

• Pour rechercher un fichier sur tout le disque, la commande locate est


très rapide mais ne trouvera pas les fichiers qui viennent d'être créés
dans la journée. On peut mettre à jour la liste des fichiers 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 fichiers. Elle peut s'utiliser avec trois
paramètres, dans l'ordre : où chercher, que chercher et que faire avec.
• On peut rechercher des fichiers en fonction de leur nom (-name), de leur
taille (-size), de leur date de dernier accès (-atime)…
• Au lieu d'afficher les fichiers trouvés, on peut automatiquement les
supprimer avec -delete ou exécuter la commande de son choix sur
chacun d'eux avec -exec.

Enseignant : Mr TAPSOBA David UNIX à 20H


ANNEE : 2022 - 2023

Vous aimerez peut-être aussi