macos – 为什么手册页的章节标题不完全可以抓取?

这是在El Capitan和同事的High Sierra,在标准终端(bash)中测试的.

user@hostname ~ $man ls | grep "BU"
BUGS
user@hostname ~ $man ls | grep "BUG"
user@hostname ~ $
user@hostname ~ $man ls | grep "IEEE"
     files in order to be compatible with the IEEE Std 1003.2 (``POSIX.2'')
     The ls utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').

澄清:“BUGS”是该(以及其他各种)联机帮助页中的章节标题.对于节标题,grepping只适用于前2个字符;这与我们尝试的几个不同部分标题是一致的.对于其余内容,grep似乎按预期工作.

我ssh’d到一个非BSD风格的Linux盒子(亚马逊Linux),它似乎没有表现出相同的行为.

这里发生了什么?

最佳答案
如果查看手册页中的原始代码,您可以看到发生了什么.一种方法是将手册页导出到文件并直接检查其内容:

man ls > man.ls
nano man.ls

“BUGS”这个词实际上在文件中看起来像这样:

B^HBU^HUG^HGS^HS

您将看到标题包含格式字符,因此不存在整个单词“BUGS”.

如果要访问手册页的纯文本内容,可以使用该命令

man -P cat <thepage>

-P选项在其他unix上设置寻呼机,cat将忽略格式化信息,给出明文输出.但是,这似乎不适用于macOS,因此输出需要管道中的手动col -b步骤:

man ls | col -b | grep BUGS

转载注明原文:macos – 为什么手册页的章节标题不完全可以抓取? - 代码日志