'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의 출력을 타자기와 같은 장치에 적합한 형식으로 변환합니다.


이것을 디버깅하려면먼저 (graphical roffer)를 사용하여 이 매뉴얼 페이지를 표시할 수도 있는지 확인하십시오 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

관련 정보