Чтобы получить полный путь использования:
readlink -f relative/path/to/file
Чтобы получить каталог файла:
dirname relative/path/to/file
Вы также можете объединить два:
dirname $(readlink -f relative/path/to/file)
Если readlink -f
недоступно в вашей системе, вы можете использовать это:
function myreadlink() {
(
cd $(dirname $1) # or cd ${1%/*}
echo $PWD/$(basename $1) # or echo $PWD/${1##*/}
)
}
Обратите внимание, что если вам нужно только перейти в каталог файла, указанного как относительный путь, вам не нужно знать абсолютный путь, относительный путь совершенно легален, поэтому просто используйте:
cd $(dirname relative/path/to/file)
, если вы хотите вернуться (во время работы скрипта) к исходному пути, используйте pushd
вместо cd
и popd
, когда вы закончите.