如果我尝试使用 grep 在某些手册页中进行搜索,我会收到几条“糟糕”的消息。
例如:
man mpv | grep dvdnav
结果是:
mpv dvdnav://[longest|menu|title][/device] [options]
grotty:<standard input> (<standard input>):90690: character above first line discarded
grotty:<standard input> (<standard input>):90694: character above first line discarded
grotty:<standard input> (<standard input>):90698: character above first line discarded
grotty:<standard input> (<standard input>):90702: character above first line discarded
grotty:<standard input> (<standard input>):91895: character above first line discarded
grotty:<standard input> (<standard input>):91899: character above first line discarded
grotty:<standard input> (<standard input>):91903: character above first line discarded
grotty:<standard input> (<standard input>):91907: character above first line discarded
grotty:<standard input> (<standard input>):94450: character above first line discarded
grotty:<standard input> (<standard input>):94454: character above first line discarded
grotty:<standard input> (<standard input>):94458: character above first line discarded
│dvdnav:// │ dvdnav://menu │
是什么导致了这些消息,我该如何防止它们?
我没有
mpv
安装,但这似乎更像是一个警告grotty
(处理手册页源以将其打印到标准输出的程序)可能来自不兼容的手册页。你有没有尝试过?这会将错误和警告从中重定向
grotty
到接收器,以便您应该获得更清晰的输出。尽管如此,该错误可能是
mpv
手册页中的一个错误(或者grotty
,您永远不知道)。我很确定这是由手册页文本格式化程序中的错误引起的。
[更新:另请参阅带有错误报告参考的此答案。]
man grotty
说,要首先对此进行调试,请检查您是否也可以使用
groffer
(graphical roffer) 显示此手册页。当我遇到这些错误时,我发现 groffer 工作正常,没有错误,但是 grotty 抛出了这个“第一行上方的字符被丢弃”的错误。
所以我挖得更深了一点。给我带来麻烦的页面是 zoneminder.1。
首先我解压它:
然后使用它我可以运行测试:
现在用分治法编辑 zoneminder.1。 首先删除它的最后 1/2,错误消失了。然后只删除了它的最后 3/4,错误仍然存在。然后删除了它的最后5/8,错误仍然存在。然后看了一下它,开始一次只删除几行,直到错误从打开切换到关闭。
我发现自己在一个表中,只能从表中删除一些完整的条目(见下图)。
我发现这张表是什么乱七八糟的,但只有当它溢出到下一页时,如下所示:
从表中再删除一项,错误就会消失。
所以忽略这一点是公平的。
我会看看是否可以将其报告为 grotty 中的错误。
这已经超过 5 年了;我知道。但是如果其他人面临同样的问题,我只是回答了这样一个问题;很简单: How to use grep to search for options in a man page?
测试运行: