GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Si vous travaillez sur un script Bash qui interagit avec des fichiers et des répertoires, vous pouvez rencontrer une situation dans laquelle vous devez vous assurer que le fichier ou le répertoire existe. Cela permet d'éviter d'éventuelles erreurs lors de l'exécution de certaines actions sur un fichier qui n'existe pas.

Dans ce tutoriel, je vais vous montrer quelques façons de vérifier si le fichier ou le répertoire existe dans le script bash ou non. Commençons d'abord par le fichier.

Vérifier si le fichier existe dans le script bash

L'idée ici est d'utiliser l'opérateur -f qui renvoie true uniquement lorsqu'il s'agit d'un fichier normal (et non d'un répertoire).

Disons que vous voulez vérifier si le fichier /home/user/my_file existe ou non. Voici comment vous pouvez vérifier avec des crochets

#!/bin/bash
 
if [ -f /home/user/my_file ]
then
    echo "My file exists"
fi

Mais vous n'obtiendrez pas toujours le nom du fichier à l'avance, n'est-ce pas ? Vous pouvez l'avoir dans une variable et si c'est le cas, vous pouvez l'utiliser de cette façon.

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

Fondamentalement, ce qui compte, c'est la condition que vous utilisez dans la commande if. C'est à vous de décider comment vous voulez utiliser l'instruction if.

Par exemple, vous pouvez l'écrire avec deux crochets, garder « alors » dans la même ligne que « si » à l'aide d'un point-virgule comme ceci :

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]; then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

ou assemblez l'intégralité de la déclaration comme ceci :

[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"

Vérifier que le fichier existe dans bash avec test

Vous pouvez également utiliser test in bash pour voir si le fichier existe ou non. C'est à peu près la même chose sauf que vous n'utilisez pas les crochets dans l'instruction if :

#!/bin/bash

FILE=/home/user/my_file
 
if test -f "$FILE" 
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

Vous pouvez également utiliser le code ci-dessus sur une seule ligne comme ceci :

test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"

Vérifier si le fichier n'existe pas dans le script bash

Et si c'est l'inverse et que vous voulez vérifier si le fichier n'existe pas dans bash ? Vous pouvez utiliser à peu près le même code que ci-dessus en utilisant l'opérateur de négation :

#!/bin/bash

FILE=/home/user/my_file
 
if [ ! -f "$FILE" ]
then
    echo "My file doesn't exist"
fi

Maintenant que vous savez comment gérer les fichiers, passons aux répertoires.

Vérifier si le répertoire existe dans le script bash

Le code de vérification du répertoire est le même que celui que vous avez vu dans la section précédente. La seule différence est que vous utiliserez -d au lieu de -f. -d renvoie true uniquement pour les répertoires.

#!/bin/bash
 
if [ -d /home/user/my_dir ]
then
    echo "My directory exists"
fi

Vous pouvez également utiliser le test ici :

#!/bin/bash

DIR=/home/user/my_dir
 
if test -d "$DIR" 
then
    echo "My directory exists"
else 
    echo "My directory doesn't exist"
fi

Vérifier si le répertoire n'existe pas dans bash

Vous pouvez réutiliser la négation pour vérifier si le répertoire n'existe pas :

#!/bin/bash

DIR=/home/user/my_dir
 
if [ ! -d "$DIR" ]
then
    echo "My directory doesn't exist"
fi

C'est ça. C'est tout ce que vous avez à faire pour vérifier si un répertoire de fichiers existe ou non dans le shell bash.

J'espère que vous trouverez cette astuce bash utile. Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire ci-dessous.


Linux
  1. Comment parser un fichier CSV dans Bash ?

  2. Comment vérifier si un fichier est vide dans Bash ?

  3. Comment inclure un fichier dans un script shell bash

  4. Comment vérifier si une commande shell existe depuis PHP

  5. Comment puis-je vérifier si un répertoire existe ?

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment lire un fichier ligne par ligne dans Bash

Comment vérifier si un fichier existe dans un répertoire spécifique dans un script bash ?

Comment exécuter un script bash ?

Comment grep une section d'un fichier dans bash shell