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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d’IT-Connect.fr et d’Information-security.fr.
Auditeur sécurité chez Amossys.

    mickael a publié 478 articles sur IT-Connect.See all posts by mickael

    Une réaction sur “Vérifier la présence d’un répertoire ou d’un fichier

    Laisser un commentaire

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