Un enlace en Linux es un archivo especial que hace referencia a otro archivo o directorio. De esta forma, un archivo puede estar en varios sitios a la vez. Cuando se elimina el archivo original, se conserva el enlace al mismo. Esto puede provocar fallos y, en general, atascar el sistema.
Para empezar, vamos a explicar el método para comprobar que el fichero es realmente un enlace. Esto se hace convenientemente utilizando la utilidad ls
. Después, veremos tres métodos de eliminación, cada uno con sus propias peculiaridades.
Con la ayuda de ls
es conveniente ver información sobre el fichero. Para utilizar la utilidad, dale la opción -l
y especifica la ruta. Tomemos como ejemplo el fichero ~/symlinks/link_1
:
$ ls -l ~/symlinks/link_1
Puede comprobar si hay enlaces en todo un catálogo:
$ ls -l ~/symlin
Un archivo que no se necesita se marca con una flecha característica después de su nombre.
El comando rm
puede utilizarse para eliminar cualquier archivo del sistema de archivos de Linux, incluidos los enlaces. Es decir, es adecuado para nuestra tarea. Es importante mencionar aquí que el archivo o directorio original no se verá afectado como resultado de la eliminación del enlace.
En el terminal, ejecute el comando:
$ rm ~/symlinks/link_1
Además, para obtener información detallada sobre el procedimiento, añade la opción -v
al comando:
$ rm -v ~/symlinks/link_1
Además, puede comprobar si el enlace ha desaparecido del directorio. Para ello, utilice el comando ls
descrito anteriormente.
Ahora ya sabe cómo eliminar un enlace simbólico de Linux.
La utilidad unlink
está diseñada para eliminar ficheros del sistema de ficheros Linux. Sólo necesita especificar la ruta al enlace:
$ unlink ~/symlinks/link_1
Dentro del ámbito de la tarea que nos ocupa, rm y unlink funcionan de forma casi idéntica. Ahora pasemos al último método.
Con la ayuda del comando find
puedes buscar y eliminar enlaces en un directorio determinado. Esto significa que no necesitas usar ls
adicionalmente.
A diferencia de las dos opciones anteriores, tiene características bastante avanzadas, por ejemplo, establecer criterios de búsqueda. Pero la sintaxis tampoco es tan sencilla por este motivo.
Para buscar, es necesario especificar un directorio y algunos parámetros:
$ find ~/symlinks/ -type l -print
El parámetro -type l
es necesario para seleccionar sólo enlaces simbólicos, -print
para mostrar el nombre completo. Y con la ayuda de -maxdepth
puede especificar la profundidad de la búsqueda por directorios anidados. Si especifica 1, la búsqueda se realizará sólo en el directorio en sí, sin anexos:
$ find ~/symlinks/ -maxdepth 1 -type l -print
Una vez que haya muchos enlaces en el directorio, puede especificar un patrón de búsqueda para el comando find
. Como ejemplo, tomemos una situación en la que queremos encontrar sólo enlaces ocultos con una fecha de última modificación no superior a 30 días:
$ find ~/data/ -type l -name ".*" -mtime -30 -print
Se han añadido dos criterios
-name
- buscar por nombre
.-mtime
- por hora de modificación.Todos los enlaces encontrados se pueden borrar según el patrón especificado. Para ello -print
se sustituye por -delete
:
$ find ~/data/ -type l -name ".*" -mtime -30 -delete
Al final de la instrucción vamos a tratar la búsqueda y eliminación de enlaces rotos que no llevan a ninguna parte, por ejemplo, después de borrar el archivo o directorio original. El parámetro -xtype l
es adecuado para este propósito. -print
no es necesario para la salida:
$ find ~/broken_links/ -xtype l
Como resultado, todos los enlaces rotos se mostrarán en el terminal. Para eliminarlos, añada -delete
al final del comando:
$ find ~/broken_links/ -xtype l -delete
Esto completa las instrucciones para eliminar un enlace en Linux.