1

我想通过 sdiff 比较所有 GNU Unix 手册和 Mac 的 Unix 手册。

例如,我不知道您如何浏览所有 Mac 的 Unix 手册,然后将它们保存到文件中。

当手册在两个文件中时,可以通过以下代码进行比较

sdiff <(file1) <(file2)

也许,有一些 Unix 命令名称的索引,以便我们可以执行以下操作

sdiff <(man *[in the index]) <(man *[in the index])

您如何将所有 GNU Unix 手册与 Mac 中的所有 Unix 手册进行比较?

[编辑]

Mac 的手册位于 /usr/share/man/man[1-9]/*。当我尝试捕捉它们时,我遇到了它们的编码问题。

另一个问题是找到 Coreutils 手册的位置。

4

3 回答 3

2

GNU 意味着 (G)NU 是 (N)ot (U)nix。GNU 无论如何都不是基于 UNIX,它不可能是由于版权和许可问题。

大多数 GNU 文档都是以 texinfo 格式编写的(Debian 后来根据用户需要手册页将其转换为 roff (man) 格式)。该文档绝不是基于 BSD 文档,GNU 中的所有内容都是从头开始编写的。

试图在两者之间进行区分就像将字典与同义词库进行区分。您会发现它们都包含许多相同的单词,但是完全不同的人所写的完全不同的书。

该文档无法充分解释 GNU 和 BSD(以及扩展为 MacOS)之间的差异。

于 2009-03-23T02:13:20.133 回答
2

您的目标是确定各种程序的不同 BSD 与 GNU/Linux 版本的不同参数,这将有些乏味。值得注意的是,所有命令还有其他变体。有 system V 版本、BSD 版本和 GNU 版本,Mac 使用所有 3 的混合。无论如何,作为起点,文件本身充满了您不感兴趣的格式化宏。管道man 通过 'col -b' 的输出来获取你可以比较的数据。在生成命令列表方面,你可以 ls -1 /bin /usr/bin' 然后这样的事情会让你大部分时间:

while read command ; do
    man $command | col -b > output1
    man ./path/to/GNU/$command | col -b > output2
    diff  output1 output2  |  grep  '^[ ]*-' > $command.diffs
 done<<EOF
 diff
 grep
 sort
 ...
 ...
 EOF
于 2009-03-23T02:50:55.597 回答
0

所有手册页都存在于 /usr/share/man/*; 我不确定您要在这里完成什么。Mac 在 BSD 上运行,因此大多数应用程序将与您在 BSD 机器上找到的应用程序相同。如果您仍想这样做,则需要在 *nix 中获取与 Mac 中相同的应用程序的手册页以及相同的版本(因为手册页可以更改)。是的,我会说做一个 diff /usr/share/man/man[0-9]/* 和来自 linux 盒子的所有手册页的扩展 tar。

于 2009-03-23T00:53:49.043 回答