Vérifier la présence d’un répertoire ou d’un fichier
Sommaire
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.
Top merci
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
bonjour,
svp comment vérifier si un fichier existe sur un serveur linux?
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
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