与 ls、mv 的符号链接:强制函数使用“逻辑”地址(记住原始路径)

与 ls、mv 的符号链接:强制函数使用“逻辑”地址(记住原始路径)

似乎对于许多在符号链接上操作的基本功能来说,默认情况下使用物理路径。然而,cd 工作正常。当进入符号链接时, cd 会记住我来自哪里,因此它使用符号链接的逻辑地址(有关示例,请参阅相关帖子:符号链接和 cd)。

像 ls 这样的函数只能部分地以这种方式工作。如果我通过点击选项卡($ ls ../ {tab})列出目录内容,它将列出符号链接所在目录的内容,但如果执行命令($ ls ../ {enter})目录内容列表来自物理路径。有没有办法让 ls、mv、rm 等命令像 cd 一样操作并记住符号链接的逻辑路径?

感谢您的任何建议。

答案1

正是 shell 提供了一种错觉,即指向目录的符号链接是根植于符号链接位置的真实目录。 cd必然是 shell 内置函数,制表符补全也是 shell 执行的功能。由于cd是由 shell 执行的,因此它知道符号链接并可以维持幻象。大多数 Unix 命令不是由 shell 实现的,因此无法知道您是否遍历了符号链接来到达当前目录。由于这些命令(lsmvrm等)无法了解符号链接,因此它们无法维持这种错觉。

相关内容