Vérifier si un fichier ou un répertoire existe à partir d'un script Bash
Bash est utilisé pour automatiser les commandes exécutées régulièrement sous Linux. Les commandes destinées aux opérations sur les fichiers/répertoires sont assez fréquemment utilisées, et généralement, avant d'exécuter une telle commande, nous devons vérifier si le fichier ou le répertoire en particulier existe. Voyons comment effectuer cette vérification.
Syntaxe et utilisation
Des dossiers
Pour vérifier si un fichier existe , utilisez la syntaxe suivante :
[ -f ]
L'expression [ -f ]
renvoie 0, c'est-à-dire qu'elle réussit si elle existe, et si elle n'existe pas, elle renvoie un statut non nul. En général, cela est utilisé comme condition dans l' if
instruction.
if [ -f ]
then
fi
Pour annuler la valeur renvoyée , faites simplement précéder le -f
d'un opérateur de négation ( !
).
if [ ! -f ]
then
fi
Dans ce cas, la condition sera satisfaite si le fichier n'existe pas , car le statut non nul renvoyé (faux) sera nié et considéré comme 0 (vrai).
Notez que si le fichier à vérifier n'existe pas dans le répertoire courant et existe dans un autre répertoire, le chemin complet du fichier doit être mentionné au lieu du seul nom de fichier.
Annuaires
Une syntaxe similaire à celle utilisée pour la vérification des fichiers est utilisée pour la vérification des répertoires.
[ -d ]
Semblable à l'instruction pour les fichiers, cette instruction renvoie 0, c'est-à-dire un succès, si le répertoire existe, et un état différent de zéro, c'est-à-dire d'échec, est renvoyé s'il n'existe pas. Ceci est également couramment utilisé dans une if
condition d'instruction.
if [ -d ]
then
fi
Pour annuler l'état renvoyé, faites précéder le -d
d'un opérateur de négation ( !
).
if [ ! -d ]
then
fi
La condition satisfera (état 0) dans ce cas si le répertoire n'existe pas, et échouera (état non nul) si le répertoire existe.
Comme mentionné précédemment pour les fichiers, si le répertoire à vérifier existe à un autre emplacement et non dans le répertoire actuel, le chemin du répertoire complet doit être saisi au lieu du nom du répertoire uniquement.
La syntaxe entre crochets ( [...]
) utilisée ici est en fait une commande Linux appelée test
. Les options -f
et -d
sont les fonctionnalités de cette commande. Pour plus d'informations, consultez la page de manuel de test ( man test
).
Vérifier à partir d'un script Bash
Dans les exemples ci-dessus, nous avons utilisé les syntaxes directement sur le terminal. Le shell chaque fois qu'il rencontre une boucle ou une instruction conditionnelle ( if
dans notre cas), il continue l'invite et permet à l'utilisateur d'entrer le continuer le bloc.
Les mêmes syntaxes peuvent être utilisées à l'intérieur d'un script Bash.
Le #!/bin/bash
au début spécifie l'interpréteur à utiliser lors de l'exécution du fichier. Bien que Bash soit le shell le plus couramment utilisé de nos jours, certains utilisateurs préfèrent des shells comme zsh
, qui doivent être spécifiés à la place de bash au début de ce fichier.
Pour accorder des autorisations d'exécution pour ce fichier, exécutez :
chmod +x test.sh
Enfin, pour exécuter le fichier , exécutez :
./test.sh