Quel est le meilleur moyen pour savoir le nom d'un fichier pointé par un lien ?
Par Flyounet le jeudi 27 mai 2010, 23:54 - Documentations - Lien permanent
Vaste question qui ne me semble reposer que sur 3 réponses :
- L'utilisation de
stat, - L'utilisation de
file, - L'utilisation de
readlink.
Utilisons stat :
fly@Capote:~/tmp$ stat /tmp/totoz File: `/tmp/totoz' -> `/tmp/pipo' Size: 40 Blocks: 0 IO Block: 4096 lien symbolique Device: 808h/2056d Inode: 3744 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ fly) Gid: ( 1000/ fly) Access: 2010-05-27 23:42:00.590730266 +0200 Modify: 2010-05-26 23:34:46.978029853 +0200 Change: 2010-05-26 23:34:46.978029853 +0200
On constate que le nom du fichier pointé est indiqué en première ligne. Donc, la ligne suivante devrait suffire :
fly@Capote:~/tmp$ a="$(stat /tmp/totoz | head -1 | awk '{print $NF}')" ; echo ${a}
`/tmp/pipo'
C'est bien mais pas top avec les quotes, d'où l'astuce suivante :
fly@Capote:~/tmp$ i=${#a}; echo ${a:1:(($i-2))}
/tmp/pipo
Utilisons file :
fly@mst:~/tmp$ file /tmp/totoz /tmp/totoz: symbolic link to `/tmp/pipo'
On constate maintenant qu'une seule ligne est retournée, mais il y a toujours ce problème de quotes. Donc, on résout de la même manière :
fly@mst:~/tmp$ a="$(stat /tmp/totoz | awk '{print $NF}')" ; echo ${a}
`/tmp/pipo'
fly@mst:~/tmp$ i=${#a}; echo ${a:1:(($i-2))}
/tmp/pipo
Utilisons readlink :
fly@Capote:~/tmp$ readlink /tmp/totoz /tmp/pipo
Bon, ben voilà; finalement je le préfère ce petit readlink (et de loin)...
Commentaires
sac louis vuitton Pas Cher If you want to catch up to the latest vogue, having Louis Vuitton Handbags of the latest styles can absolutely satisfy you.Just visit LV outlet webpage and select the most suitable products for yourself.louis vuitton sacs Consequently, we can know that there are few famous manufacturers that will meet all of the demands, especially the Louis Vuitton Online factory.