Tester l'accès à un fichier en bash

gnugo Messages postés 145 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Y a t-il un moyen de tester l'accès à un fichier en bash ?

J'ai un script qui travaille sur une liste de fichiers et j'aimerais qu'il me dise :
Si le fichier existe
Si le fichier existe mais est illisible
Si le fichier n'existe pas
Si il ne peut pas le déterminer car un problème de droit l'en empêche, par exemple un dossier sans le droit d'exécution qui permet de le parcourir


Merci d'avance
A voir également:

1 réponse

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
0
gnugo Messages postés 145 Date d'inscription   Statut Membre Dernière intervention   46
 
Salut,

Je reformule ma question : dois-je décomposer chaque chemin et tester tous les sous-dossiers un par un ?
Un test -r ou test -f ça me renvoie le même résultat

En fait je n'arrive pas à différencier le cas où le fichier n'existe pas et le cas où on ne sait pas car il manque le droit 'x' dans un dossier. Donc je me suis dit : seule solution faire un stat sur le/les dossiers pour déterminer avant si on a les droits ou pas.
Mais ça me parait un peu lourd donc je viens demander ici s'il n'y a pas une solution plus simple, un simple test sur le dossier qui pourrait me dire nativement qu'il n'a pas l'accès ?

Je vois comment faire mais pas en un seul coup
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Je reformule ma question :
Tu fais bien, j'étais à 100000 lieues ;-(

Donc je me suis dit : seule solution faire un stat sur le/les dossiers pour déterminer avant si on a les droits ou pas. Mais ça me parait un peu lourd
Ben non, si tu as les droits tu continues, sinon tu sors... je ne vois pas où est la lourdeur là-dedans ;-\
0
gnugo Messages postés 145 Date d'inscription   Statut Membre Dernière intervention   46
 
Oui ça va encore, juste que je me disais qu'il y avait peut être une fonction pour le faire proprement en une commande comme c'est quelque chose qui doit revenir souvent

Surtout que je suis sur HP-UX et donc j'ai pas stat :-)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
on peut utiliser perl pour remplacer stat
$ ls -ln
---x-w--wx 1 1000 1000 0 2014-07-28 13:02 a
---xrwx--x 1 1000 1000 0 2014-07-28 13:02 b
$ perl -e ' printf "%o\n" ,(stat($ARGV[0]))[2] & 07777' a
123
$ perl -e ' printf "%o\n" ,(stat($ARGV[0]))[2] & 07777' b
171
0