弄清楚非符号链接路径是什么?

弄清楚非符号链接路径是什么?

在 Linux 上,如果我使用 cd 四处移动并现在位于一个目录中,如果我没有使用符号链接到达该目录,有没有办法找出该目录的真实路径?

考虑:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5

或者:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4 4
$ cd 4/5
$ pwd 
/home/dave/tmp/4/5

有什么方法可以确定 /home/dave/tmp/5 实际上是 /home/dave/1/2/3/4/5 吗?

答案1

与 一起使用时cd,使用pwd -P

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5
$ pwd -P
/home/dave/tmp/1/2/3/4/5

对于通用符号链接,使用readlink

$ cd ..
$ readlink 5
1/2/3/4/5

或者ls -l-d对于目录):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5

答案2

您需要readlink -f(在 coreutils 中,默认安装) 或更容易记住的realpath,您必须安装。

答案3

我使用的另一种方法

cd to the symlink
Ctrl+Shift+T #To open a new tab
pwd

新标签密码,提供符号链接。;)

相关内容