Bash Vérifiez si le fichier n'existe pas

Bash Vérifiez si le fichier n'existe pas
Les scripts bash sont un langage de programmation qui peut être utilisé rapidement dans Linux et d'autres environnements du système d'exploitation pour automatiser vos tâches. Lors de l'écriture de scripts bash, nous devons fonctionner sur des fichiers dans le système de fichiers. Cependant, si notre code essaie d'accéder à un fichier et qu'il n'existe pas, nous pouvons obtenir une erreur inattendue. Par conséquent, sa meilleure pratique pour vérifier l'existence des fichiers avant d'essayer de référencer le fichier dans un script bash.

Exemple 01

Nous devons ajouter le support bash dedans comme '#!/ bin / bash '. Après cela, nous avons initialisé un 'DÉPOSER' variable avec le chemin d'accès au fichier lui-même 'déposer.sh ' je.e., '/ home / linuxhint / fichier.sh '. Pour vérifier que le fichier existe ou non, nous utiliserons le 'Si donc' Déclaration prenant ses conditions dans le carré crochets dans ce code bash. Pour vérifier si le fichier existe, nous devons utiliser le '-F' option suivie de la variable à double quot "DÉPOSER" avec le caractère dollar "$". Il s'agit de vérifier si le chemin d'accès donné au fichier contient un fichier avec le nom 'déposer.sh ' ou non.

La condition se termine ici et le 'alors' Une partie de la déclaration commence. Si le fichier existe, il affichera le message que le fichier 'déposer.sh ' existe dans le chemin donné en utilisant le 'écho' déclaration. Le 'si' La déclaration se termine ici avec la syntaxe de fin 'Fi'.

#!/ bac / bash
Fichier = / home / linuxhint / fichier.shot
si [-f "$ file"]; alors
Echo "Le fichier $ existe!"
Fi

Maintenant, enregistrez votre fichier de code bash et exécutez le fichier à l'aide de la ligne de commande ci-dessous:

dossier de bash.shot

Voici la sortie lors de l'exécution de la commande:

linuxhint @ u22: ~ $ bash fichier.shot
/ home / linuxhint / fichier.SH existe!

Si nous modifions le script et changez le 'DÉPOSER' À un fichier qui n'existe pas et relancer le script, nous n'obtenons aucune sortie du script.

Exemple 02

Dans cet exemple, nous ajouterons une instruction ELLER à l'instruction IF dans l'exemple précédent. De cette façon, si le fichier n'existe pas, nous obtiendrons un message d'erreur approprié imprimé sur la sortie ou l'écran standard. Voici le nouveau code:

#!/ bac / bash
Fichier = / home / linuxhint / fichier.shot
si [-f "$ file"]; alors
Echo "Le fichier $ existe!"
autre
Echo "Le fichier $ n'existe pas!"
Fi

Nous pouvons exécuter les scripts comme suit:

$ BASH Fichier.shot

Nous obtenons la même sortie qu'avant:

linuxhint @ u22: ~ $ bash fichier.shot
/ home / linuxhint / fichier.SH existe!

Mais maintenant, si nous piratons le nom de fichier comme un fichier qui n'existe pas, nous obtiendrons un message d'erreur approprié:

linuxhint @ u22: ~ $ bash fichier.shot
/ home / linuxhint / nofile.sh n'existe pas!

Exemple 03

Disons que vous souhaitez utiliser le 'pas' caractère donc vous vérifiez tout d'abord si le fichier n'existe pas. Par exemple, si le fichier n'existe pas, vous voudrez peut-être imprimer un message d'erreur, mais vous n'aurez peut-être même pas besoin d'un autre dans ce contexte car vous ne vous souciez que si le fichier n'existe pas, sinon le script peut continuer comme normal sans quitter un erreur.

Voici la syntaxe pour utiliser le '!' caractère pour inverser le chèque pour vérifier Si le fichier n'existe pas:

#!/ bac / bash
Fichier = / home / linuxhint / nofile.shot
si [ ! -f "$ file"]; alors
Echo "Le fichier $ n'existe pas!"
autre
Echo "Le fichier $ existe!"
Fi

Nous allons d'abord exécuter le script avec le nom de fichier cassé:

$ BASH Fichier.shot

La sortie lorsqu'elle déclenche la condition d'erreur est ici ci-dessous:

linuxhint @ u22: ~ $ bash fichier.shot
/ home / linuxhint / nofile.sh n'existe pas!

Maintenant, nous pouvons réparer le nom de fichier pour être le fichier qui existe:

#!/ bac / bash
Fichier = / home / linuxhint / fichier.shot
si [ ! -f "$ file"]; alors
Echo "Le fichier $ n'existe pas!"
autre
Echo "Le fichier $ existe!"
Fi

Voici la sortie avec le fichier qui existe:

linuxhint @ u22: ~ $ bash fichier.shot
/ home / linuxhint / fichier.SH existe!
linuxhint @ u22: ~ $

Exemple 04

Dans cet exemple, nous montrerons une syntaxe rapide du shell sans écrire un script et présenterons des opérateurs logiques pour imprimer le succès ou les erreurs. Voici le script que vous pouvez exécuter sur le terminal:

linuxhint @ u22: ~ $ [-f fichier.sh] && echo "le fichier existe" || Echo "Le fichier n'existe pas"
le fichier existe
linuxhint @ u22: ~ $

Dans le code ci-dessus, nous écrivons le code directement sur le terminal interactif. Nous utilisons un test conditionnel pour vérifier si le fichier existe. Il reviendra 0 pour réussir. Logique ou logique et les opérateurs sont utilisés pour indiquer quel message doit être imprimé, succès ou échec.

Exemple 05

Vous pouvez également utiliser une approche similaire à celle indiquée dans cet article pour vérifier l'existence d'un répertoire en utilisant le '-d' option dans son état au lieu de '-F'. Disons, nous avons un répertoire 'test' dans notre dossier à domicile et nous avons utilisé le même script avec le '-d' Option pour le vérifier et afficher le message de chaîne en fonction de la sortie de la condition.

Voici le code avec le fichier de vérification du répertoire 'Dir.sh ':

#!/ bac / bash
Fichier = / home / linuxhint / test
si [-d "$ file"]; alors
Echo "Le fichier de répertoire $ existe!"
autre
Echo "Le fichier de répertoire $ n'existe pas!"
Fi

Pour exécuter le code, exécutez:

$ bash dir.shot
linuxhint @ u22: ~ $ bash dir.shot
Répertoire / Home / Linuxhint / Test existe!

Et le code et la sortie de test négatifs:

#!/ bac / bash
Fichier = / home / linuxhint / test
si [ ! -d "$ file"]; alors
Echo "Le fichier de répertoire $ n'existe pas!"
autre
Echo "Le fichier de répertoire $ existe!"
Fi
linuxhint @ u22: ~ $ bash dir.shot
Le répertoire / home / linuxhint / test n'existe pas!

Conclusion

Il s'agit de l'utilisation de scripts bash pour vérifier si des fichiers et des répertoires existent. Nous avons également utilisé le code direct dans la console Bash en utilisant les opérations de test et les opérateurs logiques.