Bash[#5] - Tester des fichiers avec Bash
Table des matières:
- Vérifiez si le fichier existe
- Vérifier si l'annuaire existe
- Vérifiez si le fichier n'existe pas
- Vérifier si plusieurs fichiers existent
- Opérateurs de test de fichiers
- Conclusion
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:
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"
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 bashVérifier les fichiers pour les modifications avec le fichier Marxio Checksum Verifier
Validez une grande variété de sommes de contrôle avec cet utilitaire léger. chaîne de caractères qui identifie de manière unique un fichier, une empreinte digitale. Changez même quelques octets d'un fichier - par exemple, en l'infectant avec un virus ou en remplaçant une ancienne version par une nouvelle - et la somme de contrôle change. Marxio File Checksum Verifier (gratuit / donationware) est un petit utilitaire autonome qui va générer une somme de contrôle pour un fichier donné, puis le comp
Importer le répertoire Windows et les détails du fichier dans une feuille Excel
Voici comment importer le répertoire Windows et les détails du fichier dans une feuille Excel.
Comment vérifier si un fichier ou un répertoire existe en python
Lors de l'écriture de scripts Python, vous souhaiterez peut-être effectuer une certaine action uniquement si un fichier ou un répertoire existe ou non. Par exemple, vous pouvez souhaiter lire ou écrire des données dans un fichier de configuration ou créer le fichier uniquement s'il n'existe pas déjà.