Comment vérifier l'existence d'un fichier via un script Shell ?

Comment vérifier l'existence d'un fichier via un script Shell ? La manière la plus simple de vérifier l'existence d'un fichier avec un script Shell est une commande suivi du chemin vers le fichier.

Avec un script Shell, il est possible d'interagir directement avec le système d'exploitation pour manipuler des fichiers par exemple. Certaines fonctions nécessitent de vérifier au préalable l'existence du fichier sinon vous obtiendrez une erreur. 

La manière la plus simple de vérifier l'existence d'un fichier avec un script Shell est la commande "-e" suivi du chemin vers le fichier. Si vous utilisez cette commande dans un test, alors vous devez veiller à la présence des espaces entre les crochets et la commande sinon le test ne fonctionnera pas.

#!/bin/bash
if [ -e monfichier.txt ]
then
    echo "Mon fichier existe"
else
    echo "Mon fichier n'existe pas"
fi

Il est également possible de faire un test à l'aide de la commande "ls", qui liste les fichiers. On peut alors exécuter une commande mais le résultat de la commande "ls" sera quand même affiché à l'écran.

#!/bin/bash
(ls monfichier.txt && echo "Mon fichier existe") || echo "Mon fichier n'existe pas"

Pour empêcher l'affichage du résultat de la commande ls, il faut utilisez l'opérateur ">>" afin de rediriger l'affichage de sortie de la commande vers le dossier "/dev/null" et l'instruction "2>&1" qui effectue la même chose pour la sortie d'erreur, dans le cas où le fichier n'existe pas.

(ls monfichier.txt >> /dev/null 2>&1 && echo "Mon fichier existe") || echo "Mon fichier n'existe pas"

Avant de tester l'existence de votre fichier, assurez-vous que votre code en a besoin. En effet, certaines commandes Shell, comme la commande "rm" qui supprime un fichier, n'affichent pas de message d'erreur si le fichier en question n'existe pas.

#!/bin/bash
rm monfichier.txt

Le fichier "monfichier.txt" sera supprimé, qu'il existe ou non dans le répertoire.