Pourquoi mon `ls $1` ne fonctionne pas ???

Pourquoi mon `ls $1` ne fonctionne pas ??? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-09-2004 à 01:47:28    

Code :
  1. for list in `find $1 -exec echo \"{}\" \;`  #je rajoute des double quote pour les fichier/rep ayant un espace
  2. do
  3.         echo "list ==> $list  :"; 
  4.         tmp=`ls $list`
  5.         echo "$tmp";
  6.         # echo "$tmp" | read droits saispas owner group taille mois jour heure nomfichier
  7.         #echo "fichier : $list  proprio : $owner  group : $group" >> list
  8. done


 
 
echo "list ==> $list  :" ==> fonctionne parfaitement  
c'est au niveau de echo "$tmp"; que ca bloque ...
 
 

Code :
  1. $ ./droit /home/weed/Documents/prog/
  2. list ==> "/home/weed/Documents/prog/"  :
  3. ls: "/home/weed/Documents/prog/": No such file or directory
  4. list ==> "/home/weed/Documents/prog/test.c"  :
  5. ls: "/home/weed/Documents/prog/test.c": No such file or directory
  6. list ==> "/home/weed/Documents/prog/test"  :
  7. ls: "/home/weed/Documents/prog/test": No such file or directory


 
et pourtant quand je fais a la main  

Code :
  1. ls "/home/weed/Documents/prog/authentif/protoclient_auth.h"

cela fonctione parfaitement.


Message édité par weed le 16-09-2004 à 10:55:45
Reply

Marsh Posté le 16-09-2004 à 01:47:28   

Reply

Marsh Posté le 16-09-2004 à 10:42:13    

je pense que faire un eval "ls \"$f\"" devrait marcher avec $f contenant le nom du fichier sans quotes

Reply

Marsh Posté le 16-09-2004 à 11:08:46    

fguilleme a écrit :

je pense que faire un eval "ls \"$f\"" devrait marcher avec


 
"$f contenant le nom du fichier sans quotes"
=> tu vaudrait dire qu'il ne faut plus que je mette le exec ? :find $1 -exec echo \"{}\" \;
 
 
je pense que faire un eval "ls \"$f\"" => oki j'essairais tmp=`"ls \"$f\""` pour voire

Reply

Marsh Posté le 16-09-2004 à 11:23:00    

non oublie le exec
for list in *  
do  
  tmp=$(eval ls \"$list\" ) ou `eval ....`  
  echo $tmp
done

Reply

Marsh Posté le 16-09-2004 à 12:55:59    

Je ne suis pas sous linux en ce moment mais je suis tres septique la.  
 
 
Je lance mon script : "droit /home/weed/Document"
Mon find me permettait de lister fichier et repertoire avec leur chemin à partir de "/home/weed/Document"
 
et apres en réalité, j'aimerais faire un ls -ld pour faire apparaitre, droit, autheur, group, ..... et le nom du fichier. C'est pour cette raison que par la suite j'aimerais redirgé le flux vers un read et ainsi affecté ds chaque variable, droit, .....
 
 
 
Tu utilise l'étoile, (for list in *). Je crois que ca liste les arguments que l'on passe au script.  
 

Reply

Marsh Posté le 16-09-2004 à 13:17:33    

ça expande simplement. C'est comme un ls mais plus rapide. Si tu veux plus de controle comme les dates ou des permissions, utilise find.
Pour obtenir les infos sur un fichier utilise stat.

Reply

Marsh Posté le 16-09-2004 à 14:53:41    

oki oki ca a l'air pas mal du tout  
dt stats vraiment genial. J'ai compris comment utiliser stats en C mais la je suis plutot partit bash,  
et sous bash je ne vois pas comment je pourrais exploiter les codes formats de stats  
 
je pensais utiliser les codes formats avec un printf et apres les affectés dans une variable mais je n'arrive pas afficher le proprio :
 

Code :
  1. [weed@localhost weed]$ printf "usuername => %U",stat CLIENT1.C
  2. bash: printf: `U': invalid format character

Reply

Marsh Posté le 16-09-2004 à 15:02:20    

utlise l'option format de stat  
stat -format=%U fichier te donne l'owner. C'est pas pour printf

Reply

Marsh Posté le 16-09-2004 à 15:40:00    

fguilleme a écrit :

utlise l'option format de stat  
stat -format=%U fichier te donne l'owner. C'est pas pour printf


j'ai ton truc, je vais pouvoir bien avancer ce soit  

Code :
  1. stat --format=%U CLIENT1.C


ne pas oublier de mettre 2 petit tiret avant format ;)
 
un tres tres grand merci pour cette fonction vraiment génial comme tout ...
j'allais vraiment me compliquer la vie avec les droits, je peux meme les avoir en octale. C'est vraiment genial, je me repete parce que tu me retire une épine du doight.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed