Ya hemos discutido el comando ln, que le permite crear enlaces entre archivos. Pero también existen herramientas que te permiten resolver estos enlaces.
En este tutorial, discutiremos los conceptos básicos de realpath y enlace de lectura comandos que son similares (si no iguales) en el sentido de que muestran enlaces simbólicos resueltos en la salida. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en Ubuntu 18.04 LTS y en Debian 10.
Comandos de Linux realpath y readlink
Como ya se mencionó al principio, los comandos realpath y readlink muestran la ruta resuelta para los enlaces simbólicos en la salida.
La siguiente es 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
Los siguientes son algunos ejemplos de preguntas y respuestas que le darán una mejor idea de cómo funcionan estas herramientas.
P1. ¿Cómo resolver la ruta usando realpath y readlink?
Simple, solo proporcione el archivo o la ruta como entrada. El siguiente ejemplo muestra estos dos comandos resolviendo un enlace simbólico.
Y así es como funcionan con las rutas:
Para que pueda ver que ambos comandos resolvieron con éxito los enlaces simbólicos en los dos casos.
P2. ¿Cómo imprimir la ruta resuelta relativa a un directorio?
El comando realpath le permite hacer esto fácilmente. Por ejemplo, suponga que esto es lo que está tratando de hacer:
realpath /var/local/Downloadslink
Sin embargo, un requisito adicional es tener la salida de este comando relativa al directorio /home/himanshu. Luego, el siguiente es el comando que debe ejecutar:
realpath /var/local/Downloadslink --relative-to=/home/himanshu
Aquí está el resultado:
Downloads
Entonces puede ver que la opción '--relative-to' le permitió tener una salida relativa al directorio /home/himanshu.
P3. ¿Cómo simplemente deshacerse de .. en las rutas?
Puede haber ocasiones en las que expandir/resolver enlaces simbólicos no sea el objetivo, pero deshacerse de... en el camino sí lo es. El comando realpath le permite hacer esto.
Todo lo que tiene que hacer es usar la opción de línea de comando -s. He aquí un ejemplo:
realpath -s ../../var/local/Downloadslink
Y el siguiente es el resultado de este comando:
/var/local/Downloadslink
P4. ¿Cómo cambiar el carácter delimitador?
De forma predeterminada, la nueva línea se utiliza como carácter delimitador. Sin embargo, ambos comandos proporcionan una forma de tener NUL como delimitador.
La opción que debe usar en ambos casos es -z.
realpath -z [FILE/PATH]
readlink -z [FILE/PATH]
Conclusión
Lo que hemos discutido aquí es solo un puñado de opciones/características que proporcionan estos comandos. Una vez que haya terminado de practicar estos, diríjase a las páginas de manual de readlink y realpath (aquí y aquí) para obtener más información sobre estas herramientas.