Tutorial de comandos Linux readlink y realpath para principiantes (con ejemplos)

Ya hemos hablado del comando ln, que te permite crear enlaces entre archivos. Pero también existen herramientas que te permiten resolver estos enlaces.

En este tutorial, hablaremos de los fundamentos de los comandos realpath y readlink, que son similares (si no iguales) en el sentido de que muestran los enlaces simbólicos resueltos en la salida. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí expuestos han sido probados en Ubuntu y en Debian.

Comandos Linux realpath y readlink

Como ya hemos dicho al principio, los comandos realpath y readlink muestran la ruta resuelta de los enlaces simbólicos en la salida.

A continuación se muestra su sintaxis:

realpath [OPTION]... FILE...
readlink [OPTION]... FILE...

Y esto es lo que dicen sus respectivas páginas man:

Print the resolved absolute file name
print resolved symbolic links or canonical file names

A continuación se presentan algunos ejemplos de tipo Preguntas y Respuestas que te darán una mejor idea de cómo funcionan estas herramientas.

Q1. ¿Cómo resolver la ruta utilizando realpath y readlink?

Es sencillo, sólo tienes que introducir el archivo o la ruta. El siguiente ejemplo muestra estos dos comandos resolviendo un enlace simbólico.

resolver enlace utilizando realpath y readlink

Y así es como funcionan con las rutas:

resolver la ruta utilizando realpath y readlink

Así puedes ver que ambos comandos resolvieron con éxito enlaces simbólicos en los dos casos.

Q2. ¿Cómo imprimir la ruta resuelta relativa a un directorio?

El comando realpath te permite hacerlo fácilmente. Por ejemplo, supongamos que esto es lo que intentas hacer:

realpath /var/local/Downloadslink

Sin embargo, un requisito adicional es que la salida de este comando sea relativa al directorio /home/himanshu. Entonces el siguiente es el comando que necesitas ejecutar:

realpath /var/local/Downloadslink --relative-to=/home/himanshu

Aquí tienes la salida:

Downloads

Así puedes ver que la opción «–relativo-a» te ha permitido tener la salida relativa al directorio /home/himanshu.

Q3. ¿Cómo deshacerse de .. en las rutas?

Puede haber ocasiones en las que expandir/resolver enlaces simbólicos no sea el objetivo, pero sí lo sea deshacerse de .. en la ruta. El comando realpath te permite hacerlo.

Sólo tienes que utilizar la opción de línea de comandos -s. Aquí tienes un ejemplo:

realpath -s ../../var/local/Downloadslink

Y a continuación se muestra la salida de este comando:

/var/local/Downloadslink

Q4. ¿Cómo cambiar el carácter delimitador?

Por defecto, se utiliza la nueva línea como carácter delimitador. Sin embargo, ambos comandos proporcionan una forma de tener NUL como delimitador en su lugar.

La opción que debes utilizar en ambos casos es -z.

realpath -z [FILE/PATH]
readlink -z [FILE/PATH]

Conclusión

Lo que hemos comentado aquí son sólo un puñado de opciones/funciones que proporcionan estos comandos. Cuando hayas terminado de practicarlos, dirígete a las páginas man de readlink y realpath(aquí y aquí) para saber más sobre estas herramientas.

También te podría gustar...