使用符号链接更改父目录 (../)

使用符号链接更改父目录 (../)

我有一个符号链接

~/link -> ~/a/really/long/path

当我做

cd ~/link
cd ..    

它带我去

~

但我想去

~/a/really/long

有没有办法做到这一点?

我正在使用 bash。

答案1

Bash(以及 ksh、zsh 甚至 ash)跟踪目录更改,以便cd /foo/bar && cd ..始终将您带到/foo即使bar是符号链接。传递-P选项以cd忽略跟踪的更改并遵循“物理”目录结构:

cd -P ..

请参阅help cdman builtins有关 bash 内置命令的文档cd。如果您确实不喜欢目录跟踪功能,可以在set -Pbash 中(set -o no_chase_link在 zsh 中)将其关闭。

答案2

您还可以使用 readlink 查找该目录的物理路径,然后转到上一级目录:

cd $(readlink -f .)/..

答案3

您可以使用的一种方法是使用别名而不是符号链接将您带到 ~/a/really/long/path。这就是我使用的方法,从那时起我可以只输入一个简单的 1/2/et cetera letter 命令而不是 cd symlink

相关内容