Comando Linux realpath
Manual completo de comandos Linux
realpath es una herramienta práctica de línea de comandos en el sistema Linux, utilizada para resolver la ruta absoluta de archivos o directorios (la ruta absoluta se refiere a la ruta completa que comienza desde el directorio raíz /). Resuelve todos los enlaces simbólicos (symbolic links) y normaliza las referencias al.(directorio actual) y al..(directorio padre) en la ruta.
¿Por qué se necesita realpath?
En el trabajo diario, a menudo nos encontramos con las siguientes situaciones:
- Obtener la ruta absoluta de scripts o archivos de configuración
- Al manejar rutas que contienen enlaces simbólicos, saber la ubicación real a la que apuntan
- Normalizar las rutas ingresadas por el usuario, eliminando las referencias de rutas relativas
- Asegurar la precisión de las rutas en la programación de scripts
El comando realpath está diseñado precisamente para resolver estos problemas.
Sintaxis básica
realpath [选项] 文件或目录...
Explicación detallada de las opciones comunes
| Opción | Descripción |
|---|---|
-eo--canonicalize-existing |
Solo resuelve rutas que existen realmente (comportamiento predeterminado) |
-mo--canonicalize-missing |
Resuelve la ruta incluso si no existe |
-Lo--logical |
No sigue los enlaces simbólicos al resolverlos |
-Po--physical |
Sigue todos los enlaces simbólicos al resolverlos (comportamiento predeterminado) |
-qo--quiet |
Modo silencioso, no muestra mensajes de error |
--relative-to=DIR |
Devuelve la ruta relativa al directorio especificado |
--relative-base=DIR |
Solo normaliza la parte de la ruta dentro del directorio especificado |
-so--stripo--no-symlinks |
No expande enlaces simbólicos |
-zo--zero |
Separa la salida con el carácter NUL en lugar de saltos de línea |
Ejemplos de uso
Ejemplo 1: Obtener la ruta absoluta de un archivo
Ejemplo
/home/user/documents/example.txt
Ejemplo 2: Resolver enlaces simbólicos
Supongamos que/usr/bin/pythones un enlace simbólico que apunta a/usr/bin/python3.8:
Ejemplo
/usr/bin/python3.8
Ejemplo 3: Manejar rutas inexistentes
Ejemplo
/nonexistent/path
Ejemplo 4: Obtener la ruta relativa
Ejemplo
documents/file.txt
Ejemplo 5: Procesar múltiples archivos por lotes
Ejemplo
/home/user/file1.txt
/home/user/file2.txt
/home/user/dir
Escenarios de aplicación práctica
Escenario 1: Obtener la ruta absoluta del script actual en un script
Ejemplo
SCRIPT_PATH=$(realpath "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
echo "Directorio del script:$SCRIPT_DIR"
Escenario 2: Comparar si dos rutas apuntan al mismo lugar
Ejemplo
path2=$(realpath "/actual/path")
if [ "$path1" = "$path2" ]; then
echo "Las dos rutas apuntan al mismo lugar"
fi
Escenario 3: Normalizar las rutas ingresadas por el usuario
Ejemplo
normalized_path=$(realpath -m "$user_path")
echo "Ruta normalizada:$normalized_path"
Preguntas frecuentes
P1: ¿Cuál es la diferencia entre realpath y readlink?
readlinkreadlink se utiliza principalmente para leer el destino al que apunta un enlace simbólico, mientras querealpathrealpath ofrece una funcionalidad de resolución de rutas más completa, incluyendo el manejo de referencias de rutas relativas y la normalización del formato de las rutas.
P2: ¿Por qué mi sistema no tiene el comando realpath?
realpath es parte de GNU coreutils, pero algunas distribuciones de Linux reducidas pueden no tenerlo preinstalado. Puedes obtenerlo instalando el paquete coreutils:
Ejemplo
sudo apt install coreutils
# RHEL/CentOS
sudo yum install coreutils
P3: ¿Cómo implementar una funcionalidad similar en sistemas que no admiten realpath?
Se puede utilizar un comando combinado:
Ejemplo
readlink -f /path/to/file
# O bien
(cd /path/to/file && pwd -P)
Recomendaciones de mejores prácticas
- Utiliza siempre rutas absolutas en los scripts: evita problemas de rutas causados por cambios en el directorio de trabajo
- Normaliza primero las rutas al procesar la entrada del usuario: previene ataques de inyección de rutas
- Verifica si la ruta existe: utiliza la opción
-epara asegurar que la ruta sea válida - Considera el impacto de los enlaces simbólicos: determina claramente si es necesario resolver los enlaces simbólicos
- Maneja rutas que contienen caracteres especiales como espacios: envuelve siempre las variables de ruta entre comillas
Resumen
realpath es una herramienta de procesamiento de rutas simple pero potente, especialmente adecuada para la programación de scripts y la administración de sistemas. Después de estudiar este artículo, deberías haber dominado:
- Las funciones básicas y la sintaxis de realpath
- Los usos específicos de las diversas opciones
- Escenarios de aplicación práctica y códigos de ejemplo
- Métodos para resolver problemas comunes
- Mejores prácticas de uso
¡Ahora puedes comenzar a aplicar el comando realpath en tus proyectos, haciendo que el procesamiento de rutas sea más confiable y seguro!
Otras extensiones