为什么 `cd ..` 反映了符号链接遍历,而 `ls ..` 却没有?
Why does `cd ..` reflect symlink traversal, whereas `ls ..`does not?
ls ..
表示“列出上层目录的文件和目录。”
当我在符号 link 之后更改目录时,ls ..
不遵循符号 link。它只是显示 real 上层目录。
例如当目录结构如下时,
r ┬ a - b - sub@
└ sub
(sub@
是符号link到sub
目录)
在 cd a/b/sub
之后的 ls ..
命令给出 r
目录中的文件,因为我在 r/sub
。不是 b
目录的。但是 cd ..
命令将我带到 b
目录。
如何使用 ls
命令显示目录 b
中的文件?
一个目录不知道您以前用什么符号 link 访问它; ..
是指向 real 父目录的实际目录条目。但是当你使用shell命令时cd ..
,bash作弊。它知道您用来到达那里的路径(在 $PWD
中),因此它只是删除最后一个组件并更改到结果目录。
您可以自己使用相同的技巧,通过使用 "${PWD%/*}"
而不是 ..
来使其他命令受益:
ls "${PWD%/*}"
ls ..
表示“列出上层目录的文件和目录。”
当我在符号 link 之后更改目录时,ls ..
不遵循符号 link。它只是显示 real 上层目录。
例如当目录结构如下时,
r ┬ a - b - sub@
└ sub
(sub@
是符号link到sub
目录)
cd a/b/sub
之后的 ls ..
命令给出 r
目录中的文件,因为我在 r/sub
。不是 b
目录的。但是 cd ..
命令将我带到 b
目录。
如何使用 ls
命令显示目录 b
中的文件?
一个目录不知道您以前用什么符号 link 访问它; ..
是指向 real 父目录的实际目录条目。但是当你使用shell命令时cd ..
,bash作弊。它知道您用来到达那里的路径(在 $PWD
中),因此它只是删除最后一个组件并更改到结果目录。
您可以自己使用相同的技巧,通过使用 "${PWD%/*}"
而不是 ..
来使其他命令受益:
ls "${PWD%/*}"