OVH Cloud OVH Cloud

A propos des liens, symboliques ou non

1 réponse
Avatar
Dan
Bonjour,

J'essaie de bien comprendre les diff=E9rents syst=E8mes qui lient deu x
fichiers.

1/ Si je fais un lien ln a b
alors a et b se comportent de la m=EAme fa=E7on vis-=E0-vis de ce que
contenait l'espace disque sur lequel pointait a.
On n'a plus acc=E8s =E0 ce contenu =E0 partir du moment o=F9 j'aurai
effac=E9 et a, et b

2/ Si je fais un lien symbolique ln -s a b
alors b pointe simplement vers a.
Si j'efface a, b pointe dans le vide. Je n'ai plus acc=E8s au fichier.
Si j'efface b, a donne toujours acc=E8s aux m=EAmes informations.


MAIS :
3/ si a est un r=E9pertoire,
et que je fais un ln -s a b
et que a contient un fichier fa
Lorsque je fais un cd b, et que je liste les fichiers, je vois fa dans
la liste.
Le lien qui existe entre ~/a/fa et ~/b/fa n'est pas clair pour moi. Il
ne s'agit ni du lien =E9voqu=E9 en 1/, ni de celui =E9voqu=E9 en 2/,
puisque
le comportement d'effacement est celui de 1/ (si je fais un rm ~/a/fa
ou ~/b/fa, l'acc=E8s =E0 fa est impossible),
mais le total de l'inode de ~/a/fa, ou de ~/b/fa, est de 1 ...alors
qu'avec la m=E9thode 1, cela devrait donner 2.

Qu'est-ce que j'ai mal compris ?


Merci pour vos explications.

1 réponse

Avatar
Matthieu Moy
"Dan" writes:

3/ si a est un répertoire,
et que je fais un ln -s a b
et que a contient un fichier fa
Lorsque je fais un cd b, et que je liste les fichiers, je vois fa dans
la liste.
Le lien qui existe entre ~/a/fa et ~/b/fa n'est pas clair pour moi. Il
ne s'agit ni du lien évoqué en 1/, ni de celui évoqué en 2/,


C'est tout simplement le même fichier. Ton lien b pointe sur a, donc
quand tu fais « cd b », c'est pareil que de faire « cd a ».

A noter que si tu as

/xxx/yyy/a/
/zzz/ttt/b -> /xxx/yyy/a/

alors, le répertoire parent (..) de /zzz/ttt/b/ est /xxx/yyy/. A moins
que ton shell n'ai un comportement particulier, faire « cd
/zzz/ttt/b/ ; cd .. » t'ammenera dans /xxx/yyy/.

Autre complément : /zzz/ttt/b désigne le lien symbolique, et
/zzz/ttt/b/ (avec un '/' à la fin) désigne le répertoire pointé. Donc,
« rm -rf b » supprime le lien (et le -r ne sert à rien), alors que
« rm -fr b/ » supprime le contenu de répertoire.

--
Matthieu