Para obtener el uso de la ruta completa:
readlink -f relative/path/to/file
Para obtener el directorio de un archivo:
dirname relative/path/to/file
También puedes combinar los dos:
dirname $(readlink -f relative/path/to/file)
Si readlink -f
no está disponible en su sistema, puede usar esto * :
function myreadlink() {
(
cd "$(dirname $1)"
echo "$PWD/$(basename $1)"
)
}
Tenga en cuenta que si solo necesita moverse a un directorio de un archivo especificado como una ruta relativa, no necesita saber la ruta absoluta, una ruta relativa es perfectamente legal, así que use:
cd $(dirname relative/path/to/file)
si desea volver (mientras se ejecuta el script) a la ruta original, utilice en pushd
lugar de cd
y popd
cuando haya terminado.
* Si bien lo myreadlink
anterior es suficientemente bueno en el contexto de esta pregunta, tiene algunas limitaciones en relación con la readlink
herramienta sugerida anteriormente. Por ejemplo, no sigue correctamente un enlace a un archivo con diferente basename
.