Cómo desvincular un file enlazado a sí mismo sin destruir

No estoy seguro de cómo sucedió esto, pero tengo una serie de files que se han convertido en enlaces simbólicos a sí mismos. Parece probable que no haya forma de restaurar los files, pero espero que sí. Esto es lo que dice ls

lrwxrwxrwx 1 bob users 50 Sep 9 21:45 background.png -> /path/to/background.png 

Traté de desvincular uno de los files, pero desafortunadamente el file desapareció. También probé readlink. Readlink dice que la ruta al file es /path/to/background.png

Como dije, realmente no sé cómo sucedió esto. Estoy henetworkingando todos estos files de un administrador anterior. ¿Hay algún recurso?

    Si un file tiene enlaces simbólicos a sí mismo, entonces no hay datos presentes y cualquier bash de acceder dará como resultado un bucle y, finalmente, un error.

    p.ej

     $ 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 

    Como no hay datos, eliminar estos enlaces simbólicos no perderá ningún dato, porque no hay datos para preservar.

    Si no obtienes el error Too many levels of symbolic links cuando tratas de cat el file, entonces tu file no es un enlace a sí mismo.

    Nunca sobrescribirá un file con un enlace a sí mismo. Puede get un file vinculado a sí mismo con:

     $ ln -s `pwd`/myfile myfile $ ls -l myfile lrwxrwxrwx 1 grochmal users 25 Sep 10 03:41 myfile -> /home/grochmal/tmp/myfile 

    Pero si intenta con un file que contiene datos:

     $ rm -f myfile $ echo yay > myfile $ ln -sf `pwd`/myfile myfile ln: '/home/grochmal/tmp/myfile' and 'myfile' are the same file 

    ln cambio, sobrescribirá un file con un enlace a otro file.

    Sin embargo, puede estar bastante seguro de que un enlace a sí mismo es un file que nunca tuvo datos (o que se eliminó explícitamente antes de la creación del enlace de software).

    (en Linux y usando ln desde coreutils , eso es)