Tutoriales

Obtenga la ruta absoluta de un script en Bash

Una ruta es una ubicación a un directorio o archivo. Hay dos tipos diferentes de rutas en Linux: absolutas y relativas. La ruta relativa se determina utilizando el directorio de trabajo actual. Por otro lado, la ruta absoluta es la ruta completa a un archivo o directorio. En particular, se especifica la ruta completa desde el directorio raíz. Una manera fácil de recordar esto es usar /. Una ruta relativa no comienza con / (la carpeta raíz). En este tutorial aprenderemos a obtener la ruta absoluta de un script en Bash.

camino absoluto

Primero, creemos un directorio simple, subdirectorios y archivos.

En este ejemplo, si LinuxHint es nuestro directorio de trabajo actual, la ruta absoluta del archivo script.sh es:

/pueblo natal/Kalyani/escritorio/LinuxNota/proyecto2/script.sh

Nuestro camino relativo es:

Lo que puede notar aquí es que para obtener el archivo llamado script.sh, si tenemos una ruta absoluta, podemos obtenerlo desde cualquier parte del ecosistema de Linux. Nuestro camino relativo no es tan flexible; por otro lado, depende del directorio de trabajo actual. En el caso anterior, si estuviéramos en el directorio LinuxHint y fuera nuestro directorio de trabajo actual, para acceder a script.sh tendríamos que teclear Project2/script.sh. Tenga en cuenta que no hay / al comienzo de la ruta relativa.

Nuestro objetivo es recuperar la dirección completa o la ruta completa (ruta absoluta) del script dada una ruta relativa.

Leer enlace

Un comando que puede usar para capturar la dirección completa de un archivo o ejecutable es readlink. Readlink se usa normalmente para capturar la ruta de un enlace simbólico o un archivo canónico. Sin embargo, readlink también puede calcular la ruta absoluta a partir de una ruta relativa. En todos los casos, debe agregar una bandera para readlink. La bandera más utilizada en tales casos es la bandera f.

Ejemplo #1 – Enlace de lectura con la bandera f

script.sh
#!/bin/bash

sendero=’enlace de lectura -F «${BASH_FUENTE:-$0}”’

DIR_PATH=’nombre de soltera $ruta

eco ‘El camino absoluto es’ $ruta
eco ‘—————————————————————————-‘
eco ‘La ruta del directorio es’ $DIR_PATH

Por lo general, se usa $0 para obtener la ruta del script; Sin embargo, esto no siempre funciona. Una forma más confiable o sólida de obtener la ruta relativa del script es usar ${BASH_SOURCE:-$0}.

Digamos que escribo echo ${BASH_SOURCE:-$0}, el resultado es ./script.sh. Esta es la ruta no absoluta a nuestro archivo de script actual. Es decir, la ubicación del script ejecutado se almacena en ${BASH_SOURCE:-$0}.

Una vez que hayamos recuperado de manera confiable la ruta del script, podemos pasarlo a readlink usando el indicador f. Luego podemos usar el comando dirname para obtener la ruta del directorio. El comando dirname omite el último valor de la ruta y devuelve el resto.

Entonces, si tenemos una ruta de /home/kalyani/Desktop/LinuxHint/Project2/script.sh y le aplicamos dirname, obtenemos /home/kalyani/Desktop/LinuxHint/Project2. Esto eliminó el nombre base o el nombre del script de la dirección o la ruta.

camino real

Otro comando que se puede usar es realpath. Realpath es un comando de Linux que se utiliza para imprimir el nombre de archivo absoluto resuelto. Requiere que todos los componentes excepto el último componente estén presentes.

script.sh
#!/bin/bash

sendero=$(verdadero camino»${BASH_FUENTE:-$0})
eco ‘El camino absoluto es’ $ruta

eco ‘————————————————–‘

DIR_PATH=$(nombre de soltera $ruta)
eco ‘La ruta del directorio es’ $DPATH

De nuevo, obtenemos la ruta del script con ${BASH_SOURCE:-$0}. Realpath obtiene la ruta completa por usted y dirname obtiene todos menos el último valor de la ruta absoluta.

Alternativa #1

Ahora suponga que no tiene el privilegio de usar realpath o readlink. ¡No viene con todos los sistemas Linux! Tuve la suerte de haber usado Ubuntu y, por lo tanto, pude acceder a él. Sin embargo, un largo camino para hacer lo mismo es el siguiente:

script.sh
#!/bin/bash

DIR_PATH=$(CD ps(nombre de soltera «${BASH_FUENTE:-$0}) && personas con discapacidad)

sendero=$DIR_PATH/ps(nombre base «${BASH_FUENTE:-$0})

eco ‘El camino absoluto es’ $ruta
eco ‘————————————————- ——‘
eco ‘La ruta del directorio es’ $DIR_PATH

En este caso, primero necesitamos la ruta del script actual y, a partir de ahí, usamos dirname para obtener la ruta del directorio del archivo del script. Una vez que tengamos eso, hacemos cd en la carpeta e imprimimos el directorio de trabajo. Para obtener la ruta completa o absoluta, agregamos el nombre base del archivo de script a la ruta del directorio o $DIR_PATH.

Obtener la ruta de otro script (que no sea uno mismo)

En los ejemplos anteriores, recuperamos las rutas absolutas y de directorio del propio archivo de script. ¿Qué pasa si queremos obtener las rutas absolutas y las rutas de directorio de un archivo que no sea el script en el que estamos trabajando (que no sea uno mismo)?

Así que aquí hemos creado un nuevo archivo llamado script2.sh y queremos obtener las rutas absolutas y de directorio de script2.sh.

En secuencia de comandos.sh:

script.sh
#!/bin/bash

sendero=$(ruta real script2.sh)
eco ‘El camino absoluto es’ $ruta

eco ‘————————————————–‘

DIR_PATH=$(nombre de soltera $ruta)
eco ‘La ruta del directorio es’ $DPATH

Cualquiera de los métodos anteriores debería funcionar aquí también. Sin embargo, aquí usamos la ruta relativa de script2.sh para obtener la ruta absoluta.

Obtener la ruta de un comando

Ahora puede obtener las rutas absolutas y de directorio de todos los scripts y comandos que desee. Supongamos por un momento que queremos obtener las rutas absolutas y de directorio del comando ls. Escribiríamos:

script.sh
#!/bin/bash

sendero=$(Cual ls)
eco ‘El camino absoluto es’ $ruta

eco ‘————————————————–‘

DIR_PATH=$(nombre de soltera $ruta)
eco ‘La ruta del directorio es’ $DIR_PATH

Una ruta es una dirección utilizada para encontrar un archivo o una carpeta. Una ruta absoluta es una dirección o ubicación completa para que pueda obtener el archivo que desea sin importar dónde se encuentre. Por otro lado, se determina una ruta relativa relacionada con el directorio de trabajo actual. Hay varias formas en Bash de obtener la dirección completa de un script. Específicamente, podemos usar realpath, readlink o incluso crear nuestro pequeño script personalizado. Si queremos conocer la ruta del directorio, podemos usar el comando dirname en nuestro script bash para obtener nuestra ruta del directorio. Es bastante fácil obtener la dirección completa con una dirección relativa.

¡Feliz codificación!

LEER  Tutorial de Burp Suite: Potente escaneo de vulnerabilidades con extensiones de Burp Suite

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba