OVH Cloud OVH Cloud

Lire un soft link

12 réponses
Avatar
jlaurens
Salut,

des fois on a l'impression d'être bête

comment récupérer dans un script bash le fichier pointé par un soft
link?

MDA

10 réponses

1 2
Avatar
Pascal Bourguignon
(Jérôme Laurens) writes:
des fois on a l'impression d'être bête

comment récupérer dans un script bash le fichier pointé par un soft
link?


Voir:
ls -ld $link
ou
find $link -ls

L'information que tu cherches est enregistrée dans le répertoire, c'est
donc avec des outils lisant les répertoires que tu peux l'obtenir!

--
__Pascal Bourguignon__ http://www.informatimago.com/
The world will now reboot; don't bother saving your artefacts.

Avatar
DominiX
ici même:1gn52xd.y7mh8x18t1w96N%,
Jérôme Laurens a écrit
Salut,

des fois on a l'impression d'être bête

comment récupérer dans un script bash le fichier pointé par un soft
link?

MDA



file toto


--
dominix -<

Avatar
Nicolas George
Pascal Bourguignon wrote in message
:
Voir:
ls -ld $link
ou
find $link -ls


Ce qui veut dire parser la sortie de ls, ce qui n'est pas terrible. C'est un
peu capilotracté, mais on _peut_ se retrouver dans une situation de ce
genre :

lrwxrwxrwx 1 cigaes cigaes 10 Nov 13 21:19 foo -> bar -> baz
lrwxrwxrwx 1 cigaes cigaes 3 Nov 13 21:19 foo -> bar -> baz
-rw-r--r-- 1 cigaes cigaes 0 Nov 13 21:19 foo -> bar -> baz

Le premier est un lien « foo » vers un fichier « bar -> baz », le second est
un lien « foo -> bar » vers « baz », le dernier est un fichier simple avec
un nom pénible.

GNU comporte la commande readlink, mais elle n'est pas standard Unix. Donc
selon les exigences de portabilité, ça peut être à considérer. Sinon, il y a
toujours perl : la fonction readlink.


L'information que tu cherches est enregistrée dans le répertoire, c'est
donc avec des outils lisant les répertoires que tu peux l'obtenir!


C'est plutôt dans l'inode que c'est stocké, en général, il me semble.

Avatar
Stephane Chazelas
2004-11-13, 17:03(+01), Pascal Bourguignon:
(Jérôme Laurens) writes:
des fois on a l'impression d'être bête

comment récupérer dans un script bash le fichier pointé par un soft
link?


Voir:
ls -ld $link
ou
find $link -ls

L'information que tu cherches est enregistrée dans le répertoire, c'est
donc avec des outils lisant les répertoires que tu peux l'obtenir!
[...]


?

Le chemin du fichier pointé par un symlink est stocké dans
l'inode du symlink, il faut donc utiliser stat(2). De quel
repertoire parles-tu ?

--
Stephane


Avatar
Stephane Chazelas
2004-11-13, 16:45(+01), Jérôme Laurens:
des fois on a l'impression d'être bête

comment récupérer dans un script bash le fichier pointé par un soft
link?
[...]


En utilisant un de:
- GNU stat
- GNU find
- zsh
- perl

par exemple.

--
Stephane

Avatar
Pascal Bourguignon
Stephane Chazelas writes:

2004-11-13, 17:03(+01), Pascal Bourguignon:
(Jérôme Laurens) writes:
des fois on a l'impression d'être bête

comment récupérer dans un script bash le fichier pointé par un soft
link?


Voir:
ls -ld $link
ou
find $link -ls

L'information que tu cherches est enregistrée dans le répertoire, c'est
donc avec des outils lisant les répertoires que tu peux l'obtenir!
[...]


?

Le chemin du fichier pointé par un symlink est stocké dans
l'inode du symlink, il faut donc utiliser stat(2). De quel
repertoire parles-tu ?


De rien, je disais n'importe quoi. La fatigue...

--
__Pascal Bourguignon__ http://www.informatimago.com/
The world will now reboot; don't bother saving your artefacts.



Avatar
Manu
Jérôme Laurens wrote:
Salut,

des fois on a l'impression d'être bête

comment récupérer dans un script bash le fichier pointé par un soft
link?


Sur une de mes machines j'ai la commande 'readlink'. une commande GNU du
paquetage coreutils...

Avatar
Cyrille Lefevre
"Jérôme Laurens" a écrit dans le message de
news:1gn52xd.y7mh8x18t1w96N%

comment récupérer dans un script bash le fichier pointé par un soft
link?



http://groups.google.fr/groups?q=%2Bcyrille+%2Blefevre+%2Bgetabsolutepath&hl=fr&lr
Cyrille Lefevre.
--
home: mailto:cyrille.lefevre% | UNIX is user-friendly
work: disponible sur le marche du travail ;-P | it's just particular
Supprimer "%no-spam" et ".invalid" pour me repondre. | about who it chooses
Remove "%no-spam" and ".invalid" to answer me back. | to be friends with.

Avatar
Stephane Chazelas
2004-11-13, 16:45(+01), Jérôme Laurens:
[...]
comment récupérer dans un script bash le fichier pointé par un soft
link?
[...]


Sur un system GNU, utiliser GNU find, sinon, utiliser perl ou
zsh (des fois on peut trouver une commande readlink). On
pourrait eventuellement utiliser ls -l mais pas de maniere
fiable en toute circonstance.

Pour resoudre un lien sympolique jusqu'a trouver un fichier qui
ne soit plus un lien:

get_real_path() {
(
file=$1 loops=0
while
case $file in
*[!/]/*) cd -P -- "${file%/*}" || return;;
/*) cd / || return;;
esac
[ -L "$file" ]
do
loops=$(($loops + 1))
if [ "$n" -gt 40 ]; then
echo >&2 "Too many symlinks"
return 1
fi
case $file in
-*) file=./$file;;
esac
file=$(find "$file" -prune -printf '%l.') || return
file=${file%.}
done
if [ -d "$file" ]; then
cd -P -- "$file" && pwd -P
else
dir=$(pwd -P && echo .) || return
dir=${dir%??}
case $dir in
/) printf '%sn' "/${file##*/}";;
*) printf '%sn' "$dir/${file##*/}";;
esac
fi
)
}

--
Stephane

Avatar
Nicolas George
Stephane Chazelas wrote in message
:
Sur un system GNU, utiliser GNU find, sinon, utiliser perl ou
zsh (des fois on peut trouver une commande readlink).


Sur un système GNU, on a readlink, ce serait bête de s'embêter avec find.

1 2