2.3 Leçon 1
Introduction
Certification : |
Linux Essentials |
---|---|
Version : |
1.6 |
Thème : |
2 Trouver son Chemin sur un Système Linux |
Objectif : |
2.3 Utilisation des Répertoires et Listage des Fichiers |
Leçon: |
1 sur 2 |
Fichiers et Répertoires
Le système de fichiers Linux est similaire aux systèmes de fichiers d’autres systèmes d’exploitation car il contient des fichiers et des répertoires. Les fichiers contiennent des données telles que du texte lisible par l’homme, des programmes exécutables ou des données binaires utilisées par l’ordinateur. Les répertoires sont utilisés pour créer une organisation au sein du système de fichiers. Les répertoires peuvent contenir des fichiers et d’autres répertoires.
$ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 directory, 2 files
Dans cet exemple, Documents
est un répertoire qui contient un fichier (Mission-Statement.txt
) et un sous-répertoire (Reports
). Le répertoire Reports
contient à son tour un fichier appelé report2018.txt
. Le répertoire Documents
est dit être le parent du répertoire Reports
.
Si la commande tree
n’est pas disponible sur votre système, installez-la en utilisant le gestionnaire de paquets de votre distribution Linux. Reportez-vous à la leçon sur la gestion des paquets pour savoir comment faire.
Noms de Fichiers et de Répertoires
Les noms de fichiers et de répertoires dans Linux peuvent contenir des minuscules et des majuscules, des chiffres, des espaces et des caractères spéciaux. Cependant, comme de nombreux caractères spéciaux ont une signification particulière dans le shell Linux, il est conseillé de ne pas utiliser d’espaces ou de caractères spéciaux lors de la dénomination des fichiers ou des répertoires. Les espaces, par exemple, nécessitent le caractère d’échappement \
pour être saisis correctement :
$ cd Mission\ Statements
Aussi, en se référant au nom de fichier report2018.txt
. Les noms de fichiers peuvent contenir un suffixe qui vient après le point (.
). Contrairement à Windows, ce suffixe n’a pas de signification particulière dans Linux ; il est là pour la compréhension humaine. Dans notre exemple, .txt
nous indique qu’il s’agit d’un fichier en texte clair, bien qu’il puisse techniquement contenir n’importe quel type de données.
Naviguer dans le Système de Fichiers
Obtenir la Localisation Actuelle
Comme les shells Linux tels que Bash sont basés sur du texte, il est important de se souvenir de votre emplacement actuel lorsque vous naviguez dans le système de fichiers. L'invite de commande fournit cette information :
user@hostname ~/Documents/Reports $
Notez que les informations telles que user
et hostname
seront traitées dans les prochaines sections. Grâce à l’invite, nous savons maintenant que notre emplacement actuel se trouve dans le répertoire Reports
. De même, la commande pwd
(print working directory) affichera le répertoire de travail :
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
La relation des répertoires est représentée par une barre oblique (/
). Nous savons donc que Reports
est un sous-répertoire de Documents
, qui est un sous-répertoire de user
, qui est situé dans un répertoire appelé home
. home
ne semble pas avoir de répertoire parent, mais ce n’est pas vrai du tout. Le parent de home
est appelé root (racine), et est représenté par la première barre oblique (/
). Nous parlerons du répertoire root dans une section ultérieure.
Notez que la sortie de la commande pwd
diffère légèrement du chemin donné à l’invite de commande. Au lieu de /home/user
, l’invite de commande contient un tilde (~
). Le tilde est un caractère spécial qui représente le répertoire personnel de l’utilisateur. Ce point sera abordé plus en détail dans la prochaine leçon.
Listage des Contenus d’un Répertoire
Le contenu du répertoire actuel est listé avec la commande ls
:
user@hostname ~/Documents/Reports $ ls report2018.txt
Notez que ls
ne fournit aucune information sur le répertoire parent. De même, par défaut, ls
n’affiche aucune information sur le contenu des sous-répertoires. ls
ne peut que “voir” ce qui se trouve dans le répertoire courant.
Changement du Répertoire Courant
La navigation dans Linux se fait principalement avec la commande cd
. De l’anglais change directory. En utilisant la commande pwd
d’avant, nous savons que notre répertoire actuel est /home/user/Documents/Reports
. Nous pouvons changer notre répertoire actuel en entrant un nouveau chemin :
user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports
Depuis notre nouvel emplacement, nous pouvons “voir” Mission-Statement.txt
et notre sous-répertoire Reports
, mais pas le contenu de notre sous-répertoire. Nous pouvons retourner dans Reports
de cette manière :
user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt
Nous sommes maintenant de retour à la case départ.
Chemins Absolus et Relatifs
La commande pwd
affiche toujours un chemin absolu. Cela signifie que le chemin contient chaque niveau du chemin, du début du système de fichiers (/
) au bout (Reports
). Les chemins absolus commencent toujours par un /
.
/ └── home └── user └── Documents └── Reports
Le chemin absolu contient toutes les informations nécessaires pour accéder à Reports
depuis n’importe quel endroit du système de fichiers. L’inconvénient est qu’il est fastidieux à taper.
Le deuxième exemple (cd Reports
) était beaucoup plus facile à taper. Il s’agit d’un exemple de chemin relatif. Les chemins relatifs sont plus courts mais n’ont de sens que par rapport à votre position actuelle. Considérez cette analogie : Je vous rends visite à votre domicile. Vous me dites que votre ami habite à côté de chez vous. Je comprendrai cette situation parce qu’elle est relative à ma situation actuelle. Mais si vous me dites cela par téléphone, je ne pourrai pas trouver la maison de votre ami. Vous devrez me donner l’adresse complète de la rue.
Chemins Relatifs Spéciaux
Le shell Linux nous donne des moyens de raccourcir nos chemins lors de la navigation. Pour révéler les premiers chemins spéciaux, nous entrons dans la commande ls
avec le drapeau -a
. Ce drapeau modifie la commande ls
de manière que tous les fichiers et répertoires soient listés, y compris les fichiers et répertoires cachés :
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Vous pouvez vous référer à la page |
Cette commande a révélé deux résultats supplémentaires : Il s’agit de chemins spéciaux. Ils ne représentent pas de nouveaux fichiers ou répertoires, mais plutôt des répertoires que vous connaissez déjà :
.
-
Indique l'emplacement actuel (dans ce cas,
Reports
). ..
-
Indique le répertoire parent (dans ce cas,
Documents
).
Il n’est généralement pas nécessaire d’utiliser le chemin relatif spécial pour l’emplacement actuel. Il est plus facile et plus compréhensible de taper report2018.txt
que de taper ./report2018.txt
. Mais ./report2018.txt
a des utilisages que vous apprendrez dans les sections suivantes. Pour l’instant, nous allons nous concentrer sur le chemin relatif du répertoire parent :
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
L’exemple de cd
est beaucoup plus facile lorsqu’on utilise ..
au lieu du chemin absolu. De plus, nous pouvons combiner ce modèle pour remonter très rapidement dans l’arborescence des fichiers.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Exercices Guidés
-
Pour chacun des chemins suivants, identifiez s’il est absolu ou relatif :
/home/user/Downloads
../Reports
/var
docs
/
-
Observez la structure de fichiers suivante. Note : Les répertoires se terminent par une barre oblique (
/
) lorsquetree
est invoqué avec l’option-F
. Vous aurez besoin de privilèges élevés afin d’exécuter la commandetree
sur le répertoire racine (/
). Ce qui suit est un exemple de sortie et n’est pas indicatif d’une structure de répertoires complète. Utilisez-le pour répondre aux questions suivantes :$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Utilisez cette structure pour répondre aux questions suivantes.
Un utilisateur entre les commandes suivantes :
$ cd /etc/udev $ ls -a
Quel sera le résultat de la commande
ls -a
? -
Saisissez la commande la plus courte possible pour chacun des cas suivants :
-
Votre localisation actuelle est la racine (
/
). Entrez la commande pour naviguer verslost+found
situé dans le répertoirehome
(exemple) :$ cd home/lost+found
-
Votre localisation actuelle est la racine (
/
). Entrez la commande pour naviguer vers le répertoire nommé/etc/network/
. -
Votre localisation actuelle est
/home/user/Documents/
. Naviguez vers le répertoire nommé/etc/
. -
Votre localisation actuelle est
/etc/systemd/system/
. Naviguez vers le répertoire nommé/home/user/
.
-
-
Considérez les commandes suivantes :
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Quel est le résultat de la commande
pwd
finale ?
Exercices d’Exploration
-
Supposons qu’un utilisateur ait entré les commandes suivantes :
$ mkdir "this is a test" $ ls this is a test
Quelle commande
cd
vous permettrait d’entrer dans ce répertoire ? -
Essayez à nouveau, mais après avoir tapé
cd this
, appuyez sur la touche TAB. Qu’est-ce qui est maintenant affiché à l’invite ?C’est un exemple d'autocomplétion, qui est un outil inestimable non seulement pour gagner du temps, mais aussi pour prévenir les erreurs d’orthographe.
-
Essayez de créer un répertoire dont le nom contient un caractère
\
. Affichez le nom du répertoire avecls
puis supprimez le répertoire.
Résumé
Dans cette leçon, vous avez appris :
-
Les bases du système de fichiers Linux
-
La différence entre les répertoires parents et les sous-répertoires
-
La différence entre les chemins de fichier absolus et les chemins de fichier relatifs
-
Les chemins relatifs spéciaux
.
et..
-
Naviguer dans le système de fichiers à l’aide de
cd
-
Indiquez votre position actuelle en utilisant
pwd
-
Listez tous les fichiers et répertoires en utilisant
ls -a
Les commandes suivantes ont été abordées dans cette leçon :
cd
-
Modifie le répertoire actuel.
pwd
-
Affiche le chemin du répertoire de travail actuel.
ls
-
Liste le contenu d’un répertoire et affiche les propriétés des fichiers.
mkdir
-
Crée un nouveau répertoire.
tree
-
Afficher une liste hiérarchique d’une arborescence de répertoires.
Réponses aux Exercices Guidés
-
Pour chacun des chemins suivants, identifiez s’il est absolu ou relatif :
/home/user/Downloads
absolu
../Reports
relatif
/var
absolu
docs
relatif
/
absolu
-
Observez la structure de fichiers suivante. Note : Les répertoires se terminent par une barre oblique (
/
) lorsquetree
est invoqué avec l’option-F
. Vous aurez besoin de privilèges élevés afin d’exécuter la commandetree
sur le répertoire racine (/
). Ce qui suit est un exemple de sortie et n’est pas indicatif d’une structure de répertoires complète. Utilisez-le pour répondre aux questions suivantes :$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directories, 5 files
Un utilisateur entre les commandes suivantes :
$ cd /etc/udev $ ls -a
Quel sera le résultat de la commande
ls -a
?. .. rules.d udev.conf
-
Saisissez la commande la plus courte possible pour chacun des cas suivants :
-
Votre localisation actuelle est la racine (
/
). Entrez la commande pour naviguer verslost+found
dans le répertoire home (exemple) :$ cd home/lost+found
-
Votre localisation actuelle est la racine (
/
). Entrez la commande pour naviguer vers le répertoire nommé/etc/network
:$ cd etc/network
-
Votre localisation actuelle est
/home/user/Documents/
. Naviguez vers le répertoire nommé/etc/
.$ cd /etc
-
Votre localisation actuelle est
/etc/systemd/system/
. Naviguez vers le répertoire nommé/home/user/
.$ cd /home/user
-
-
Considérez les commandes suivantes :
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
Quel est le résultat de la commande
pwd
finale ?/etc/systemd
Réponses aux Exercices d’Exploration
-
Supposons qu’un utilisateur ait entré les commandes suivantes :
$ mkdir "this is a test" $ ls this is a test
Quelle commande
cd
vous permettrait d’entrer dans ce répertoire ?$ cd this\ is\ a\ test
-
Essayez à nouveau, mais après avoir tapé
cd this
, appuyez sur la touche TAB. Qu’est-ce qui est maintenant affiché à l’invite ?$ cd this\ is\ a\ test
C’est un exemple d'autocomplétion, qui est un outil inestimable non seulement pour gagner du temps, mais aussi pour prévenir les erreurs d’orthographe.
-
Essayez de créer un répertoire dont le nom contient un caractère
\
. Affichez le nom du répertoire avecls
et supprimez le répertoire.Vous pouvez soit échapper la barre oblique inversée en utilisant une autre barre oblique inversée (
\\
), soit utiliser des guillemets simples ou doubles autour de tout le nom du répertoire :$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'