Um den vollständigen Pfad zu erhalten, verwenden Sie:
readlink -f relative/path/to/file
So rufen Sie das Verzeichnis einer Datei ab:
dirname relative/path/to/file
Sie können auch beide kombinieren:
dirname $(readlink -f relative/path/to/file)
Wenn readlink -f
es auf Ihrem System nicht verfügbar ist, können Sie Folgendes verwenden * :
function myreadlink() {
(
cd "$(dirname $1)"
echo "$PWD/$(basename $1)"
)
}
Beachten Sie, dass, wenn Sie nur in ein Verzeichnis einer Datei wechseln müssen, die als relativer Pfad angegeben ist, Sie den absoluten Pfad nicht kennen müssen. Ein relativer Pfad ist vollkommen legal. Verwenden Sie also einfach:
cd $(dirname relative/path/to/file)
Wenn Sie (während das Skript ausgeführt wird) zum ursprünglichen Pfad zurückkehren möchten, verwenden Sie pushd
anstelle von cd
und popd
wenn Sie fertig sind.
* Während das myreadlink
oben Gesagte im Zusammenhang mit dieser Frage gut genug ist, weist es einige Einschränkungen in Bezug auf das readlink
oben vorgeschlagene Tool auf. Zum Beispiel folgt es nicht richtig einem Link zu einer Datei mit einem anderen basename
.