Comment vérifier si un répertoire existe sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous allez apprendre les commandes Linux de base pour vérifier l'existence d'un répertoire et examiner ses propriétés. Vous commencerez par utiliser la commande test -d pour vérifier de manière programmée si un répertoire existe, en comprenant comment interpréter son statut de sortie à des fins de script.

Ensuite, vous explorerez la commande ls -ld pour lister le contenu d'un répertoire et afficher des informations détaillées sur le répertoire lui-même. Enfin, vous utiliserez la commande stat pour examiner les métadonnées complètes associées à un répertoire. Ces compétences sont essentielles pour une gestion efficace du système de fichiers et la création de scripts sous Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") subgraph Lab Skills linux/test -.-> lab-558676{{"Comment vérifier si un répertoire existe sous Linux"}} linux/ls -.-> lab-558676{{"Comment vérifier si un répertoire existe sous Linux"}} end

Tester l'existence d'un répertoire avec test -d

Dans cette étape, vous allez apprendre à vérifier si un répertoire existe en utilisant la commande test avec l'option -d. Il s'agit d'une compétence fondamentale pour la création de scripts et l'automatisation de tâches sous Linux.

La commande test est utilisée pour vérifier les types de fichiers et comparer des valeurs. Elle est souvent utilisée dans les instructions conditionnelles des scripts shell (comme les instructions if) pour prendre des décisions en fonction des résultats du test.

L'option -d avec test vérifie spécifiquement si un chemin donné correspond à un répertoire.

Essayons cela. Votre répertoire actuel est /home/labex/project. Ce répertoire existe.

Tapez la commande suivante et appuyez sur Entrée :

test -d /home/labex/project

Après avoir exécuté cette commande, vous ne verrez aucune sortie si le répertoire existe. En effet, la commande test, en cas de succès, renvoie un statut de sortie égal à 0 (ce qui signifie généralement "succès" sous Linux) et n'imprime rien sur la sortie standard.

Maintenant, testons pour un répertoire qui n'existe pas. Tapez cette commande et appuyez sur Entrée :

test -d /home/labex/nonexistent_directory

Encore une fois, vous ne verrez aucune sortie directement de la commande test. Cependant, la commande renverra un statut de sortie non nul (indiquant "échec" car le répertoire n'existe pas).

Pour voir le statut de sortie de la dernière commande, vous pouvez utiliser la variable spéciale $?. Tapez cette commande et appuyez sur Entrée :

echo $?

Après avoir testé pour /home/labex/project, echo $? devrait afficher 0.
Après avoir testé pour /home/labex/nonexistent_directory, echo $? devrait afficher un nombre non nul (généralement 1).

Comprendre les statuts de sortie est crucial pour écrire des scripts capables de réagir au succès ou à l'échec des commandes.

Lister le contenu d'un répertoire avec ls -ld

Dans cette étape, vous allez apprendre à lister le contenu d'un répertoire et à afficher des informations détaillées sur le répertoire lui-même en utilisant la commande ls avec les options -l et -d.

La commande ls est l'une des commandes les plus fréquemment utilisées sous Linux. Par défaut, elle liste les fichiers et les répertoires du répertoire actuel.

L'option -l fournit un format de liste détaillée ("long listing"), affichant des détails tels que les autorisations de fichier, la propriété, la taille et la date de modification.

L'option -d est essentielle lorsque vous souhaitez voir des informations sur le répertoire lui-même, plutôt que sur son contenu. Sans -d, ls -l listerait le contenu du répertoire au format détaillé. Avec -d, elle liste l'entrée du répertoire lui-même.

Combinons ces options pour voir les détails de votre répertoire actuel, /home/labex/project.

Tapez la commande suivante et appuyez sur Entrée :

ls -ld /home/labex/project

Vous devriez voir une sortie similaire à celle-ci :

drwxr-xr-x 2 labex labex 4096 <Date> <Time> /home/labex/project

Décortiquons cette sortie :

  • d : Le premier caractère indique le type de fichier. d signifie qu'il s'agit d'un répertoire.
  • rwxr-xr-x : Ces caractères représentent les autorisations de fichier pour le propriétaire, le groupe et les autres.
  • 2 : Le nombre de liens physiques (hard links) vers ce répertoire.
  • labex : Le propriétaire du répertoire.
  • labex : Le groupe propriétaire du répertoire.
  • 4096 : La taille du répertoire en octets.
  • <Date> <Time> : La date et l'heure de la dernière modification.
  • /home/labex/project : Le nom du répertoire.

Maintenant, essayez d'exécuter ls -l sans l'option -d pour voir la différence. S'il y a des fichiers ou des répertoires à l'intérieur de /home/labex/project, ils seront listés.

ls -l /home/labex/project

Si /home/labex/project est vide, vous ne verrez aucune sortie de ls -l. S'il contient des éléments, vous verrez une liste détaillée de ces éléments.

L'utilisation de ls -ld est un moyen rapide de vérifier les autorisations, la propriété et la date de modification d'un répertoire spécifique sans lister tout son contenu.

Inspecter les métadonnées d'un répertoire avec stat

Dans cette étape, vous utiliserez la commande stat pour obtenir des informations encore plus détaillées sur un répertoire que celles fournies par ls -ld.

Alors que ls -ld vous donne un bon résumé, stat fournit une multitude de métadonnées sur les fichiers et les répertoires, y compris les horodatages d'accès, de modification et de changement, la taille des blocs et les informations sur l'inode.

Utilisons stat pour inspecter votre répertoire actuel, /home/labex/project.

Tapez la commande suivante et appuyez sur Entrée :

stat /home/labex/project

Vous verrez une sortie similaire à celle-ci :

  File: /home/labex/project
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: <device_id>     Inode: <inode_number>  Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: <Date> <Time>.<Nanoseconds> +<Offset>
Modify: <Date> <Time>.<Nanoseconds> +<Offset>
Change: <Date> <Time>.<Nanoseconds> +<Offset>
 Birth: -

Examinons certaines des informations clés :

  • File : Le nom du fichier ou du répertoire.
  • Size : La taille en octets.
  • Blocks : Le nombre de blocs de 512 octets alloués.
  • IO Block : La taille optimale du bloc d'E/S.
  • directory : Indique le type de fichier.
  • Device : L'identifiant du périphérique où se trouve le fichier.
  • Inode : Le numéro d'inode (un identifiant unique pour l'objet du système de fichiers).
  • Links : Le nombre de liens physiques (hard links).
  • Access: (0755/drwxr-xr-x) : Les autorisations au format octal et symbolique.
  • Uid et Gid : L'identifiant utilisateur et l'identifiant de groupe du propriétaire.
  • Access, Modify, Change : Les horodatages du dernier accès, de la dernière modification et du dernier changement de statut.

La commande stat est particulièrement utile lorsque vous avez besoin de détails précis sur les objets du système de fichiers, notamment pour la création de scripts ou la résolution de problèmes liés aux autorisations et aux horodatages.

Résumé

Dans ce laboratoire (lab), vous avez appris à vérifier si un répertoire existe sous Linux en utilisant la commande test -d. Vous avez pratiqué le test de répertoires existants et non existants et compris comment vérifier le statut de sortie de la commande à l'aide de echo $? pour déterminer le résultat du test. Cette compétence fondamentale est essentielle pour la création de scripts et l'automatisation de tâches basées sur la présence de répertoires.

Vous avez également appris à lister le contenu d'un répertoire et à afficher des informations détaillées sur le répertoire lui-même en utilisant la commande ls -ld.