Pour obtenir le chemin complet, utilisez :
readlink -f relative/path/to/file
Pour obtenir le répertoire d'un fichier :
dirname relative/path/to/file
Vous pouvez également combiner les deux :
dirname $(readlink -f relative/path/to/file)
Si readlink -f
n'est pas disponible sur votre système, vous pouvez utiliser cette option. * :
function myreadlink() {
(
cd "$(dirname $1)" # or cd "${1%/*}"
echo "$PWD/$(basename $1)" # or echo "$PWD/${1##*/}"
)
}
Notez que si vous avez seulement besoin de vous déplacer vers un répertoire d'un fichier spécifié comme un chemin relatif, vous n'avez pas besoin de connaître le chemin absolu, un chemin relatif est parfaitement légal, donc utilisez simplement :
cd $(dirname relative/path/to/file)
si vous souhaitez revenir (pendant que le script est en cours d'exécution) au chemin d'origine, utilisez pushd
au lieu de cd
y popd
lorsque vous avez terminé.
* Alors que myreadlink
ci-dessus est suffisamment bonne dans le contexte de cette question, elle présente certaines limites par rapport à l'objectif de l'UE. readlink
outil suggéré ci-dessus. Par exemple, il ne suit pas correctement un lien vers un fichier dont les caractéristiques sont différentes. basename
.