15/11/2024

Bash

Vérifier la présence d’un répertoire ou d’un fichier

I. Présentation

Dans ce tutoriel, nous allons voir comment vérifier la présence d'un dossier ou d'un fichier dans notre OS Linux. Nous allons voir comment mettre une condition en action selon le résultat de notre vérification.

Lors de la construction d'un script, il peut être intéressant de ne créer une fichier ou un dossier uniquement si il n'est pas présent par exemple. C'est ce que ce tutoriel va nous apprendre à faire.

II. Vérifier la présence d'un dossier

Dans une condition construite dans un fichier bash, il est possible de vérifier par une option si un dossier existe :

#!/bin/bash
if [ -d "/home/neaj/dossier1" ];then
echo "Le dossier1 existe !";
fi

On créer donc notre condition "if ". Le "-d" est l'option qui indique que nous voulons voir si le dossier précisé juste derrière existe. Le "d" est pour "directory". Si c'est le cas, on écrira "Le dosser1 existe !". Enfin on fermera notre condition avec "fi".

On peut imaginer une autre utilisation de cette condition en y ajoutant le "!" qui exprime l'inverse. Comme suivant

#!/bin/bash
if [ ! -d "/home/neaj/dossier1" ];then
echo "Création du dosser1 !";
mkdir /home/neaj/dossier1
fi

La condition est ici sensiblement la même que la précédente sauf que nous y ajoutons un "!" avant notre "-d" qui vérifie l'existence du dossier. En plus clair la ligne " if [ ! -d "/home/neaj/dossier1" ];then " veut dire " Si le dossier /home/neaj/dossier1 n'existe pas, alors ...".

Pour faire plus simple on peut aussi utiliser le "else" (sinon) des conditions :

if [ -d "/home/neaj/dossier1" ];then
 echo "Le dossier1 existe !";
else
echo "Le dossier1 n'existe pas !"
fi

Cela prend en compte les deux cas de figure et donne la possibilité d'agir dans les deux cas.

III. Vérifier la présence d'un fichier

Il est possible d'utiliser une option similaire pour tester la présence d'un fichier avec cette fois si l'option "-f" pour "file". On peut alors imaginer une utilisation comme suivant :

if [ -f "/etc/appli/appli.conf" ];then
echo "Le fichier de configuration existe !";
fi

On cherche donc ici à vérifier l'existence d'un fichier.

IV. Fonctionnement

Pour mieux comprendre comment tester la présence d'un dossier, on peut utiliser le variable flag "$?" qui indique, après chaque exécution d'une commande, son code de retour. Plus précisément, Linux sait quand une commande c'est bien passé (il met la variable "$?" à 0) ou non (il met la variable "$?" à 2). Si on souhaite ce rendre dans un répertoire par exemple :

cd /home/neaj/dossier1

et que l'on vérifie le code de retour de cette commande avec :

echo "$?"

On verra soit un "0", soit un "2" apparaitre dans le terminal. On saura alors si la commande a correctement été exécutée ou non.

Il est aussi possible d'utiliser ce code de retour (flag) dans un script en le mettant dans une variable juste après l'exécution d'une commande :

#!/bin/bash
mkdir /home/neaj/dossier1
$RetourCode=${?}

On pourra ensuite avec des conditions tester la valeur de "$RetourCode" et en déduire la bonne ou mauvaise exécution de la commande précédente. C'est un peu comme cela que fonctionnent les options "-d" et "-f" présentées plus haut.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

5 commentaires sur “Vérifier la présence d’un répertoire ou d’un fichier

  • Bonjour,
    Comment tester l’existance d’un fichier avec un lien relatif ?
    ~/installeur

    Pour le moment, je suis  » obligé  » de saisir un chemin complet pour tester.
    /home/user/installeur

    Répondre
  • bonjour,
    svp comment vérifier si un fichier existe sur un serveur linux?

    Répondre
  • Bonjour,

    J’aimerai faire me connecter à un serveur et voir si un fichier existe. Tout ça doit se faire sur une seule ligne.

    S’il vous plaît

    Répondre
  • Bonjour
    J’aurais souhaiter créer un script shell qui l’état de plusieurs jobs sous autosys:
    – entree Les jobs à vérifier
    – checker leur eta via la commande “autorep -j”
    – si retour RU ils sont en running
    – il continue à tourner
    – si Les jobs sont tous en SU
    – le script s’arrête de tourner

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.