为什么`cd ..`反映符号链接遍历,而`ls ..`不响应?

时间:2015-09-02 13:39:10

标签: linux bash shell ls cd

ls ..

表示'list upper directorie 的文件和目录。'

当我在符号链接后更改目录时,ls ..不遵循符号链接。它只显示真正的上层目录。

例如,当目录结构如下时,

r ┬ a - b - sub@
  └ sub

sub@sub目录的符号链接)

ls ..之后的{p> cd a/b/sub命令在r目录中提供文件,因为我在r/sub。不是b目录。但cd ..命令将我带到b目录。

如何使用ls命令显示目录b中的文件?

1 个答案:

答案 0 :(得分:2)

目录不知道您用来获取它的符号链接; ..是指向真实父目录的实际目录条目。但是当你使用shell命令cd ..时,bash作弊。它知道你用来到那里的路径(它在$PWD中),所以它只删除了它的最后一个组件并更改为生成的目录。

使用"${PWD%/*}"代替..,您可以自己使用相同的技巧,以利用其他命令:

ls "${PWD%/*}"