1

我有一个小错误,我似乎无法解决。我试图返回让我们说“人”的各个部分编号,因为它位于所有部分中。我正在使用 -s 命令,但遇到了问题。每次我使用它时,我都会不断收到“你想要什么手册页”。有什么帮助吗?

4

3 回答 3

0

在获取命令的节号的情况下,您需要类似man -k "page_name" | awk -F'-' "/^page_name \(/ {print $1}",用您需要的任何命令替换任何出现的page_name

这不一定适用于所有系统,因为“man”输出的格式是“实现定义的”。换句话说,FreeBSD、OS X、各种Linux 等上的格式可能不一样。例如,我的是:

page_name (1)               - description

如果您只想要节号,我相信您可以做一些事情,例如将该行的结果保存在 shell 变量中并使用参数扩展来删除节号周围的括号:

man -k "page_name" | awk -F'-' "/^page_name \(/ {print $1}" | while IFS= read sect ; do
    sect="${sect##*[(]}"
    sect="${sect%[)]*}"
    printf '%s\n' "$sect"
done

要获取命令出现的部分数,请在与关键字| wc -l相同的行的末尾添加。done对于mount命令,我有 3 个:

2
2freebsd
8
于 2013-09-15T18:40:01.240 回答
0

正确的语法需要一个参数。通常你正在寻找

man -s 1 man

阅读man(1)命令的文档,或

man -s 7 man

阅读有关man(7)宏包的信息。

如果您想要标准部分的列表,则前者包含该列表。不过,您可能在本地安装了其他部分。例如,目录列表/usr/local/share/man可能会显示其他部分。

(顺便说一句,-s在这种情况下,它不是“命令”,而是一个选项。)

于 2013-09-15T18:43:45.927 回答
0

你误解了-s. 来自man man

-S 列表,-s 列表,--sections=列表

List 是一个冒号或逗号分隔的“订单特定”手册部分的搜索列表。此选项覆盖 $MANSECT 环境变量。(-s 拼写是为了与 System V 兼容。)

所以当 man 看到man -s man它认为你想在“man”部分中寻找一个页面(很可能不存在,因为它不是一个正常的部分),但是你没有说什么页面,所以它问:

你想要什么手册页?

顺便说一句,“人只是测试用例,因为我相信它在所有部分中” ——不,它可能只有一个,而且 AFAIK 在所有部分中都没有任何单词与页面。超过 2 或 3 个将是非常不寻常的。

也描述了各种标准部分man man

于 2013-09-15T18:47:21.127 回答