[LUG.ro] ln
Emiliano Gavilán
emilianogavilan en gmail.com
Jue Ago 27 12:14:47 ART 2009
On Wed, Aug 26, 2009 at 09:34:07PM -0300, Guillermo Ibanez wrote:
> Estimados, les comento un problema que tuve con el comando ln, quizás
> me puedan echar algunas luces.
>
> Estoy trabajando con unos archivos c++ y, dado que soy muy
> desordenado, he decidido valerme de ln para que el mismo archivo sea
> accesible desde distintos directorios (se que ese no es el camino
> indicado, pero no importa, no es el punto del mail).
>
> Básicamente, a un mismo archivo le hago links duros para evitar la
> multiplicidad de versiones en distintos proyectos.
>
> Daba la casualidad que estaba editando un archivo en un directorio y
> compilándolo (por desorden personal) en otro, pero al corregir los
> errores con el editor de textos seguía dándome esos mismos errores en
> el compilador.
>
> Me arriesgué, cerré el que estaba editando y lo abrí el del directorio
> en que estaba compilando, encontrando que en efecto dicho archivo no
> tenía realizados los cambios antes hechos.
>
> Yo entendìa que cuando, por ejemplo uno hace:
>
> ln archivoA archivoB
>
> tanto archivoA y archivoB eran dos entradas, de la misma jerarquía que
> apuntaban a un mismo archivo físico (al que originalmente apuntaba
> archivoA), pero después de esa experiencia comienzo a dudar.....
Es fácil de comprobar que es así usando la opción -i de ls:
emiliano en merlot:~$ touch archivoA
emiliano en merlot:~$ ls -i archivoA
318912 archivoA
emiliano en merlot:~$ ln -s archivoA archivoB
emiliano en merlot:~$ ls -i archivo*
318912 archivoA 318923 archivoB@
emiliano en merlot:~$ ln -f archivoA archivoB
emiliano en merlot:~$ ls -i archivo*
318912 archivoA 318912 archivoB
Como se vé, un link simbólico (-s) crea un archivo diferente
(diferente inodo) en el filesystem. Sin embargo un link duro
apunta al mismo inodo, por lo tanto al mismo contenido en disco.
Más pistas:
emiliano en merlot:~$ ls -l > archivoA
emiliano en merlot:~$ md5sum archivoA
49091ca775856337b9138aa37e297a83 archivoA
emiliano en merlot:~$ md5sum archivoB
49091ca775856337b9138aa37e297a83 archivoB
emiliano en merlot:~$ ls -l >> archivoB
emiliano en merlot:~$ md5sum archivoB
567061a5c7f087d5d743b3dfb7360e06 archivoB
emiliano en merlot:~$ md5sum archivoA
567061a5c7f087d5d743b3dfb7360e06 archivoA
por lo que archivoA y archivoB tienen siempre el mismo contenido.
Saludos
Emiliano
Más información sobre la lista de distribución Lugro