Cómo comprobar si existe un enlace simbólico en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo determinar si un archivo en Linux es un enlace simbólico. Explorarás tres métodos diferentes para lograr esto.

Primero, utilizarás el comando test con la opción -L para comprobar programáticamente el tipo de archivo. Luego, verificarás la información del enlace examinando la salida del comando ls -l. Finalmente, aprenderás cómo resolver el archivo o directorio objetivo al que apunta un enlace simbólico utilizando el comando readlink.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/ln("Link Creating") subgraph Lab Skills linux/echo -.-> lab-558768{{"Cómo comprobar si existe un enlace simbólico en Linux"}} linux/test -.-> lab-558768{{"Cómo comprobar si existe un enlace simbólico en Linux"}} linux/ls -.-> lab-558768{{"Cómo comprobar si existe un enlace simbólico en Linux"}} linux/ln -.-> lab-558768{{"Cómo comprobar si existe un enlace simbólico en Linux"}} end

Probar enlaces simbólicos con test -L

En este paso, aprenderás cómo comprobar si un archivo es un enlace simbólico utilizando el comando test con la opción -L.

Un enlace simbólico (o symlink) es un tipo especial de archivo que apunta a otro archivo o directorio. Puedes pensar en él como un acceso directo en Windows. Cuando accedes a un enlace simbólico, en realidad estás accediendo al archivo o directorio al que apunta.

Primero, creemos un archivo sencillo. Asegúrate de estar en el directorio ~/project.

echo "This is the original file." > original_file.txt

Ahora, creemos un enlace simbólico a original_file.txt. Nombraremos el enlace simbólico my_symlink.

ln -s original_file.txt my_symlink
  • ln: El comando utilizado para crear enlaces.
  • -s: Esta opción le dice a ln que cree un enlace simbólico (en lugar de un enlace duro).
  • original_file.txt: El archivo objetivo al que apuntará el enlace simbólico.
  • my_symlink: El nombre del enlace simbólico que estamos creando.

Ahora, podemos utilizar el comando test para comprobar si my_symlink es un enlace simbólico. El comando test se utiliza para comprobar tipos de archivos y comparar valores. No produce salida directamente, pero su estado de salida indica éxito (0) o fracaso (distinto de cero).

Podemos combinar test con echo para ver el resultado.

test -L my_symlink && echo "my_symlink is a symbolic link" || echo "my_symlink is NOT a symbolic link"
  • test -L my_symlink: Esto comprueba si my_symlink es un enlace simbólico.
  • &&: Este es un operador lógico AND. Si el comando antes de && tiene éxito (estado de salida 0), se ejecuta el comando después de &&.
  • ||: Este es un operador lógico OR. Si el comando antes de || falla (estado de salida distinto de cero), se ejecuta el comando después de ||.

Dado que my_symlink es de hecho un enlace simbólico, la salida debería ser:

my_symlink is a symbolic link

Ahora, probemos un archivo normal, como original_file.txt:

test -L original_file.txt && echo "original_file.txt is a symbolic link" || echo "original_file.txt is NOT a symbolic link"

La salida debería ser:

original_file.txt is NOT a symbolic link

Esto confirma que test -L identifica correctamente los enlaces simbólicos.

Verificar enlaces con la salida de ls -l

En este paso, aprenderás cómo identificar enlaces simbólicos y sus destinos utilizando el comando ls -l.

El comando ls se utiliza para listar archivos y directorios. La opción -l proporciona un formato de "listado detallado", que incluye información detallada sobre cada archivo, como permisos, propietario, tamaño y fecha de modificación.

Cuando usas ls -l en un enlace simbólico, muestra el enlace en sí y también muestra a qué apunta.

Asegúrate de estar en el directorio ~/project donde creaste original_file.txt y my_symlink en el paso anterior.

Ahora, ejecuta el comando ls -l:

ls -l

Deberías ver una salida similar a esta:

total 4
-rw-rw-r-- 1 labex labex   25 Feb 28 10:00 original_file.txt
lrwxrwxrwx 1 labex labex   15 Feb 28 10:00 my_symlink -> original_file.txt

Desglosemos la salida para my_symlink:

  • El primer carácter l indica que se trata de un enlace simbólico. Para un archivo normal, este sería -.
  • Los permisos (rwxrwxrwx) a menudo se muestran como permisos completos para los enlaces simbólicos, pero los permisos reales están determinados por el archivo objetivo.
  • La cuenta de enlaces suele ser 1 para un enlace simbólico.
  • El propietario y el grupo son labex.
  • El tamaño (15) es el número de caracteres en la ruta del destino (original_file.txt).
  • La marca de tiempo es la fecha de creación o modificación del enlace simbólico en sí.
  • my_symlink: El nombre del enlace simbólico.
  • -> original_file.txt: Esta parte muestra claramente que my_symlink apunta a original_file.txt.

Compara esto con la salida para original_file.txt:

  • El primer carácter - indica que se trata de un archivo normal.
  • Los permisos (rw-rw-r--) muestran quién puede leer, escribir y ejecutar el archivo.
  • La cuenta de enlaces (1) indica cuántos enlaces duros apuntan a los datos de este archivo.
  • El tamaño (25) es el tamaño real del contenido del archivo en bytes.

Usar ls -l es una forma muy común de identificar rápidamente los enlaces simbólicos y ver a dónde apuntan.

En este paso, aprenderás cómo utilizar el comando readlink para encontrar el destino de un enlace simbólico.

Si bien ls -l es excelente para obtener una vista general visual, el comando readlink está específicamente diseñado para resolver enlaces simbólicos e imprimir su ruta de destino. Esto es especialmente útil en scripts o cuando solo necesitas la ruta de destino sin otra información del archivo.

Asegúrate de estar en el directorio ~/project.

Utiliza el comando readlink en el enlace simbólico my_symlink que creaste en los pasos anteriores:

readlink my_symlink

La salida será la ruta a la que apunta el enlace simbólico:

original_file.txt

Esto confirma que my_symlink en efecto apunta a original_file.txt.

El comando readlink tiene una opción útil, -f, que sigue recursivamente todos los enlaces simbólicos y los resuelve a la ruta absoluta del destino final. Esto es útil si tienes una cadena de enlaces simbólicos.

Creemos otro enlace simbólico que apunte a my_symlink:

ln -s my_symlink another_link

Ahora, si usas readlink en another_link sin la opción -f, mostrará el destino inmediato:

readlink another_link

Salida:

my_symlink

Pero si usas readlink -f en another_link, seguirá la cadena (another_link -> my_symlink -> original_file.txt) y te dará la ruta absoluta del destino final:

readlink -f another_link

Salida:

/home/labex/project/original_file.txt

Esto muestra la ruta completa al archivo original. El comando readlink -f es muy poderoso para encontrar el destino final de un enlace, incluso si está anidado dentro de otros enlaces.

Ahora has aprendido tres formas de trabajar con enlaces simbólicos: utilizando test -L para comprobar si un archivo es un enlace, utilizando ls -l para ver los detalles y destinos del enlace, y utilizando readlink para resolver la ruta de destino.

Resumen

En este laboratorio (lab), aprendiste cómo comprobar si un archivo es un enlace simbólico en Linux. Primero creaste un archivo normal y un enlace simbólico que apunta a él. Luego utilizaste el comando test con la opción -L para determinar de forma programática si un archivo dado es un enlace simbólico, observando cómo su estado de salida puede utilizarse con operadores lógicos (&& y ||) para mostrar un resultado.

También aprendiste cómo verificar visualmente un enlace simbólico utilizando el comando ls -l, que muestra una 'l' al principio del campo de permisos y muestra el destino del enlace. Finalmente, exploraste el comando readlink para resolver la ruta de destino de un enlace simbólico, comprendiendo su utilidad para la escritura de scripts y la automatización.