我在其自己的目录中有一个项目:
/目录/到/项目/
我在桌面上有一个指向该目录的符号链接:
/主页/用户/桌面/项目/
当我双击该链接时,打开的目录窗口是:
/主页/用户/桌面/项目/
而不是真正的/dir/to/project
。
命令行(Bash)也会发生同样的情况。
是否有可能得到我想要的,即转到指向的目录,而不是符号目录?
注意:我现在使用的 Windows 环境是 Xfce,但我也对通用答案感兴趣。
答案1
在内置使用和bash
开关中;以相同的方式理解它们:cd
-P
-L
pwd
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 cd
和help pwd
。请注意,您可能还有一个可执行文件(即不是 shell 内置命令),/bin/pwd
其行为应该类似。在我的 Kubuntu 中,不同之处在于pwd
没有任何选项的内置命令使用-L
,而/bin/pwd
默认情况下使用-P
。
您可以通过( acts as ) 和( acts as ) 调整cd
内置的默认行为。详情请参阅。set -P
cd
cd -P
set +P
cd
cd -L
help 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`;
}