繁体   English   中英

在bash脚本中使用-s命令

[英]Using -s command in bash script

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

在获取命令的节号的情况下,您需要类似man -k "page_name" | awk -F'-' "/^page_name \\(/ {print $1}" 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 | wc -ldone关键字位于同一行的末尾。 对于mount命令,我有3个:

2
2freebsd
8

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

man -s 1 man

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

man -s 7 man

了解有关man(7)宏程序包的信息。

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

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

您误解了-s的本质。 man man

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

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

因此,当男人看到man -s man它认为您想在“ man”部分中查找页面(该页面很可能不存在,因为它不是正常的部分),但是您没有说出什么页面,所以它要求:

您想要什么手册页?

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

各种标准部分也在man man进行了描述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM