在哪里可以找到 ls -l 输出的文档?

在哪里可以找到 ls -l 输出的文档?

对此有很多问题,例如了解 ls 输出,ls -la 中的列是什么?,“ls -la”有什么作用?,ls -al 输出中的字段是什么意思?等等。
我还遇到过许多其他网站,其中有文章试图解释它。

他们每个人的共同点似乎是,尽管写下了各列的含义,但从来没有任何链接/引用指向他们最初获取该信息的位置。第三个问题的答案链接到coreutils手册,但很像仍然没有提供任何说明的联机帮助页。

上述资源不完整,因为我正在开发一个驱动程序,并发现ls -l提供了块/字符设备的主要和次要编号(这与文件或目录的常规输出不同):
在此输入图像描述
这里设备的主/次编号分别为 1 和 3。
我只是因为有人在一篇文章中提到它才发现这一点回答(不相关的问题)。如果我以前想知道这些数字意味着什么,我可能无法找到答案,除非我偶然发现了这个答案。或者去查看源代码。

对于几乎每个 Linux 用户都使用的工具来说,没有任何关于其输出的正确信息似乎很奇怪。那么我错过了什么吗?它记录在哪里?

编辑:穆鲁在评论中提到了另一个问题如何查找 ls -l 中字段的含义- 该问题中的建议答案主要提到了联机帮助页(直接粘贴了它),对于 GNU coreutils 来说,它没有提供完整的答案(联机帮助页没有提及主要/次要设备编号)。 BSD 手册页确实如此,但 Stephen 对 posix 标准的回答是(我认为)最正确的。

答案1

ls由 POSIX 指定,这是共同的参考。输出格式在“STDOUT”部分中描述。

答案2

是的,事实上,大小字段被major, minor设备文件替换,至少从那时起就是这样研究 Unix v51974 年并至少从那时起就有记录研究 Unix v6(找不到 v5 手册页)没有记录在 GNU 实现的文档中ls现在已修复下列的这个错误报告, 谢谢你)。

ls实用程序的 POSIX 规范ls包括 GNU 的大多数实现ls都试图遵守其中提到的尺寸被一些取代<device-info>与相关设备关联的实现定义的信息,尽管在 GNU 的情况下,ls就像在最初的 Unix 实现中一样,那总是major, minor。但与最初的 Unix 实现相反,GNUls保证除了主设备号和次设备号之间的逗号之外,始终至少有一个空格。


1 至少在处于POSIX环境就像POSIXLY_CORRECT设置了环境变量但BLOCKSIZE, BLOCK_SIZE,LS_BLOCK_SIZE都没有设置一样,尽管在本例中这些变量都不相关。

² 这也是其他几种实现的情况,ls例如来自 busybox 或 toybox 的实现,这些实现也常见于基于 Linux 的系统(以及它们本身)不是POSIX 兼容),但不是全部。例如,来自 ast-open 的一个从不包含空格,并且将所有数字用 0 填充到长度 3(例如001,005),而有些仍然将它们用空格填充到长度 3,从而导致可变数量的空白分隔字段(1, 57,128for实例)。ls -l无法可靠或可移植地解析 的输出的众多原因之一。

相关内容