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


32

我有一个符号链接

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

当我做

cd ~/link
cd ..    

它带我去

~

但我想去

~/a/really/long

有没有办法做到这一点?

我正在使用bash。


1
你的意思cd ~/a/really/long/path,然后cd ..把你~的那一刻?我无法重现。
Mikel,

1
@Mikel:不,首先创建一个符号链接,~/a/really/long/path然后cd到它,再到..。您应该以〜结尾(假设您从这里开始)。
Xodarap

我的编辑准确吗?我以前听不懂这个问题。
Mikel

Answers:


38

Bash(以及ksh,zsh甚至是ash)跟踪目录更改,因此即使是符号链接也cd /foo/bar && cd ..总是可以带您进入。传递选项以忽略跟踪的更改,并遵循“物理”目录结构:/foobar-Pcd

cd -P ..

有关内置bash的信息,请参见help cdman builtins获取相关文档cd。如果您真的不喜欢目录跟踪功能,则可以使用set -Pbash(set -o no_chase_link在zsh中)将其关闭。


1
我看问题的方式,OP已经-P-o physical已经设置?
Mikel

+1,但建议链接至手册页。
Faheem Mitha

@Mikel:不,问题是他在遵循符号链接,而不是物理目录结构。
Faheem Mitha

抱歉,我实际上没有尝试编辑您的信息。建议编辑已提交。
Faheem Mitha

4

您还可以使用readlink查找此目录的物理路径,然后再上一个目录:

cd $(readlink -f .)/..

3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.