“Grotty”手冊頁訊息

“Grotty”手冊頁訊息

如果我嘗試使用 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                         │

是什麼原因導致這些訊息以及如何防止它們?

答案1

我沒有mpv安裝,但這似乎更像是一個警告grotty(處理手冊頁源以將其列印到標準輸出的程式)可能來自不相容的手冊頁。你有沒有嘗試過

man mpv 2> /dev/null | grep dvdnav

?這會將錯誤和警告重定向grotty到接收器,以便您應該獲得更清晰的輸出。

然而,該錯誤可能是手冊頁中的錯誤mpv(或者在grotty,你永遠不知道)。

答案2

我很確定這是由手冊頁文字格式化程式中的錯誤引起的。

[更新:另請參閱答並參考漏洞報告。

man grotty說,

grotty 將 GNU troff 的輸出轉換為適合打字機類設備的形式。


要調試這個首先,檢查是否也可以使用groffer(圖形羅弗)顯示此手冊頁。

當我遇到這些錯誤時,我發現 groffer 工作正常,沒有錯誤,但是 grotty 拋出了這個「第一行上方的字元被丟棄」錯誤。


所以我挖得更深一點。給我帶來麻煩的頁面是 zoneminder.1。

首先我解壓縮它:

gunzip -k zoneminder.1.gz

然後使用它我可以運行測試:

man -l man.1 | grep jksffjsd   #-l means man the local file, i.e. produce error messages

現在用分而治之的方法編輯 zoneminder.1。 先刪除最後 1/2,錯誤就消失了。然後只刪除了最後3/4,錯誤仍然存在。然後刪除了最後5/8,錯誤依然存在。然後查看它並開始一次刪除幾行,直到錯誤從打開切換到關閉。

我發現自己在一個表中,只能從表中刪除一些整個條目(見下圖)。

我發現這張桌子出了問題,但只有當它溢出到下一頁時,如下圖所示:

在此輸入影像描述

從表中再刪除一項,錯誤就會消失。


所以忽略這一點是公平的。

我會看看是否可以將其報告為 grotty 中的錯誤。

答案3

這已經超過5年了;我知道。但如果其他人也面臨同樣的問題,我剛剛回答了這樣的問題;很簡單: 如何使用 grep 在手冊頁中搜尋選項?

$ man ls | grep -- '--a'
     -a, --all
     -A, --almost-all
     --author

並將結果範圍縮小到僅以連字符開頭的行:

grep '^[[:space:]]*-' – 

測試運行:

$ man shutdown | grep -- '-' | grep '^[[:space:]]*-'
       --help
       -H, --halt
       -P, --poweroff
       -r, --reboot
       -h
       -k

相關內容