我有一个微不足道的错误,我似乎无法绕过。我试图返回各个部分的数字,让我们说“man”,因为它存在于所有部分。我使用-s命令但遇到问题。每次我使用它时,我都会“获得你想要的手册页”。有什么帮助吗?
答案 0 :(得分: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
答案 1 :(得分:0)
正确的语法需要一个参数。通常你正在寻找
man -s 1 man
阅读man(1)命令的文档或
man -s 7 man
阅读man(7)宏包。
如果您需要标准部分列表,前者包含该部分。但是,您可能在本地安装了其他部分。例如,/usr/local/share/man
的目录列表可能会显示其他部分。
(顺便说一下,-s
在这个上下文中不是“命令”,它是一个选项。)
答案 2 :(得分:0)
你误解了-s
的性质。来自man man
:
-S list,-s list, - sections = list
List是一个以冒号或逗号分隔的“特定订单”手册部分列表,用于搜索。此选项会覆盖 $ MANSECT环境变量。 (-s 拼写是为了与System V兼容。)
所以,当人看到man -s man
时,它认为你想在“男人”部分寻找一个页面(这很可能不存在,因为它不是正常的部分),但你没有说什么页面,所以它问:
BTW,wrt “男人只是测试案例因为我相信它的所有部分” - 不,它可能只在一个,而AFAIK没有任何一个字所有部分的页面。超过2或3个将是非常不寻常的。您想要哪个手册页?
man man
中也描述了各种标准部分。