Если у меня есть оболочка script, где я получаю родительскую папку с помощью "../", могу ли я как-то расширить ее до абсолютного пути?
Как получить полный путь от "../" в командной строке в оболочке Linux script
Ответ 1
Вы хотите readlink -f
.
$ cd /tmp
$ readlink -f ..
/
Ответ 2
Используйте realpath
$ realpath ..
/home
Ответ 3
Хотя вы часто можете получить полный путь к каталогу с помощью stat
, вы также можете использовать pwd -P
... однако, это не очень помогает, если вы на самом деле cd
в интересующем вас каталоге.
Чтобы обойти это ограничение без фактического изменения текущего рабочего каталога, я нашел все, чтобы просто запустить этот cd
в под-оболочке, как в:
THIS=`dirname $0` # Which is often "."
PARENT=$(
cd $THIS # At this point, we are sure we're in script directory
dirname `pwd -P`
)
echo "PARENT=$PARENT"
Ответ 4
При использовании в строке cmd:
dirname $(pwd)
При использовании в оболочке script:
PROJ_DIR=$(dirname $(pwd))