Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
913 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Comment tester si un dossier existe ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment tester si un dossier existe ?

n°1323840
Willits
La réponse est 42
Posté le 12-03-2006 à 20:51:36  profilanswer
 

Bonsoir à tous,
 
je crée un petit script bash, et j'ai besoin de savoir si un fichier ou un dossier existe.
Donc, j'ai lus qu'il existait la commande test, mais je ne sais pas comment récupérer son résultat.
 
Car quand je lance "test -d /home" dans un terminal, rien n'est renvoyé, et pareil si le dossier n'existe pas.
 
Je vous remercie.
 
Willits

mood
Publicité
Posté le 12-03-2006 à 20:51:36  profilanswer
 

n°1323846
s0d4
Je charge des sacs de sable
Posté le 12-03-2006 à 20:59:22  profilanswer
 

Il faut faire :
if [ -d "/home" ]; then
 echo "/home existe bien"
else
 echo "existe pas"
fi

n°1324008
Sve@r
Posté le 13-03-2006 à 10:16:43  profilanswer
 

Willits a écrit :

Donc, j'ai lus qu'il existait la commande test, mais je ne sais pas comment récupérer son résultat.


 
La commande "test" (qu'on peut aussi écrire "[ ... ]" sert à tester toute sorte d'égalité, inégalités, caractéristiques diverses sur les fichiers dans Unix (et systèmes apparentés)
 
Son principe est de ne rien afficher (sauf s'il y a une erreur de syntaxe) mais de stocker le résultat du test dans la variable "$?" (qui sert à indiquer l'état final d'une commande => 0 = OK, , not(0) = pas ok).
 
Donc le premier moyen de se récupérer le résultat de la commande "test" est de le faire de cette manière:

test <quelque chose>
echo $?


Si on a "0", c'est que le test a réussi. Si on n'a pas 0, c'est que le test a échoué.
 
Ensuite, comme l'a dit sod4, on peut inclure le test dans une alternative "if" qui permet, en fonction du résultat du test, de se brancher sur un bloc "then" ou un bloc "else". Mais bien que dans 98% des cas on trouve des "if test" ou "if [ ... ]", rien n'oblige d'utiliser "test" dans un "if" (on peut très bien utiliser une autre commande que "test" après un "if" ) ou d'utiliser un "if" pour faire un "test" (on peut très bien faire un simple "test" et récupérer "$?" pour s'en servir ailleurs...)
 

Willits a écrit :

Car quand je lance "test -d /home" dans un terminal, rien n'est renvoyé, et pareil si le dossier n'existe pas.


Ne pas confondre "rien n'est renvoyé" et "rien ne s'affiche"...
 

Willits a écrit :

j'ai besoin de savoir si un fichier ou un dossier existe.


test -d => teste l'existence d'un dossier (un fichier de type "d" )
test -f => teste l'existence d'un fichier (fichier de type "-" )
test -L => teste l'existence d'un lien symbolique (fichier de type "l" )
test -s => teste l'existence d'un socket (fichier de type "s" )
test -b => teste l'existence d'un fichier I/O en mode bloc (fichier de type "b" )
test -c => teste l'existence d'un fichier I/O en mode caractère (fichier de type "c" )
test -e => teste l'existence d'un fichier quel que soit son  
type mais ne fonctionne qu'en bash. Pour faire pareil en "sh" (vieux Unix), il faut faire  
"ls -d <fichier> 1>/dev/null 2>&1"
 
Petit danger => "test -d" sur un lien symbolique vers un dossier renvoie "vrai" (le test s'applique sur la cible du lien et non sur le lien lui-même). Si on veut tester que le fichier est un vrai répertoire, il faut faire un test de ce type

test -d dossier -a ! -L dossier


 
Cours complet et en français de shell ici: http://fr.lang.free.fr/cours/Shell_v1.4.pdf


Message édité par Sve@r le 13-03-2006 à 10:27:06

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Comment tester si un dossier existe ?

 

Sujets relatifs
Taille d'un dossier sur le réseau[PAK] existe t-il un pak pour phpBB avec les smileys HFR
SQL Server: priorité entre transactions, ça existe ?ouvrir un dossier depuis un intranet
Tester si variable est NULL ? [résolu][Tester differents shape entre eux ] : probleme
Probleme avec Coppermine (dossier auquel je n'est plus acces...)FCKeditor 2.2 upload problème de dossier
Tester une montée en charge sur MysqlUpload: variable du dossier de destination [RESOLU]
Plus de sujets relatifs à : Comment tester si un dossier existe ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR