在 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
新标签密码,提供符号链接。;)