Creative Saplings

Comment vérifier correctement si le fichier existe dans Bash ou Shell (avec des exemples)

février 13, 2021
No Comments

Table des matières

Dans ce tutoriel, je couvrirai différents attributs que vous pouvez utiliser dans les scripts bash ou shell pour vérifier les fichiers et répertoires. Vous pouvez utiliser des expressions conditionnelles bash avec ] ou utiliser test avec pour vérifier si le fichier existe.

Nous allons utiliser l’opérateur bash if et else pour tous les exemples, je vous recommande donc de lire: Bash if else guide d’utilisation pour les débutants absolus

1. Bash / Shell: vérifier si le fichier existe et est un fichier régulier

Cette section montre les exemples pour vérifier si un fichier régulier existe dans bash.

1.1: Méthode-1: Utiliser des crochets simples ou doubles

Utiliser des crochets doubles ]

#!/bin/bashFILE="/etc/passwd"if ];then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

Utilisation de crochets simples

#!/bin/bashFILE="/etc/passwd"if ;then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

1.2: Méthode 2: Utilisation de la commande de test

test La commande est utilisée pour vérifier les types de fichiers et comparer valeurs.

#!/bin/bashFILE="/etc/passwd"if test -f $FILE; then echo "$FILE exists"else echo "$FILE missing"fi

1.3: Méthode 3: Une seule ligne

Nous pouvons utiliser des crochets simples ou doubles ici dans cet exemple. Je recommanderais de toujours utiliser des doubles crochets lorsque vous écrivez un code de ligne dans le shell car cela minimise le risque de recevoir des avertissements sur la console lors du fractionnement de mots.

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists" || echo "$FILE missing"

L’instruction après && sera exécutée si SUCCESS. Si la première condition renvoie FALSE, alors l’instruction avec || sera exécutée.

De même, en utilisant la commande de test pour vérifier si un fichier normal existe dans bash ou un script shell sur une seule ligne .

#!/bin/bashFILE="/etc/passwd"test -f $FILE && echo "$FILE exists" || echo "$FILE missing"

2. Bash / Shell: Vérifiez si le fichier existe (est vide ou pas vide)

Pour vérifier si le fichier existe et s’il est vide ou s’il contient du contenu, nous utilisons l’attribut « -s »

2.1: Méthode 1: Utilisation de crochets simples ou doubles

Vérifiez si le fichier existe et vide ou pas vide en utilisant des doubles crochets ]

#!/bin/bashFILE="/etc/passwd"if ]; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

Vérifiez si le fichier existe et vide ou pas vide en utilisant des crochets doubles

if ; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

2.2: Méthode 2: Utilisation de la commande de test

En utilisant la commande de test, nous combinons l’attribut -s pour vérifier si le fichier existe et est vide ou contient du contenu:

2.3: Méthode 3: Ligne unique

Nous pouvons utiliser des crochets doubles ou simples pour une telle doublure, mais comme je l’ai dit plus tôt, je recommanderais d’utiliser des crochets doubles.

#!/bin/bashFILE="/etc/passwd"test -s $FILE && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

De même avec la commande de test, nous pouvons utiliser && et || opérateur pour vérifier le fichier en une seule ligne de commande dans notre script shell.

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

3. Bash / Shell: vérifier si le répertoire existe

J’espère que vous savez que sous Linux, tout est un fichier. Ainsi, de cette manière, un répertoire est également considéré comme un fichier. Nous pouvons utiliser l’attribut « -d » pour vérifier si un répertoire existe en programmation shell.

3.1: Méthode-1: Utilisation de crochets doubles ou simples

Nous pouvons utiliser l’attribut -d dans un seul ou des doubles crochets ] pour vérifier si le répertoire existe.

#!/bin/bashDIR="/var/log"if ]; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

De même, nous utilisons des crochets simples dans cet exemple pour vérifier si le répertoire est prédéfini dans le script shell.

#!/bin/bashDIR="/var/log"if ; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.2: Méthode 2: Utilisation de la commande de test

Dans cet exemple, nous utiliserons la commande de test pour nous assurer que le répertoire est présent ou non avant d’effectuer certaines tâches.

#!/bin/bashDIR="/var/log"if test -d $DIR; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.3: Méthode 3: Une seule ligne

Dans cet exemple, nous utiliserons des crochets simples et doubles sous forme d’une seule ligne pour vérifier pour l’annuaire. L’instruction après l’opérateur && sera exécutée si la première condition est TRUE et si elle est FALSE l’instruction de || condition « sera exécutée .

#!/bin/bashDIR="/var/log"] && echo "$DIR exists" || echo "$DIR doesn"t exist"

Je recommanderais d’utiliser ] au lieu de pour un tel code de ligne dans la programmation shell.

De même avec && et || nous pouvons utiliser la commande de test pour vérifier si le répertoire existe

#!/bin/bashDIR="/var/log"test -d $DIR && echo "$DIR exists" || echo "$DIR doesn"t exist"

4. Bash / Shell: Vérifie si le répertoire existe (vide ou pas vide)

Il n’y a pas d’attribut shell comme je l’ai utilisé dans tous les autres exemples et scénarios de ce tutoriel. Mais nous avons quelques hacks que nous pouvons utiliser pour vérifier si le répertoire est vide ou non vide.

4.1: Méthode-1: Lister le contenu du répertoire et vérifier

Dans cet exemple, nous allons lister le contenu du répertoire, supprimer la sortie puis en fonction du code de sortie vérifier si le répertoire est vide ou en contient content

#!/bin/bashDIR="/tmp"if ls -1qA $DIR | grep -q . ; then echo "$DIR is not -empty"else echo "$DIR is empty"fi

Nous pouvons également inverser cela en mettant une condition NOT (!). Cela ressemblerait donc à:

#!/bin/bashDIR="/tmp"if ! ls -1qA $DIR | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

La sortie serait la même dans les deux exemples de scripts.

4.2: Méthode 2: Utilisation Commande find

Nous pouvons utiliser la commande find puis supprimer la sortie pour vérifier si le répertoire cible a du contenu ou non.

#!/bin/bashDIR="/tmp"if find -- "$DIR" -prune -type d -empty | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

4.3: Méthode 3: Lister le contenu

Encore une fois comme je l’ai dit puisqu’il n’y a pas de moyen facile de vérifier si un répertoire est vide ou n’utilise pas certains attributs, nous allons lister le contenu du répertoire. Si vous n’obtenez aucune sortie, le répertoire est vide ou pas vide

#!/bin/bashDIR="/tmp"if ] ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

5. Bash / Shell: Liste des attributs à tester le fichier

De même, il existe de nombreux autres attributs que vous pouvez utiliser avec des scripts shell pour vérifier différents types de fichiers, tels que des liens symboliques, des autorisations de fichiers, etc.

Attributs Que fait-il?
-a FILE Vrai si FILE existe
-b FILE Vrai si FILE existe et est un fichier spécial de bloc.
-c FILE Vrai si FILE existe et est un fichier spécial de caractères.
-d FILE Vrai si FILE existe et est un répertoire.
Vrai si FILE existe
-f FILE Vrai si FILE existe et est un fichier normal
-g FILE Vrai si FILE existe et que son bit set-group-id est défini
-h FILE Vrai si FILE existe et est un lien symbolique
-k FILE Vrai si FILE existe et que son bit « sticky » est défini
-p FILE Vrai si FILE existe et est un tube nommé (FIFO)
-r FILE Vrai si FILE existe et est lisible
-s FILE Vrai si FILE existe et a une taille supérieure à zéro
-u FILE Vrai si FILE existe et que son bit set-user-id est défini
-w FILE Vrai si FILE existe et est accessible en écriture
-x FILE Vrai si FILE existe et est exécutable
-G FILE Vrai si FILE existe et appartient à l’ID de groupe effectif
-L FILE Vrai si FILE existe et est un lien symbolique
-N FILE Vrai si FILE existe et a été modifié depuis sa dernière lecture
-o FILE Vrai si FILE existe et appartient à l’effectif ID utilisateur
-S FILE Vrai si FILE existe et est une socket
Vrai si FILE1 et FILE2 font référence au même appareil et numéros d’inode
FILE1 -nt FILE2 Vrai si FILE1 est plus récent (selon la date de modification) que FILE2, ou si FILE1 existe et FILE2 pas
FILE1 -ot FILE2 Vrai si FILE1 est plus ancien que FILE2, ou si FILE2 existe et FILE1

Conclusion

Articles
Previous Post

Comment dire que vous êtes le bienvenu en français

Next Post

Comment configurer l'accès distant et se connecter à une instance SQL Server distante avec les outils ApexSQL

Laisser un commentaire Annuler la réponse

Articles récents

  • Meilleures écoles de photographie du monde, 2020
  • Les citoyens souverains apportent leur philosophie anti-gouvernement aux routes
  • Guide des coûts de réparation du stuc
  • Muckrakers (Français)
  • Oncologie de précision

Archives

  • février 2021
  • janvier 2021
  • décembre 2020
  • novembre 2020
  • octobre 2020
  • septembre 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.