什么命令可以显示 Bash 手册页中包含字符串“大括号扩展”(忽略大小写)的所有行?
我尝试过man -wK . | grep "[Bb]race [Ee]xpansion"
遇到一系列“无法断线”错误。
man -s1 -Kw --regex 'brace expansion'
然后我在阅读查询后 尝试使用命令进行搜索如何搜索手册页中包含连字符的模式?
我回来了:
/usr/share/man/man1/bash.1.gz
我尝试使用打印文件cat
并得到所有奇怪的符号。
答案1
当您运行该命令时,您将在系统的默认寻呼机(通常)man bash
中打开文档。less
要跳到与特定模式匹配的行,您可以键入/<pattern>
。例如,进入手册页后立即输入:
/brace expansion
然后您应该会自动转到第一个出现的位置。从那里您可以按n
转到稍后的事件。
文件扩展名还.gz
意味着该文件是使用 gzip 压缩的。您将无法直接读取该文件。
答案2
搜索结果 - 系统上的手册页源文件 - 可以在本地模式下传回 man 以读取每个页面。
man -wK --regex 'Brace Expansion' | sort -u | xargs man -l -P cat | grep -inF 'Brace Expansion'
默认情况下,用于 man 命令搜索的正则表达式不区分大小写。搜索结果列表已排序,所有重复项均被删除。然后,使用 传回给 man xargs
。通过使用cat
分页器,每个处理后的手册页都可以打印到标准输出。此时,数据是 grep 可以操作的纯文本流。
选项用于激活本地模式,直接解析文件而不是解析系统的 MANPATH -l
。man
选项-P cat
将man
寻呼机设置为cat
。这意味着处理后的手册页将使用显示cat
。
选项用于不区分大小写的搜索-i
。grep
该-n
选项打印出行号(只是为了方便而添加)。该-F
选项指定模式是固定字符串。
答案3
根据您最初的问题,以下命令将显示 bash 手册页中包含“大括号扩展”的所有行:
for page in $( man -k bash | awk '{print $1}' ); do
zgrep -i -n 'brace expansion' $(man -w $page) /dev/null
done
首先,您获得了与描述中的“bash”相对应的手册页列表,然后迭代检索到的列表并搜索匹配的“大括号扩展”字符串。 zgrep(1) 会默默地为您解压缩文件;)