Comando Linux realpath

Linux 命令大全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

$ realpath example.txt
/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

$ realpath /usr/bin/python
/usr/bin/python3.8

Ejemplo 3: Manejar rutas inexistentes

Ejemplo

$ realpath -m /nonexistent/path
/nonexistent/path

Ejemplo 4: Obtener la ruta relativa

Ejemplo

$ realpath --relative-to=/home/user /home/user/documents/file.txt
documents/file.txt

Ejemplo 5: Procesar múltiples archivos por lotes

Ejemplo

$ realpath file1.txt file2.txt dir/
/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

#!/bin/bash
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

path1=$(realpath "/path/to/link")
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

read -p "Ingrese la ruta del archivo: " user_path
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

# Debian/Ubuntu
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

# Obtener la ruta absoluta
readlink -f /path/to/file

# O bien
(cd /path/to/file && pwd -P)

Recomendaciones de mejores prácticas

  1. Utiliza siempre rutas absolutas en los scripts: evita problemas de rutas causados por cambios en el directorio de trabajo
  2. Normaliza primero las rutas al procesar la entrada del usuario: previene ataques de inyección de rutas
  3. Verifica si la ruta existe: utiliza la opción-epara asegurar que la ruta sea válida
  4. Considera el impacto de los enlaces simbólicos: determina claramente si es necesario resolver los enlaces simbólicos
  5. 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!


Linux 命令大全Manual completo de comandos Linux

Otras extensiones