bmc*_*148 7 command-line ls documentation symlink
我目前不明白在使用该ls
命令时尝试查找指向目录的符号链接的内容或信息时发生了什么。我知道-H
该ls
命令有一个选项将遵循命令行上列出的符号链接。手册页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 symlinkToDir
、ls -d symlinkToDir
和ls -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 应写入文件名包含在目录中以及任何请求的相关信息。