GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo convertir ... en nombres de ruta a nombre absoluto en un script bash?

Prueba:

ABSOLUTE_PATH=$(cd /home/nohsib/dvc/../bop; pwd)

Lo que estás buscando es readlink :

absolute_path=$(readlink -m /home/nohsib/dvc/../bop)

Tenga en cuenta: Necesitas usar readlink de GNU implementación que ofrece la opción "-m". readlink de BSD por ejemplo, no.


Si desea hacerlo sin seguir ningún enlace simbólico, intente usar realpath con opción -s :

$ realpath -s /home/nohsib/dvc/../bop
/home/nohsib/bop

Tenga en cuenta que con realpath , normalmente deben existir todos menos el último componente. Entonces, para que lo anterior funcione, todo lo siguiente debe estar presente en el sistema de archivos:

/home
/home/nohsib
/home/nohsib/dvc

Pero puede omitir ese requisito usando el -m opción.

$ realpath -sm /home/nohsib/dvc/../bop
/home/nohsib/bop

(Nota realpath no está disponible en todos los sistemas, especialmente en los sistemas más antiguos que no son Debian. Para aquellos que trabajan en Linux embebido, lamentablemente Busybox realpath no es compatible con -s o -m interruptores.)


Un problema con el uso:

ABSOLUTE_PATH=$(cd ${possibleDirectory}; pwd)

es que si ${possibleDirectory} no existe, ABSOLUTE_PATH se establecerá en el directorio actual. Lo cual probablemente NO es lo que quieres o esperas.

Creo que usar esta versión puede ser más deseable en general:

ABSOLUTE_PATH=$(cd ${possibleDirectory} && pwd)

Si ${possibleDirectory} no existe o no es accesible debido a la falta de permisos de acceso al directorio, ABSOLUTE_PATH contendrá la cadena vacía.

La ventaja de esto es que luego puede probar la cadena vacía o dejar que falle naturalmente, según las circunstancias. La configuración predeterminada del directorio actual en el caso de un comando 'cd' fallido puede generar resultados muy inesperados y posiblemente desastrosos (por ejemplo, rm -rf "$ABSOLUTE_PATH" )


Linux
  1. ¿Cómo depurar un script Bash?

  2. ¿Cómo establecer parámetros cuando Pipe Bash Script to Bash?

  3. ¿Cómo resaltar los scripts de Bash en Vim?

  4. ¿Cómo pasar parámetros a un script Bash?

  5. ¿Cómo obtener la ruta completa de un archivo?

Cómo escribir un script Bash con ejemplos

Cómo ejecutar un script Bash

¿Cómo verifico la sintaxis de un script Bash sin ejecutarlo?

Agregue un script bash a la ruta

¿Cómo ejecutar un script bash?

¿Cómo ejecutar un script bash a través de una ruta absoluta?