Lors de lécriture de scripts Shell, vous pouvez souvent vous retrouver dans une situation où vous devez effectuer une action en fonction de lexistence ou non dun fichier .
Dans Bash, vous pouvez utiliser la commande de test pour vérifier si un fichier existe et déterminer le type du fichier.
La commande de test prend lune des formes de syntaxe suivantes:
Si vous voulez que votre script soit portable, vous devriez préférer utiliser lancien test ; then echo "$FILE exists."fi
Si vous souhaitez effectuer une action différente selon que le fichier existe ou non simplement utilisez la construction if / then:
Vous pouvez également utiliser la commande de test sans linstruction if. La commande après lopérateur &&
ne sera exécutée que si létat de sortie de la commande de test est vrai,
Si vous voulez exécuter une série de commandes après lopérateur &&
mettre simplement les commandes entre accolades séparées par ;
ou &&
:
En face de &&
, linstruction après le Lopérateur ||
ne sera exécuté que si létat de sortie de la commande de test est false
.
Vérifier si le répertoire existe #
Les opérateurs -d
vous permettent de tester si un fichier est un répertoire ou non.
Par exemple, pour vérifier si le répertoire /etc/docker
existe, vous utiliseriez:
Vous pouvez également utiliser les doubles crochets ; then echo "$FILE does not exist."fi
Idem que ci-dessus:
Vérifier si plusieurs fichiers existent #
Au lieu dutiliser des constructions if / else imbriquées compliquées, vous pouvez utiliser -a
(ou &&
avec ; then echo "Both files exist."fi
Variantes équivalentes sans utiliser linstruction IF:
Opérateurs de test de fichier #
La commande de test inclut les opérateurs FILE suivants qui vous permettent de tester des types de fichiers particuliers:
-
-b
FILE
– Vrai si le FICHIER existe et est un fichier de bloc spécial. -
-c
FILE
– Vrai si le FICHIER existe et est un fichier de caractères spéciaux. -
-d
FILE
– Vrai si le FICHIER existe et est un répertoire. -
-e
FILE
– Vrai si le FICHIER existe et est un fichier, quel que soit son type (nœud, répertoire, socket, etc.). -
-f
FILE
– Vrai si le FICHIER existe et est un fichier normal (pas un répertoire ou un périphérique). -
-G
FILE
– Vrai si le FICHIER existe et a le même groupe que lutilisateur exécutant la commande. -
-h
FILE
– Vrai si le FICHIER existe et est un lien symbolique. -
-g
FILE
– Vrai si le FICHIER existe et que lindicateur set-group-id (sgid
) est défini. -
-k
FILE
– Vrai si le FICHIER existe et a un indicateur de bit fixe défini. -
-L
– Vrai si le FICHIER existe et est un lien symbolique. -
-O
FILE
– Vrai si le FICHIER existe et appartient à lutilisateur exécutant la commande. -
-p
FILE
– Vrai si le FICHIER existe et est un tube. -
-r
FILE
– Vrai si le FICHIER existe et est lisible. -
-S
FILE
– Vrai si le FICHIER existe et est une socket. -
-s
FILE
– Vrai si le FICHIER existe et a une taille différente de zéro. -
-u
FILE
– Vrai si le FICHIER existe et si lindicateur set-user-id (suid
) est défini. -
-w
FILE
– Vrai si le FICHIER existe et est accessible en écriture. -
-x
FILE
– Vrai si le FICHIER existe et est exe coupable.
Conclusion #
Dans ce guide, nous vous avons montré comment vérifier si un fichier ou un répertoire existe dans Bash.