使用带有符号链接的 ls 命令

bmc*_*148 7 command-line ls documentation symlink

我目前不明白在使用该ls命令时尝试查找指向目录的符号链接的内容或信息时发生了什么。我知道-Hls命令有一个选项将遵循命令行上列出的符号链接。手册页ls没有说明只有在使用该-l选项时才需要这样做。如果我只是做类似的事情ls symLinkToDir它将列出链接目录的内容,而没有其他选项。但是,如果我这样做,ls -l symLinkToDir它只会显示有关链接的信息,除非我也包含该-H选项。这个例子就是我要说的:

brian@LinuxBox:~$ ls playground/linkedDir
file4  file5
brian@LinuxBox:~$ ls -l playground/linkedDir
lrwxrwxrwx 1 brian brian 4 Feb 18 16:42 playground/linkedDir -> dir2
brian@LinuxBox:~$ ls -lH playground/linkedDir
total 0
-rw-rw-r-- 1 brian brian 0 Feb 18 16:41 file4
-rw-rw-r-- 1 brian brian 0 Feb 18 16:41 file5
Run Code Online (Sandbox Code Playgroud)

我在这里不明白吗?这只是一种奇怪的工作方式吗?如果这确实是它的工作原理,手册页不应该说在某些条件下不需要该-H选项就可以遵循符号链接吗?预先感谢您的意见。

Gil*_*il' 10

on 目录符号链接的行为ls取决于许多选项,而不仅仅是-l-H。如果没有符号链接行为选项 ( -L-H),ls symlinkToDir则显示目录的内容,但ls -l symlinkToDirls -d symlinkToDirls -F symlinkToDir全部显示有关符号链接的信息。

如果您正在阅读 的 GNU 实现的手册页ls,它并没有给出完整的故事。GNU 手册页只是摘要。完整的文档位于信息手册 ( info ls) 中,目前通常以 HTML 形式提供。我也无法在信息手册中找到目录符号链接的默认行为,但这可能是文档中的错误。

例如,FreeBSD 手册页更精确,但您必须阅读该选项的说明才能找到-H默认行为。

-H遵循命令行上的符号链接。如果未指定-F-d-l选项,则假定此选项。

如果您想要更正式的描述(但不太容易阅读),请阅读POSIX 规范。这不会有您的实施的扩展。

如果指定了一个或多个 -d、-F 或 -l 选项,并且未指定 -H 和 -L 选项,则对于命名目录符号链接类型文件的每个操作数,ls 应写入文件的名称以及任何请求的相关信息。如果未指定 -d、-F 或 -l 选项,或者指定了 -H 或 -L 选项,则对于命名目录符号链接类型文件的每个操作数,ls 应写入文件名包含在目录中以及任何请求的相关信息。