2.3 Leçon 2
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: |
2 sur 2 |
Introduction
Le système d’exploitation Unix a été conçu à l’origine pour les ordinateurs centraux (mainframe) au milieu des années 60. Ces ordinateurs étaient partagés entre de nombreux utilisateurs, qui accédaient aux ressources du système par l’intermédiaire de terminaux. Ces idées fondamentales se retrouvent aujourd’hui dans les systèmes Linux. Nous parlons toujours de l’utilisation de “terminaux” pour entrer des commandes dans le shell, et chaque système Linux est organisé de telle manière qu’il est facile de créer de nombreux utilisateurs sur un seul système.
Répertoires Personnels
Ceci est un exemple de système de fichiers normal sous Linux :
$ tree -L 1 / / ├── bin ├── boot ├── cdrom ├── dev ├── etc ├── home ├── lib ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin ├── srv ├── sys ├── tmp ├── usr └── var
La plupart de ces répertoires sont cohérents sur l’ensemble des systèmes Linux. Des serveurs aux supercalculateurs en passant par les minuscules systèmes embarqués, un utilisateur expérimenté de Linux peut être sûr de trouver la commande ls
dans /bin
, de modifier la configuration du système en modifiant les fichiers dans /etc
, et de lire les journaux système dans /var
. L’emplacement standard de ces fichiers et répertoires est défini par la norme FHS (Filesystem Hierarchy Standard), qui sera abordée dans une leçon ultérieure. Vous en apprendrez plus sur le contenu de ces répertoires au fur et à mesure de votre apprentissage de Linux, mais pour l’instant, sachez que :
-
les modifications que vous effectuez dans le système de fichiers racine affecteront tous les utilisateurs, et
-
la modification de fichiers dans le système de fichiers racine nécessitera des autorisations d’administrateur.
Cela signifie qu’il sera interdit aux utilisateurs normaux de modifier ces fichiers, et peut-être même de les lire. Nous aborderons le sujet des autorisations dans une section ultérieure.
Nous allons maintenant nous concentrer sur le répertoire /home
, qui devrait être quelque peu familier à ce stade :
$ tree -L 1 /home /home ├── user ├── michael └── lara
Notre exemple de système comporte trois utilisateurs normaux, et chacun de nos utilisateurs a son propre emplacement dédié, où il peut créer et modifier des fichiers et des répertoires sans affecter son voisin. Par exemple, dans la leçon précédente, nous avons travaillé avec la structure de fichiers suivante :
$ tree /home/user user └── Documents ├── Mission-Statement └── Reports └── report2018.txt
En réalité, le véritable système de fichiers peut ressembler à ceci :
$ tree /home /home ├── user │ └── Documents │ ├── Mission-Statement │ └── Reports │ └── report2018.txt ├── michael │ ├── Documents │ │ └── presentation-for-clients.odp │ └── Music
…et ainsi de suite pour lara
.
Sous Linux, /home
est similaire à un immeuble d’habitation. De nombreux utilisateurs peuvent y avoir leur espace, séparé en appartements dédiés. Les services publics et la maintenance du bâtiment lui-même sont sous la responsabilité du superintendant utilisateur root.
Le Chemin Relatif Spécial pour le Répertoire Personnel
Lorsque vous démarrez une nouvelle session de terminal sous Linux, vous voyez une invite de commande similaire à celle-ci :
user@hostname ~ $
Le tilde (~
) représente ici notre répertoire personnel. Si vous exécutez la commande ls
, vous verrez une sortie familière :
$ cd ~ $ ls Documents
Comparez cela avec le système de fichiers ci-dessus pour vérifier votre compréhension.
Examinons maintenant ce que nous savons de Linux : il est semblable à un immeuble d’habitation, avec de nombreux utilisateurs résidant dans /home
. Le répertoire personnel de l’utilisateur user
sera donc différent de celui de l’utilisateur michael
. Pour le démontrer, nous utiliserons la commande su
(switch user) pour changer d’utilisateur.
user@hostname ~ $ pwd /home/user user@hostname ~ $ su - michael Password: michael@hostname ~ $ pwd /home/michael
La signification de ~
change en fonction de l’utilisateur. Pour michael
, le chemin absolu de ~
est /home/michael
. Pour lara
, le chemin absolu de ~
est /home/lara
, et ainsi de suite.
Chemins des Fichiers Relatifs au Répertoire Personnel
L’utilisation de ~
pour les commandes est très pratique, à condition de ne pas changer d’utilisateur. Nous allons considérer l’exemple suivant pour l’utilisateur user
, qui a commencé une nouvelle session :
$ ls Documents $ cd Documents $ ls Mission-Statement Reports $ cd Reports $ ls report2018.txt $ cd ~ $ ls Documents
Notez que les utilisateurs commencent toujours une nouvelle session dans leur répertoire personnel. Dans cet exemple, user
s’est rendu dans son sous-répertoire Documents/Reports
, et avec la commande cd ~
, il est retourné à son point de départ. Vous pouvez effectuer la même action en utilisant la commande cd
sans argument :
$ cd Documents/Reports $ pwd /home/user/Documents/Reports $ cd $ pwd /home/user
Une dernière chose à noter : nous pouvons spécifier les répertoires personnels des autres utilisateurs en précisant le nom d’utilisateur après le tilde. Par exemple :
$ ls ~michael Documents Music
Notez que cela ne fonctionnera que si michael
nous a donné la permission de consulter le contenu de son répertoire personnel.
Imaginons une situation où michael
voudrait voir le fichier report2018.txt
dans le répertoire personnel de user
. En supposant que michael
ait la permission de le faire, il peut utiliser la commande less
.
$ less ~user/Documents/Reports/report2018.txt
Tout chemin de fichier qui contient le caractère ~
est appelé chemin relatif au répertoire personnel.
Fichiers et Répertoires Cachés
Dans la leçon précédente, nous avons introduit l’option -a
pour la commande ls
. Nous avons utilisé ls -a
pour introduire les deux chemins relatifs spéciaux : .
et ..
. L’option -a
permet de lister tous les fichiers et répertoires, y compris les fichiers et répertoires cachés.
$ ls -a ~ . .. .bash_history .bash_logout .bash-profile .bashrc Documents
Les fichiers et répertoires cachés commenceront toujours par un point (.
). Par défaut, le répertoire personnel d’un utilisateur comprendra de nombreux fichiers cachés. Ceux-ci sont souvent utilisés pour définir des paramètres de configuration spécifiques à l’utilisateur, et ne doivent être modifiés que par un utilisateur expérimenté.
L’Option de Listage Long
La commande ls
dispose de nombreuses options pour modifier son comportement. Examinons l’une des options les plus courantes :
$ ls -l -rw-r--r-- 1 user staff 3606 Jan 13 2017 report2018.txt
-l
crée un listage long. Les fichiers et les répertoires occuperont chacun une ligne, mais des informations supplémentaires sur chaque fichier et répertoire seront affichées.
-rw-r—r--
-
Type de fichier et autorisations du fichier. Notez qu’un fichier normal commencera par un tiret, et qu’un répertoire commencera par
d
. 1
-
Nombre de liens vers le fichier.
user staff
-
Précise la propriété du fichier.
user
est le propriétaire du fichier, et le fichier est également associé au groupestaff
. 3606
-
Taille du fichier en octets.
Jan 13 2017
-
Horodatage de la dernière modification du fichier.
report2018.txt
-
Nom du fichier.
Des sujets tels que la propriété, les autorisations et les liens seront traités dans les prochaines sections. Comme vous pouvez le voir, la version listage long de ls
est souvent préférable à la version par défaut.
Options ls Supplémentaires
Vous trouverez ci-dessous quelques-unes des façons les plus courantes d’utiliser la commande ls
. Comme vous pouvez le voir, l’utilisateur peut combiner de nombreuses options pour obtenir le résultat souhaité.
ls -lh
-
La combinaison d’un listage long avec des tailles de fichiers lisibles par l’homme (human readable) nous donnera des suffixes utiles tels que
M
pour mégaoctets ouK
pour kilooctets. ls -d */
-
L’option
-d
permet de lister les répertoires mais pas leur contenu. La combinaison avec*/
n’affichera que les sous-répertoires et aucun fichier. ls -lt
-
Combine le listage long avec la possibilité de trier par heure de modification. Les fichiers comportant les modifications les plus récentes seront en haut, et les fichiers comportant les modifications les plus anciennes seront en bas. Mais cet ordre peut être inversé avec :
ls -lrt
-
Combine le listage long avec le tri par heure (de modification), combiné avec
-r
qui inverse le tri. Les fichiers avec les modifications les plus récentes se trouvent maintenant en bas de la liste. En plus du tri par heure de modification, les fichiers peuvent également être triés par heure d'accès ou par heure de statut. ls -lX
-
Combine le listage long avec l’option de tri par eXtension de fichier. Cela permettra, par exemple, de regrouper tous les fichiers se terminant par
.txt
, tous les fichiers se terminant par.jpg
, etc. ls -S
-
Le
-S
trie par taille de fichier, un peu comme-t
et-X
trient respectivement par heure et par extension. Les fichiers les plus volumineux seront classés en premier, et les plus petits en dernier. Notez que le contenu des sous-répertoires n'est pas inclus dans le tri. ls -R
-
L’option
-R
modifiera la commandels
pour afficher une liste récursive. Qu’est-ce que cela signifie ?
Récursion en Bash
La récursion désigne une situation dans laquelle “quelque chose est défini par rapport à lui-même”. La récursion est un concept très important en informatique, mais sa signification est ici beaucoup plus simple. Examinons notre exemple précédent :
$ ls ~ Documents
Nous savons depuis longtemps que user
a un répertoire personnel, et dans ce répertoire il y a un sous-répertoire. Jusqu’à présent, la commande ls
ne nous a montré que les fichiers et les sous-répertoires d’un emplacement, mais elle ne peut pas nous dire le contenu de ces sous-répertoires. Dans ces leçons, nous avons utilisé la commande tree
lorsque nous voulions afficher le contenu de différents répertoires. Malheureusement, tree
n’est pas l’un des utilitaires de base de Linux et n’est donc pas toujours disponible. Comparez la sortie de tree
avec la sortie de ls -R
dans les exemples suivants :
$ tree /home/user user └── Documents ├── Mission-Statement └── Reports └── report2018.txt $ ls -R ~ /home/user/: Documents /home/user/Documents: Mission-Statement Reports /home/user/Documents/Reports: report2018.txt
Comme vous pouvez le voir, avec l’option récursive, nous obtenons une liste de fichiers beaucoup plus longue. En fait, c’est comme si nous lancions la commande ls
dans le répertoire personnel de user
et que nous rencontrions un sous-répertoire. Puis, nous sommes entrés dans ce sous-répertoire et avons exécuté la commande ls
à nouveau. Nous y avons rencontré le fichier Mission-Statement
et un autre sous-répertoire appelé Reports
. Nous sommes alors entrés dans ce sous-répertoire et avons exécuté la commande ls
à nouveau. Essentiellement, exécuter la commande ls -R
revient à dire à Bash : “Exécute ls
ici, et répéte la commande dans chaque sous-répertoire que tu trouves.”
La récursivité est particulièrement importante dans les commandes de modification de fichiers telles que la copie ou la suppression de répertoires. Par exemple, si vous souhaitez copier le sous-répertoire Documents
, vous devez spécifier une copie récursive afin d’étendre cette commande à tous les sous-répertoires.
Exercices Guidés
-
Utilisez la structure de fichiers suivante pour répondre aux trois questions suivantes :
/ ├── etc/ │ ├── network/ │ │ └── interfaces/ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d │ └── udev.conf └── home/ ├── lost+found/ ├── user/ │ └── Documents/ └── michael/ └── Music/
-
Quelle commande permet de naviguer dans le répertoire
network
, quel que soit votre emplacement actuel ? -
Quelle commande
user
peut-il entrer pour naviguer dans son répertoireDocuments
à partir de/etc/udev
? Utilisez le chemin le plus court possible. -
Quelle commande
user
peut-il entrer pour naviguer dans le répertoireMusic
demichael
? Utilisez le chemin le plus court possible.
-
-
Considérez la sortie suivante de
ls -lh
pour répondre aux deux questions suivantes. Notez que les répertoires sont indiqués par und
en début de ligne.drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/ -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg -rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg -rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg -rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg -rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png -rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png -rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png -rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/ -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg -rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg -rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
-
Lorsque vous exécutez la commande
ls -lrS
, quel sera le fichier au début ? -
Veuillez décrire ce que vous attendez comme résultat pour la commande
ls -ad */
.
-
Exercices d’Exploration
-
Exécutez la commande
ls -lh
dans un répertoire qui contient des sous-répertoires. Notez la taille indiquée de ces répertoires. Ces tailles de fichiers vous semblent-elles correctes ? Représentent-elles avec précision le contenu de tous les fichiers à l’intérieur de ce répertoire ? -
Voici une nouvelle commande à essayer :
du -h
. Exécutez cette commande et décrivez la sortie qu’elle vous donne. -
Sur de nombreux systèmes Linux, vous pouvez taper
ll
et obtenir la même sortie que si vous aviez tapéls -l
. Veuillez noter cependant quell
n'est pas une commande. Par exemple,man ll
vous donnera le message qu’il n’existe pas d’entrée au manuel pour elle. Ceci est un exemple d'alias. Pourquoi les alias pourraient-ils être utiles à un utilisateur ?
Résumé
Dans cet atelier, vous avez appris :
-
que chaque utilisateur de Linux aura un répertoire personnel,
-
le répertoire personnel de l’utilisateur courant peut être atteint en utilisant
~
, -
tout chemin de fichier qui utilise
~
est appelé chemin relatif au répertoire personnel.
Vous avez également appris certaines des façons les plus courantes de modifier la commande ls
.
-a
(all)-
affiche tous les fichiers/répertoires, y compris les fichiers cachés
-d
(directories)-
liste des répertoires, et non leur contenu
-h
(human readable)-
affiche les tailles de fichiers dans un format lisible par l’homme
-l
(long list)-
fournit des détails supplémentaires, un fichier/répertoire par ligne
-r
(reverse)-
inverse l’ordre d’un tri
-R
(recursive)-
affiche chaque fichier, y compris les fichiers de chaque sous-répertoire
-S
(size)-
trie par taille de fichier
-t
(time)-
trie par heure de modification
-X
(eXtension)-
trie par extension de fichier
Réponses aux Exercices Guidés
-
Utilisez la structure de fichiers suivante pour répondre aux trois questions suivantes :
/ ├── etc/ │ ├── network/ │ │ └── interfaces/ │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d │ └── udev.conf └── home/ ├── lost+found/ ├── user/ │ └── Documents/ └── michael/ └── Music/
-
Quelle commande permet de naviguer dans le répertoire
network
, quel que soit votre emplacement actuel ?cd /etc/network
-
Quelle commande
user
peut-il entrer pour naviguer dans son répertoireDocuments
à partir de/etc/udev
? Utilisez le chemin le plus court possible.cd ~/Documents
-
Quelle commande
user
peut-il entrer pour naviguer dans le répertoireMusic
demichael
? Utilisez le chemin le plus court possible :cd ~michael/Music
-
-
Considérez la sortie suivante de
ls -lh
pour répondre aux deux questions suivantes. Notez que les répertoires sont indiqués par und
en début de ligne.drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/ -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg -rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg -rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg -rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg -rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg -rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png -rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png -rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png -rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/ -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg -rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg -rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg -rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
-
Lorsque vous exécutez la commande
ls -lrS
, quel sera le fichier au début ?Les trois dossiers sont tous de 4.0K, ce qui est la plus petite taille de fichier.
ls
va ensuite trier les répertoires par ordre alphabétique par défaut. La bonne réponse est le fichierscary.jpg
. -
Veuillez décrire ce que vous attendez comme résultat pour la commande
ls -ad */
.Cette commande affichera tous les sous-répertoires, y compris les sous-répertoires cachés.
-
Réponses aux Exercices d’Exploration
-
Exécutez la commande
ls -lh
dans un répertoire qui contient des sous-répertoires. Notez la taille indiquée de ces répertoires. Ces tailles de fichiers vous semblent-elles correctes ? Représentent-elles avec précision le contenu de tous les fichiers à l’intérieur de ce répertoire ?Non, elles ne le font pas. Chaque répertoire a une taille de fichier listé de 4096 octets. C’est parce que les répertoires sont ici une abstraction : ils n’existent pas sous forme d’arborescence sur le disque. Lorsque vous voyez un répertoire listé, vous voyez un lien vers une liste de fichiers. La taille de ces liens est de 4096 octets.
-
Voici une nouvelle commande à essayer :
du -h
. Exécutez cette commande et décrivez la sortie qu’elle vous donne.La commande
du
génère une liste de tous les fichiers et répertoires, et indique la taille de chacun. Par exemple,du -s
affichera la taille de tous les fichiers, répertoires et sous-répertoires pour un certain emplacement. -
Sur de nombreux systèmes Linux, vous pouvez taper
ll
et obtenir la même sortie que si vous aviez tapéls -l
. Veuillez noter cependant que ll n'est pas une commande. Par exemple,man ll
vous donnera le message qu’il n’existe pas d’entrée de manuel pour elle. Qu’est-ce que cela vous suggère à propos d’une caractéristique de la ligne de commande ?ll
est un alias dels -l
. En Bash, nous pouvons utiliser des alias pour simplifier les commandes les plus courantes.ll
est souvent défini pour vous dans Linux, mais vous pouvez aussi créer les vôtres.