Как получить полный путь из "../" в командной строке в сценарии оболочки Linux - PullRequest
17 голосов
/ 24 октября 2011

Если у меня есть сценарий оболочки, где я получаю родительскую папку, используя «../», могу ли я как-то развернуть ее в абсолютный путь?

Ответы [ 4 ]

25 голосов
/ 24 октября 2011

Вы хотите readlink -f.

$ cd /tmp
$ readlink -f ..
/
4 голосов
/ 24 октября 2011

Использование realpath

$ realpath ..
/home
1 голос
/ 25 марта 2014

Несмотря на то, что вы часто можете получить полный путь к каталогу с помощью stat, вы также можете использовать pwd -P ... однако, это не сильно поможет, если вы на самом деле cd не перейдете к интересующему вас каталогу. .

Чтобы обойти это ограничение без фактического изменения текущего рабочего каталога, я считаю правильным просто запустить этот cd в субоболочке , например:

THIS=`dirname $0`     # Which is often "."
PARENT=$(
  cd $THIS            # At this point, we are sure we're in script's directory
  dirname `pwd -P`
)
echo "PARENT=$PARENT"
0 голосов
/ 02 января 2017

При использовании в строке cmd:

dirname $(pwd)

При использовании в сценарии оболочки:

PROJ_DIR=$(dirname $(pwd))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...