如何列出手册页的标题?

如何列出手册页的标题?

我想查看手册页中的标题列表,而不阅读所有手册页。例如,在 bash 手册页 ( man bash.1) 中有很多标题:NAMESYNOPSISCOPYRIGHTDESCRIPTION等。本质上,我想要一个像本页顶部所示的列表HTML 手册页。有没有办法在命令行中本地获取它?

如果您想使用与他们提供的名称不同的名称(“语法”而不是“语法”)搜索某个部分,或者有时您甚至不知道要查找什么,这可能会很有用。

答案1

在系统上使用mandoc,您可以要求 markdown 格式的输出,然后简单地grep要求以 开头的行#

$ man -T markdown man | grep '^#'
# NAME
# SYNOPSIS
# DESCRIPTION
# ENVIRONMENT
# FILES
# EXIT STATUS
# EXAMPLES
# SEE ALSO
# STANDARDS
# HISTORY

对于这不起作用的手册,您可以改为通过 HTML:

$ man -T html git | xmlstarlet sel -t -v '//h1/@id' -nl
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
GIT_COMMANDS
HIGH
LOW
GUIDES
CONFIGURATION_MECHANISM
IDENTIFIER_TERMINOLOGY
SYMBOLIC_IDENTIFIERS
FILE/DIRECTORY_STRUCTURE
TERMINOLOGY
ENVIRONMENT_VARIABLES
DISCUSSION
FURTHER_DOCUMENTATION
AUTHORS
REPORTING_BUGS
SEE_ALSO
GIT
NOTES

答案2

编辑:

我意识到手册页标题是唯一左对齐的文本(大多数情况下)。您可以/^\w在打开手册页并使用 / 向上/向下滚动后N进行简单搜索n

如果您想在脚本中查找标题,我下面的原始答案或其他人的答案可能会有所帮助。

原来的:

幸运的是,我找到了一个基于的解决方案这个答案(如果这对您有帮助,请给他们点赞)。

zcat $(man -w bash.1) | grep -i '^\.sh'

man -w获取手册页源的位置(例如/usr/share/man/man1/bash.1.gz)。zcat动态解压缩源并将其发送到stdout.并且该grep调用搜索以.sh(不区分大小写) 开头的行,这些行标记了“节标题”。

这会忽略小节标题 ( .ss),但您可以通过将过滤器更改为'^\.s[sh]'(感谢 Thomas)来解决这个问题。

答案3

更短、更简单的替代方案是 grep 以空格以外的内容开头的行:

$ man git | grep '^\S'
GIT(1)                            Git Manual                            GIT(1)
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
GIT COMMANDS
HIGH-LEVEL COMMANDS (PORCELAIN)
LOW-LEVEL COMMANDS (PLUMBING)
GUIDES
CONFIGURATION MECHANISM
IDENTIFIER TERMINOLOGY
SYMBOLIC IDENTIFIERS
FILE/DIRECTORY STRUCTURE
TERMINOLOGY
ENVIRONMENT VARIABLES
DISCUSSION
FURTHER DOCUMENTATION
AUTHORS
REPORTING BUGS
SEE ALSO
GIT
NOTES
Git 2.32.0                        06/06/2021                            GIT(1)

这些额外的行也可以删除:

$ man git | grep '^\S' | sed '1d;$d'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
GIT COMMANDS
HIGH-LEVEL COMMANDS (PORCELAIN)
LOW-LEVEL COMMANDS (PLUMBING)
GUIDES
CONFIGURATION MECHANISM
IDENTIFIER TERMINOLOGY
SYMBOLIC IDENTIFIERS
FILE/DIRECTORY STRUCTURE
TERMINOLOGY
ENVIRONMENT VARIABLES
DISCUSSION
FURTHER DOCUMENTATION
AUTHORS
REPORTING BUGS
SEE ALSO
GIT
NOTES

如果您已经浏览过它less(即,当您刚刚查看时会发生什么man git),您可以使用&仅显示匹配的行。 IOW,您可以输入&^\Sless仅显示标题(以及第一行和最后一行)。要返回显示整个联机帮助页,您可以键入&then Enter

相关内容