Si un fichier est lié symboliquement à lui-même, il n'y a pas de données présentes et toute tentative d'y accéder entraînera une boucle, et finalement une erreur
par exemple
$ ls -l myfile
lrwxrwxrwx 1 sweh sweh 19 Sep 9 22:38 myfile -> /path/to/here/myfile
$ cat myfile
cat: myfile: Too many levels of symbolic links
Puisqu'il n'y a pas de données, la suppression de ces liens symboliques ne fera pas perdre de données, car il existe aucune donnée à conserver.
Si vous n'obtenez pas le Too many levels of symbolic links
erreur lorsque vous essayez de cat
le fichier alors votre fichier n'est pas un lien vers lui-même.
ln
ne sera jamais écraser un fichier avec un lien vers lui-même. Vous pouvez obtenir un fichier lié à lui-même avec :
$ ln -s `pwd`/myfile myfile
$ ls -l myfile
lrwxrwxrwx 1 grochmal users 25 Sep 10 03:41 myfile -> /home/grochmal/tmp/myfile
Mais si vous essayez avec un fichier contenant des données :
$ rm -f myfile
$ echo yay > myfile
$ ln -sf `pwd`/myfile myfile
ln: '/home/grochmal/tmp/myfile' and 'myfile' are the same file
ln
, en revanche, écrasera un fichier avec un lien vers un autre fichier.
Pourtant, vous pouvez être sûr qu'un lien vers lui-même est un fichier qui n'a jamais eu de données (ou qui a été explicitement supprimé avant la création du lien symbolique).
(sous Linux et en utilisant ln
à partir de coreutils
, c'est-à-dire)