El método para obtener el nombre del archivo de la ruta en el sistema Linux

  

Este artículo presenta principalmente el método para obtener el nombre del archivo de la ruta en el sistema Linux. El texto resume dos, y los amigos que lo necesitan pueden consultar el

El código es el siguiente:

[[email protected]] #basename /root/aaa/bbb/dabu.txt

Pantalla:

El código es el siguiente:

dabu.txt #Obtener el nombre de archivo de la ruta

¿Cómo obtener la ruta del archivo de script en el script de shell?

Método 1:

El código es el siguiente:

[[email protected]] #DIR = $ (cd " $ (dirname " $ 0 ") "; pwd)

[[email protected]] #echo $ DIR

Pero como este nombre de directorio " $ 0 " de esta manera, obtendrás el resultado incorrecto cuando encuentres el comando fuente.

Método 2:

El código es el siguiente:

[[email protected]] #echo " $ (cd " $ (dirname " $ {BASH_SOURCE [0 ]} ") " &&pwd) "

La línea de comandos anterior puede obtener el diámetro absoluto de la rueda del script, sin importar dónde lo llame.

Pero si tienes un enlace blando, no puedes usarlo. Por lo tanto, para analizar correctamente el enlace flexible al script, podemos usar los siguientes comandos de varias líneas:

El código es el siguiente:

SOURCE = " $ {BASH_SOURCE [0]} " < Br>

mientras que [-h " $ SOURCE "]; resuelve # SOURCE hasta que el archivo ya no sea un enlace simbólico

DIR = " $ (cd -P " $ (dirname " $ SOURCE ") " &&pwd) "

SOURCE = " $ (enlace de lectura " $ SOURCE ") "

[[$ SOURCE! = /* ]] &&SOURCE = " $ DIR /$ SOURCE " # si $ SOURCE era un enlace simbólico relativo, debemos resolverlo con relación a la ruta donde se ubicó el archivo de enlaces simbólicos

hecho

DIR = " $ (cd -P " $ (dirname " $ SOURCE ") " &&pwd) "

también se puede utilizar con el comando source, bash -c. Br>

Sin embargo, si usa cd para cambiar a otro directorio en el script, el comando anterior no esperará el resultado correcto al ejecutar el fragmento de comando anterior. Vea el artículo sobre la trampa $ CDPATH. Para entender cómo funciona, puede ejecutar el siguiente código:

El código es el siguiente:

#! /Bin /bash

SOURCE = " $ {BASH_SOURCE [0 ]} "

while [-h " $ SOURCE "]; do # resolver $ SOURCE hasta que el archivo ya no sea un enlace simbólico

TARGET = " $ (readlink " $ FUENTE ") "

si [[$ FUENTE == /*]]; entonces

echo " FUENTE '$ FUENTE' es un enlace simbólico absoluto a '$ TARGET' " < Br>

SOURCE = " $ TARGET "

else

DIR = " $ (dirname " $ SOURCE ") "

echo " SOURCE '$ SOURCE' es un enlace simbólico relativo a '$ TARGET' (relativo a '$ DIR') "

SOURCE = " $ DIR /$ TARGET " # si $ SOURCE era un enlace simbólico relativo, necesitamos Para resolverlo en relación con la ruta donde se encuentra el archivo de enlace simbólico

fi

hecho

echo " FUENTE es '$ FUENTE' "

RDIR = " $ (dirname " $ SOURCE ") "

DI R = " $ (cd -P " $ (dirname " $ SOURCE ") " &&pwd) "

if [" $ DIR "! = &Quot; $ RDIR " ]; luego

echo " DIR '$ RDIR' se resuelve en '$ DIR' "

fi

echo " DIR es '$ DIR' " < Br>

Copyright © Conocimiento de Windows All Rights Reserved