Comment vérifier si un chemin est un répertoire ou autre chose dans le script bash

Comment vérifier si un chemin est un répertoire ou autre chose dans le script bash

Nous essayons de développer un script Ubuntu très basique qui nous permettra de fournir les informations, qu'il s'agisse d'un nom de fichier ou peut-être d'un dossier. Comment puis-je vérifier si un dossier existe à l'intérieur d'un script de shell sous des machines virtuelles de type Linux ou Unix? Ou comment voir si un fichier existe? Comment un utilisateur se distinguera-t-il si le chemin mentionné est un répertoire ou un fichier? Alors, ayons quelques exemples dans un script bash pour développer ce concept. Assurez-vous d'abord de vous connecter à partir de votre système. Nous utilisons Ubuntu 20.04. Après la connexion, ouvrez votre application de console pour faire des exemples.

Exemple 01:

Pour l'ouverture de la coquille, essayez «Ctrl + alt + t". Création d'un fichier bash en commençant par un simple exemple de vérification si le chemin mentionné dans un fichier bash est un fichier ou un répertoire. Pour créer un fichier de code bash, tapez «toucher» dans le terminal tout en mentionnant le nom d'un fichier avec le «.shot" extension. Nous avons donc nommé le fichier "test.shot". Appuyez sur la clé "Entrer«Pour traiter la requête.

$ TOCK TEST.shot

Vous pouvez facilement trouver le fichier bash juste créé dans le répertoire domestique. Pour y ajouter un code bash, nous devons l'ouvrir dans un éditeur. Donc, nous utilisons un éditeur GNU intégré d'Ubuntu 20.04. Par conséquent, nous avons essayé la requête en dessous dans un obus et l'avons ouvert dans un éditeur.

$ test nano.shot

Le fichier a été lancé dans un éditeur. Écrivez le script illustré ci-dessous. Tout d'abord, ajoutez l'extension bash dans le fichier comme «#!/ bac / bash ». Nous avons déclaré une nouvelle variable «V1» et lui avons attribué un «chemin» d'un fichier comme valeur. Il ressort clairement du chemin qu'il indique certains fichiers bash. L'énoncé «IF» a été initialisé. À l'intérieur des accolades [], nous devons utiliser le drapeau de «-d» représentant le répertoire dans sa partie de condition. Il vérifiera si la valeur de variable mentionnée est un répertoire ou autre chose. Si la condition se réunit, elle exécutera la partie «alors» et affiche «$ v1 est un répertoire». Sinon, il exécutera la partie ELSE de l'instruction «IF» et afficher «$ V1 est un fichier» au terminal shell. Le «Fi» indique que la déclaration «IF» a été terminée ici. Après avoir enregistré ce code bash, nous serons de retour à la console via «Ctrl + s" et "Ctrl + x”Consécutivement.

Le moment est maintenant d'exécuter le fichier bash «Test.sh ”. Par conséquent, nous avons utilisé l'instruction BASH dans notre console avec le nom du fichier pour consulter la sortie. La sortie de cette instruction montre que le chemin mentionné dans le fichier spécifie un fichier. Par conséquent, nous pouvons dire que la partie «d'autre» doit avoir été exécutée.

$ Bash Test.shot

Exemple 02:

Voyons le résultat pour un répertoire cette fois. Cette fois, nous verrons comment le drapeau «-d» fonctionne sur une variable contenant un chemin pour un répertoire. Donc, nous avons ouvert le fichier «Test.Sh ”Again dans l'éditeur via la requête« Nano »dans le shell.

$ test nano.shot

Après l'avoir ouvert, nous avons mis à jour la valeur de la variable «V1» et changé le chemin vers un chemin de répertoire. Nous avons remplacé le fichier «fichier.sh ”avec un répertoire« Pictures / ». Le script de bash restant est le même partout dans le fichier dans un éditeur. Vous devez simplement enregistrer le code bash mis à jour et quitter l'éditeur en utilisant d'abord "Ctrl + S", puis "Ctrl + X" après cela.

Alors, exécutons à nouveau notre fichier. Pour l'exécution, la même requête ci-dessus a été utilisée dans la console. Cette fois, l'exécution montre que le chemin mentionné dans le script bash est un répertoire dans le répertoire domestique d'Ubuntu 20.04.

$ Bash Test.shot

Exemple 03:

Dans les deux exemples ci-dessus, vous avez vu comment utiliser un drapeau «-d» pour voir si la variable de chemin mentionnée est un répertoire ou non. Cette fois, nous utiliserons un autre drapeau, «-f», dans notre exemple spécifiant si le chemin mentionné est un fichier ou non. D'un autre côté, nous utiliserons une instruction «if-else» imbriquée dans notre code bash pour utiliser les drapeaux «-d» et «-f». Nous avons ouvert le «test.SH ”Fichier dans l'éditeur GNU via le terminal en utilisant une fois à nouveau l'instruction« nano ».

$ test nano.shot

Après avoir ouvert le document Bash, nous avons écrit le script bash ci-dessous. Ajout de l'extension bash et initialisé une variable V1, contenant un chemin de fichier comme valeur. De plus, l'instruction «IF-Else» imbriquée a été utilisée correctement pour vérifier si le chemin d'accès d'une variable est un fichier ou un répertoire. Ainsi, dans la première instruction IF, nous avons mentionné une condition pour vérifier si la valeur variable est un répertoire via l'indicateur «-d». Si la condition se réunit, elle imprimera «$ v est un répertoire»; Sinon, l'autre partie d'une déclaration sera compilée. Dans la partie «else», il y a une autre déclaration «if-else» mentionnée. Dans la partie «IF» de cette déclaration, la condition a été utilisée pour vérifier si le chemin variable «V» contient un fichier ou non via l'indicateur «-f». Si le chemin contient un fichier, il imprimera que «$ v est un fichier»; Sinon, la partie «Else» partie d'écho se compilera au terminal.

Une fois le code enregistré, c'est le moment de compiler le script bash via une requête bash. Par conséquent, nous avons utilisé la requête «bash» avec le nom de fichier mentionné à l'intérieur. La sortie est la même que ce à quoi nous nous attendions. Comme la valeur variable contient le chemin d'accès qui spécifie le chemin du fichier, il affiche que le «$ V est un fichier».

$ Bash Test.shot

Exemple 04:

Dans l'exemple ci-dessus, nous avons utilisé le chemin d'accès à un fichier pour voir comment l'instruction «if-else» imbriquée réagit tout en utilisant les drapeaux «-d» et «-f». Cette fois, nous utiliserons le chemin du répertoire. Ouvrez à nouveau le fichier et mettez à jour la valeur du chemin de la variable. Nous avons remplacé «Test.txt "avec" documents / ". Le script restant est le même.

Lors de la compilation avec succès d'un script bash, le chemin déclaré déclaré en valeur variable «V» est un répertoire, e.g., Téléchargements.

$ Bash Test.shot

Exemple 05:

Le dernier et un exemple bonus est pour une pratique supplémentaire. Ouvrez le nouveau fichier «Fichier.sh ”et remplissez-le avec le code ci-dessous. Deux variables ont été déclarées afficher le fichier et le chemin du répertoire consécutivement. Les instructions «if-else» ont été utilisées avec l'indicateur «-d» pour spécifier le type de chemin, E.g., répertoire ou fichier.

Une fois le code compilé, la première variable contient un fichier et le second contient un répertoire selon la sortie ci-dessous.

$ BASH Fichier.shot

Conclusion:

Dans ce guide, nous avons vu comment constater que le chemin mentionné est un fichier, un répertoire ou autre chose. Nous avons utilisé des déclarations «if-else» et imbriquées «if-else» tout en utilisant des drapeaux «-d» et «-f» dans nos exemples pour mieux élaborer.