![](/img/trans.png)
[英]Bash script: Using "script" command from a bash script for logging a session
[英]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 -l
与done
关键字位于同一行的末尾。 对于mount
命令,我有3个:
2
2freebsd
8
您误解了-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.