Bash Vérifier si le fichier existe – Tutoriel et commandes à utiliser

Lors de la création d’un script bash, vous pouvez rencontrer une situation dans laquelle vous devez trouver si un fichier existe ou non pour effectuer une action avec lui. Vous pouvez utiliser la commande test pour vérifier si le fichier existe et quel est son type.

Dans ce tutoriel, nous allons vous montrer comment vérifier si le fichier existe dans les systèmes d’exploitation basés sur Linux.

Syntaxe de base de la commande de test

La syntaxe de base de la commande de test pour vérifier si le fichier existe, comme indiqué ci-dessous:

test -e file

Ou

test -f file

Où:

  • -e
    Cette option vérifie si un fichier existe quel que soit le type.
  • -f
    Cette option vérifie si un fichier existe uniquement si le FICHIER est un fichier normal.

Vous devriez voir la page de manuel de la commande de test comme indiqué ci-dessous:

man test

Vous devriez voir l’écran suivant :

Test si le fichier existe en utilisant la ligne de commande

Dans cette section, nous allons vous montrer comment vérifier si le fichier existe en utilisant la ligne de commande:

Exécutez la commande suivante pour vérifier si un fichier nommé / etc / fstab existe (T rue):

test -f /etc/fstab

Ensuite, exécutez la commande suivante pour définir le code de sortie sur 0 ou 1, chaque fois que le test réussit ou non.

echo $?

Résultat:

0

Le résultat est 0, ce qui signifie que le fichier / etc / fstab existe.

Vous pouvez également utilisez la commande suivante pour vérifier si le fichier existe:


echo $0

Sortie:

0

Ensuite, exécutez la commande suivante pour tester si le fichier / etc / fabab existe ( False).

test -f /etc/fabab
echo $?

Résultat:

1

Le résultat est 1, ce qui signifie que le fichier / etc / fabab n’existe pas.

Vous peut également tester si un fichier nommé /etc/rc.local existe ou n’utilise pas l’exécution conditionnelle bash comme indiqué ci-dessous:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Ou

&& echo "Exists" || echo "Not Exists"

Si le fichier nommé /etc/rc.local existe, vous devriez voir la sortie suivante:

Exists

Vous pouvez également vérifier si plusieurs fichiers existent ou non à l’aide d’une seule commande:

&& echo "both files exist"

Ou

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Vous devriez voir le résultat suivant:

both files exist

Test si le fichier existe dans Bash

Dans cette section, nous allons créer un script bash et vérifier si un fichier existe ou non, en imprimant un message.

Permet de créer un fichier nommé test.sh et de vérifier si un fichier /etc/rc.local existe ou non:

nano test.sh

Ajoutez les lignes suivantes:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Enregistrez et fermez le fichier puis exécutez le script avec la commande suivante:

bash test.sh

Vous devriez voir le résultat suivant:

The file "/etc/rc.local" exists.

Maintenant, créons un fichier test.sh et testons si le fichier / etc / rc.localad n’existe pas:

nano test.sh

Ajoutez les lignes suivantes:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Enregistrez et fermez le fichier puis exécutez le script avec la commande suivante:

bash test.sh

Vous devriez voir le résultat suivant:

The file "/etc/rc.localad" is not exists.

Vous pouvez également trouver si un fichier existe ou non et effectuer une action dessus dans le script bash.

Par exemple, recherchez un fichier nommé / etc / hosts et copiez-le dans le répertoire / opt si le fichier existe.

Pour ce faire, créez un fichier nommé test.sh:

nano test.sh

Ajoutez les lignes suivantes:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Enregistrez et fermez le fichier puis exécutez le script à l’aide de la commande suivante:

Maintenant, testez le répertoire / opt avec la commande suivante:

ls /opt/hosts

Vous devriez voir le fichier hosts dans la sortie suivante:

/opt/hosts

Vous pouvez également utiliser l’expression! pour vérifier si le fichier n’existe pas.

Par exemple, exécutez la commande suivante pour vérifier si le fichier / etc / hébergement n’existe pas:

&& echo "File does not exist"

Ou

test ! -f /etc/hosting && echo "File does not exist"

Vous devriez voir la sortie suivante:

File does not exist

Test si le répertoire existe

Vous pouvez également savoir si un répertoire existe ou non en utilisant l’option -d.

Par exemple, vérifiez si le répertoire / etc / apache2 existe ou non.

&& echo "Directory is exists"

Ou

test -d /etc/apache2 && echo "Directory is exists"

Vous devriez voir le résultat suivant:

Directory is exists

Vous pouvez également créer un script bash avec des expressions conditionnelles pour vérifier si un répertoire existe ou non.

Créez un fichier nommé test.sh comme indiqué ci-dessous:

nano test.sh

Ajoutez les lignes suivantes:

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, donnez l’autorisation appropriée avec la commande suivante:

chmod 755 test.sh

Ensuite, testez si le répertoire / etc / nginx est disponible ou non avec la commande suivante:

./test.sh /etc/nginx

Vous devriez voir la sortie suivante:

Directory /etc/nginx/ exists.

Ensuite, testez si le répertoire / etc / linux est disponible ou non avec la commande suivante:

./test.sh /etc/linux

Vous devriez voir le résultat suivant:

Directory /etc/linux does not exists

Opérateurs de test de fichiers dans Bash

Les opérateurs de test de fichiers suivants vous aideront à vérifier si un « fichier » existe et a des types spécifiques:

  • -b
    FILE existe et est un bloc spécial
  • -c
    FILE existe et est un caractère spécial
  • -d
    FILE existe et est un répertoire
  • -e
    FILE existe
  • -f
    FILE existe et est un fichier normal
  • -g
    FILE existe et est set-group-ID
  • -G
    FILE ex ists et appartient à l’ID de groupe effectif
  • -h
    FILE existe et est un lien symbolique (identique à -L)
  • -k
    FILE existe et a son ensemble de bits persistants
  • -L
    FILE existe et est un lien symbolique (identique à -h)
  • -O
    FILE existe et appartient à l’utilisateur effectif ID
  • -p
    FILE existe et est un tube nommé
  • -r
    FILE existe et l’autorisation de lecture est accordée
  • -s
    FILE existe et a une taille supérieure à zéro
  • -S
    FILE existe et est une socket
  • -u
    FILE existe et son bit d’ID utilisateur défini est défini
  • -w
    FILE existe et l’autorisation d’écriture est accordée
  • -x
    FILE existe et l’autorisation d’exécution (ou de recherche) est accordée

Conclusion

Leave a Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *