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 -fno 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 pushdlugar de cdy popdcuando haya terminado.
* Si bien lo myreadlinkanterior es suficientemente bueno en el contexto de esta pregunta, tiene algunas limitaciones en relación con la readlinkherramienta sugerida anteriormente. Por ejemplo, no sigue correctamente un enlace a un archivo con diferente basename.