La plupart du temps, nous pouvons trouver une situation où nous pouvons avoir besoin d’effectuer une action qui vérifiera si un fichier existe ou non.
Dans Bash, nous pouvons utiliser une « commande de test » pour vérifier si un fichier existe et déterminer le type d’un fichier.
Voici les syntaxes de la commande de test, et nous peut utiliser n’importe laquelle de ces commandes:
Nous devons utiliser une seule commande entre crochets « [ » pour rendre notre script portable pour tous les shells POSIX. La version mise à jour de la commande de test contient des doubles crochets « [[ » qui est pris en charge sur la plupart des systèmes modernes utilisant Bash, Zsh et Ksh comme shell par défaut.
Vérifier si le fichier existe
En vérifiant si un fichier existe, les opérateurs de fichier les plus couramment utilisés sont -e et -f. L’option « -e » est utilisée pour vérifier si un fichier existe quel que soit le type, tandis que l’option « -f » est utilisée pour renvoyer la valeur vraie uniquement si le fichier est un fichier normal (pas un répertoire ou un périphérique).
L’option la plus courante pour vérifier si le fichier existe ou non est d’utiliser la commande de test avec l’instruction « if conditionnelle ».
Voici les exemples pour vérifier si le « read_file. txt « existe:
Méthode 1
Méthode 2
Méthode 3
Sortie
La sortie pour les trois méthodes sera comme ci-dessous car nous avons un fichier (read_file.txt) présent dans le répertoire:
read_file.txt exist
Si nous voulons effectuer une action qui fournira un résultat selon que le fichier existe ou non, nous pouvons utiliser la construction if / then dans le manière suivante:
Exemple
Sortie
read_file.txt exist
Nous pouvons également utiliser la commande test sans l’instruction if. Nous pouvons utiliser l’une des méthodes suivantes:
Méthode 1
Méthode 2
Méthode 3
Sortie
La sortie pour les trois méthodes sera comme ci-dessous car nous avons un fichier (read_file.txt) présent dans le répertoire:
read_file.txt exist
Exemple
Contrairement à & &, l’instruction après le || L’opérateur n’est exécuté que si le statut de sortie de la commande de test est « false ».
Exemple
Sortie
read_file.txt exist
Voici les méthodes couramment utilisées dans Bash pour vérifier si le fichier existe ou non.
Vérifier si le répertoire existe
L’opérateur « -d » nous permet de tester si un fichier est un répertoire ou non.
Voici les méthodes pour vérifier si le répertoire « Javatpoint » existe:
Méthode 1
Méthode 2
Remarque: Nous pouvons également utiliser des crochets doubles « [[ » au lieu d’un simple crochet « [ » .
Sortie
La sortie pour les deux méthodes ci-dessus sera comme ci-dessous car nous avons un répertoire (nommé Javatpoint) présent à l’emplacement spécifié:
Javatpoint is a directory
Vérifier si le fichier n’existe pas
L’expression de test peut être annulée en utilisant le point d’exclamation (! -opérateur logique NOT). Regardez l’exemple suivant:
Exemple
Le script ci-dessus peut également être écrit comme suit:
Sortie
missing_read_file.txt unavailable
Opérateurs de test de fichiers
Les commandes de test incluent les opérateurs de fichiers suivants qui nous permettent de test pour des types particuliers de fichiers:
-b FileReturns | « True » si le FICHIER existe en tant que bloc spécial file. |
-c FileReturns | « True » si le FICHIER existe en tant que fichier de caractères spéciaux. |
-d FileReturns | « True » si le FICHIER existe en tant que répertoire. |
-e FileReturns | « True « si le FICHIER existe sous forme de fichier, quel que soit son type (nœud, répertoire, socket, etc.). |
-f FileReturns | » True » si le FICHIER existe en tant que fichier normal (pas un répertoire ou un périphérique). |
-G FileReturns | « True » si le FICHIER existe et contient le même groupe que l’utilisateur exécute la communication et. |
-h FileReturns | « True » si le FICHIER existe sous forme de lien symbolique. |
-g FileReturns | « True » si le FILE existe et contient un ensemble d’indicateurs set-group-id (sgid). |
-k FileReturns | « True » si le FICHIER existe et contient un ensemble d’indicateurs de bits persistants. |
-L FileReturns | « True » si le FILE existe sous forme de lien symbolique. |
-O FileReturns | « True » si le FILE existe et appartient à l’utilisateur qui exécute la commande. |
-p FileReturns | « True » si le FICHIER existe en tant que tube. |
– r FileReturns | « True » si le FILE existe en tant que fichier lisible. |
-S FileReturns | « True » si le FILE existe en tant que socket. |
-s FileReturns | « True » si le FICHIER existe et a une taille différente de zéro. |
-u FileReturns | « True » si le FILE existe et l’indicateur set-user-id (suid) est défini. |
-w FileReturns | « True » si le FICHIER existe en tant que fichier inscriptible. |
-x FileReturns | « True » si le FICHIER existe en tant que fichier exécutable. |