我有一个小错误,我似乎无法解决。我试图返回让我们说“人”的各个部分编号,因为它位于所有部分中。我正在使用 -s 命令,但遇到了问题。每次我使用它时,我都会不断收到“你想要什么手册页”。有什么帮助吗?
3 回答
在获取命令的节号的情况下,您需要类似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
你误解了-s
. 来自man man
:
-S 列表,-s 列表,--sections=列表
List 是一个冒号或逗号分隔的“订单特定”手册部分的搜索列表。此选项覆盖 $MANSECT 环境变量。(-s 拼写是为了与 System V 兼容。)
所以当 man 看到man -s man
它认为你想在“man”部分中寻找一个页面(很可能不存在,因为它不是一个正常的部分),但是你没有说什么页面,所以它问:
你想要什么手册页?
顺便说一句,“人只是测试用例,因为我相信它在所有部分中” ——不,它可能只有一个,而且 AFAIK 在所有部分中都没有任何单词与页面。超过 2 或 3 个将是非常不寻常的。
也描述了各种标准部分man man
。