如何在Linux shell脚本中从"../"获取完整路径

18

如果我有一个使用"../"获取父文件夹的Shell脚本,我是否可以将其扩展为绝对路径?


据我所记,“pwd”命令可以显示当前工作目录的父级目录。 - weberik
@weberik:“打印工作目录” - Ignacio Vazquez-Abrams
哦,好的,我记错了,谢谢你的提示 :) - weberik
想法:与其使用谷歌,不如去Stack Overflow提问 :-) - Gyom
4个回答

25
你想要使用readlink -f命令。
$ cd /tmp
$ readlink -f ..
/

这是Linux的最佳答案。但是如果有人想知道,在OS X上不支持readlink -f命令。那么你可以使用cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P命令。 - jwfearn

4

使用realpath

$ realpath ..
/home

1

虽然您可以使用stat来获取目录的完整路径,但也可以使用pwd -P... 但是,除非您实际上cd到感兴趣的目录,否则这并没有多大帮助。

为了避免这种限制而不实际更改当前工作目录,我发现只需在子shell中运行该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"

1

在使用命令行时:

dirname $(pwd)

在使用 shell 脚本时:

PROJ_DIR=$(dirname $(pwd))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接