Android

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

Bash[#5] - Tester des fichiers avec Bash

Bash[#5] - Tester des fichiers avec Bash

Table des matières:

Anonim

Plusieurs fois lors de l'écriture de scripts Shell, vous pouvez vous retrouver dans une situation où vous devez effectuer une action selon qu'un fichier existe ou non.

Dans Bash, vous pouvez utiliser la commande test pour vérifier si un fichier existe et déterminer le type du fichier.

La commande de test prend l'une des formes de syntaxe suivantes:

test EXPRESSION]

Vérifiez si le fichier existe

Lors de la vérification de l'existence d'un fichier, les opérateurs FILE les plus couramment utilisés sont -e et -f . Le premier vérifiera si un fichier existe quel que soit le type, tandis que le second ne retournera vrai que si le FICHIER est un fichier normal (pas un répertoire ou un périphérique).

L'option la plus lisible lors de la vérification de l'existence d'un fichier est d'utiliser la commande test en combinaison avec l'instruction if. L'un des extraits ci-dessous vérifiera si le fichier /etc/resolv.conf existe:

FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi

Si vous souhaitez effectuer une action différente selon que le fichier existe ou non, utilisez simplement la construction if / then:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi Utilisez toujours des guillemets doubles pour éviter les problèmes lorsque vous traitez des fichiers contenant des espaces dans leurs noms.

Vous pouvez également utiliser la commande test sans l'instruction if. La commande après l'opérateur && ne sera exécutée que si l'état de sortie de la commande de test est vrai, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

En face de && , la déclaration après le || L'opérateur ne sera exécuté que si l'état de sortie de la commande de test est false .

&& echo "$FILE exist" || echo "$FILE does not exist"

Vérifier si l'annuaire existe

L'opérateur -d vous permet de tester si un fichier est un répertoire ou non.

Par exemple, pour vérifier si le répertoire /etc/docker existe, vous utiliserez:

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

Vous pouvez également utiliser les doubles crochets , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Vérifiez si le fichier n'existe pas

Semblable à de nombreuses autres langues, l'expression de test peut être annulée en utilisant le ! (point d'exclamation) opérateur logique non:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

Comme ci-dessus:

&& echo "$FILE does not exist"

Vérifier si plusieurs fichiers existent

Au lieu d'utiliser des constructions if / else imbriquées compliquées, vous pouvez utiliser -a (ou && avec ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

Variantes équivalentes sans utiliser l'instruction IF:

&& echo "both files exist"

] && echo "both files exist"

Opérateurs de test de fichiers

La commande test inclut les opérateurs FILE suivants qui vous permettent de tester des types de fichiers particuliers:

  • -b FILE - True si le FILE existe et est un fichier spécial de bloc. -c FILE - True si le FILE existe et est un fichier de caractères spéciaux. -d FILE - True si le FILE existe et est un répertoire. -e FILE - Vrai si le FILE existe et est un fichier, quel que soit son type (nœud, répertoire, socket, etc.). -f FILE - True si le FILE existe et est un fichier normal (pas un répertoire ou un périphérique). -G FILE - True si le FILE existe et a le même groupe que l'utilisateur exécutant la commande. -h FILE - True si le FILE existe et est un lien symbolique. -g FILE - Vrai si le FICHIER existe et que l'indicateur set-group-id (sgid) est défini. -k FILE - True si le FILE existe et a un indicateur de bit collant défini. -L FILE - True si le FILE existe et est un lien symbolique. -O FILE - True si le FILE existe et appartient à l'utilisateur exécutant la commande. -p FILE - True si le FILE existe et est un tube. -r FILE - True si le FILE existe et est lisible. -S FILE - Vrai si le FICHIER existe et est socket. -s FILE - True si le FILE existe et a une taille différente de zéro. -u FILE - True si l'indicateur existe et que set-user-id (suid) est défini. -w FILE - True si le FILE existe et est accessible en écriture. -x FILE - True si le FILE existe et est exécutable.

Conclusion

Dans ce guide, nous vous avons montré comment vérifier si un fichier ou un répertoire existe à l'aide de Bash.

terminal bash