3 documentation options posix qnx
为什么某些命令依赖manpages
而其他命令依赖于诸如--help
标志之类的东西来提供命令用法参考的问题并不新鲜。命令文档和命令用法概要之间的范围通常存在差异。后者通常是前者的一个子集。但是,即使大多数命令和实用程序都有联机帮助页,它们的概要部分的格式也存在差异,这在尝试提取此类信息时具有非常实际的意义。在其他情况下,strings
当命令似乎没有文档时,人们可能会通过该实用程序找到线索。
我对这个QNX平台上的命令很感兴趣,并发现了use
命令1来显示使用信息。如 中所述usemsg
,该框架涉及在实用程序源中设置标准使用记录,一旦编译,就可以使用use
命令访问它,您还可以包装本机功能等。这非常方便,因为我可以简单地做
use -d dir >>file
Run Code Online (Sandbox Code Playgroud)
上/base
并/proc/boot
提取所有使用该系统基本上所有的命令。
所以我然后简要地查看了GNU coreutils ls和FreeBSD ls的源代码,看看它们是否做了类似的事情,前者将使用信息放在一些名为函数的用法中(我猜),而后者似乎没有把它放在任何地方根本(?)。--help
use
) 是您在商业 Unix 中发现的以交互方式呈现命令使用参考的典型解决方案吗?1.use
命令:
use
Print a usage message (QNX Neutrino)
Syntax:
use [-aeis] [-d directory] [-f filelist] files
Options:
-a
Extract all usage information from the load module in its source form, suitable for piping into usemsg.
-d directory
Recursively display information for all files under directory.
-e
Include only ELF files.
-f filelist
Read a list of files, one per line, from the specified filelist file, and display information for each.
-i
Display build properties about a load module.
-s
Display the version numbers of the source used in the executable.
files
One or more executable load modules or shell scripts that contain usage messages.
Run Code Online (Sandbox Code Playgroud)
您在示例中引用了 GNU 工具。这些在 Linux 和许多其他平台上可用,并且在文档方面有些不寻常。
GNU 工具,实际上似乎有三个层次越来越详细的交互参考:
--help
作为通用命令选项 - 简短的使用摘要,
man
- 经典手册页,“快速参考”,以及
info
- 更详细的 GNU 特定手册 - 完整的官方文档。
通常,人们只是使用手册页作为默认文档 - 即使知道“他们说”GNU 信息文档更详细和官方。
它会根据喜好略有不同,但我认为以下使用模式很常见:
man foo
的默认情况下,
foo --help
有时,对于小的问题,作为不确定的选项名称,info foo
...几乎从不。
然而,有一个问题:
对于最常用的命令,从所述包coreutils
,等ls
,cp
,mkdir
,csplit
和更多的人,
手册页man foo
包含与 完全相同的信息foo --help
。 (1)
这意味着“真正的文档”,实际上,不在手册页中——正如我们所想的那样......
它实际上在我们没有阅读的GNU 信息文件中!
现在,同时查看man
page 和 (下部) --help
,很难注意到内容是相同的,因为手册页看起来如此“详细”。这是因为两种变体之间的文本布局密度差异非常大。--help
与极其放松的间距相比,非常压缩man
。
自己对比一下,印象深刻:
ls --help | less
man ls | less
info --subnodes ls | less
(该选项--subnodes
呈现页面线性,以进行比较。本身info
显示超文本,链接在类似于 HTML 的文档之间。该man
命令包括less
强制非彩色输出以便于比较。)
对于默认信息查看器info
,有更舒适的替代品,例如 - 用于终端 -pinfo
或 - 用于 GUI - konqueror
。实施例使用这样的:
pinfo ls
或konqueror info:ls
或使用info:ls
中的URL栏konqueror
。
作为一个特例,所述的文档内部命令GNU的bash
,
这是所谓的壳建宏,可以与被访问help
命令。
例如,在 的命令行上bash
,尝试
help cd
1)幸运的是,@PádraigBrady 在他的回答中指出了这一点