Symlinking à un répertoire donne des résultats différents avec ls -l
selon que je ln -s dir
ou ln -s dir/
. Mais quelle est la vraie différence, et laquelle dois-je préférer pourquoi?
30
Il n'y a aucune différence. (Il y aurait une différence si la cible n'était pas un répertoire existant.)
La barre oblique finale aurait pu se terminer là - bas en raison de l' achèvement shell: avec une certaine configuration, ln -s tar
TabSpacelink
finalise à ln -s target/ link
.
foo -> bar/
alorsfoo/qux
est équivalent àbar//qux
. Bien que le titre de la question, formellement parlant, n'inclue pasfoo -> bar/
, j'examine également ce cas dans ma réponse.La seule chose à laquelle je peux penser est que cela vous "protège" de la suppression du répertoire et de la création d'un fichier.
La version avec la barre oblique se casse lorsque la cible est remplacée par un fichier.
la source
Question intéressante. J'ai fait un petit test:
Comme vous pouvez le voir, il n'y a pas de différence dans le nombre d'appels système (au moins pour ls) et les traces semblent très similaires. Cependant, ce n'est qu'un test de vidage et je ne suis pas sûr - il pourrait y avoir des différences.
la source
Votre question concerne vraiment le comportement du
ls
programme.1) Si vous faites
ls -l $dir
où $ dir est en fait un lien symbolique, vous obtenez des informations sur le lien symbolique.2) Si vous faites
ls -lL $dir
où $ dir est un lien symbolique vers un répertoire, vous obtenez des informations sur le répertoire cible.3) Si vous le faites
ls -l $dir/.
, le lien symbolique doit être suivi et fournit des informations sur le répertoire cible.4) Si vous le faites
ls -l $dir/
, les résultats peuvent être les mêmes que # 1 ou peuvent être les mêmes que # 3 selon la version dels
utilisée. J'étais habitué à une ancienne version de Solaris qui le faisait comme # 1 et j'ai été surpris par Linux qui le faisait comme # 3.Sans barre oblique si vous vous demandez si un nom de répertoire donné est un répertoire réel par rapport à un lien symbolique vers un répertoire.
Avec une barre oblique si vous êtes plus concerné par les fichiers du répertoire plutôt que par le répertoire lui-même.
la source