Linux 符号链接:如何进入所指向的目录?

Linux 符号链接:如何进入所指向的目录?

我在其自己的目录中有一个项目:

/目录/到/项目/

我在桌面上有一个指向该目录的符号链接:

/主页/用户/桌面/项目/

当我双击该链接时,打开的目录窗口是:

/主页/用户/桌面/项目/

而不是真正的/dir/to/project

命令行(Bash)也会发生同样的情况。

是否有可能得到我想要的,即转到指向的目录,而不是符号目录?

注意:我现在使用的 Windows 环境是 Xfce,但我也对通用答案感兴趣。

答案1

在内置使用和bash开关中;以相同的方式理解它们:cd-P-Lpwd

user@host:~$ ln -s /bin foobar
user@host:~$ cd -L foobar      # follow link
user@host:~/foobar$ pwd -L     # print $PWD
/home/user/foobar
user@host:~/foobar$ pwd -P     # print physical directory
/bin
user@host:~/foobar$ cd -       # return to previous directory
/home/user
user@host:~$ cd -P foobar      # use physical directory structure
user@host:/bin$ pwd -L         # print $PWD
/bin
user@host:/bin$ pwd -P         # print physical directory
/bin

此外cd ..可能会比较棘手:

user@host:/bin$ cd
user@host:~$ cd -L foobar
user@host:~/foobar$ cd -L ..   # go up, to ~/
user@host:~$ cd -L foobar
user@host:~/foobar$ cd -P ..   # go up, but not to ~/
user@host:/$

请参阅help cdhelp pwd。请注意,您可能还有一个可执行文件(即不是 shell 内置命令),/bin/pwd其行为应该类似。在我的 Kubuntu 中,不同之处在于pwd没有任何选项的内置命令使用-L,而/bin/pwd默认情况下使用-P

您可以通过( acts as ) 和( acts as ) 调整cd内置的默认行为。详情请参阅。set -Pcdcd -Pset +Pcdcd -Lhelp set

答案2

用于readlink解析到其目标的链接:

cd $(readlink thelink)

您可能想要在 bash 配置文件中定义一个函数:

function cdl { local dir=$(readlink -e $1); [[ -n "$dir" ]] && cd $dir; }

答案3

我不知道如何在 GUI 中实现它,但在命令行中有一个解决方法。

假设你的符号链接是:

/home/user/Desktop/project/

然后,你可以使用阅读链接命令获取已解析的符号链接或其规范文件名。然后就cd可以了。

cd `readlink /home/user/Desktop/project`

在这里,readlink解析链接名称,然后传递给cd使用代换

如果你已经在桌面文件夹中,则无需指定绝对路径,只需project执行即可

cd `readlink project`

如果你经常访问此文件夹,你可以在 bash 中为其编写一行函数:

function cdproject
{
    cd `readlink home/user/Desktop/project`;
}

相关内容