맨페이지를 참조하는 리소스를 작성 중인데 맨페이지에 액세스하는 방법을 아는 사람이 있는지 궁금합니다.구조화된데이터? 나의 현재 접근 방식은많은정규식을 사용하면 지루하고 오류가 발생하기 쉽습니다.
나는 *nix 전문가는 아니지만 매뉴얼 페이지는 기본적으로 명령으로 구문 분석할 수 있는 특정 구문이 포함된 텍스트 파일이라는 것이 내 이해입니다 man
. 옵션이나 플래그 목록에 접근하는 쉬운 방법이 있다면 약간 회의적입니다. 하지만 어쩌면 내가 모르는 방법이 있을 수도 있습니다.
답변1
당신은 방법을 볼 수 있습니다생선 껍질설립하다매뉴얼 페이지 완성특히 그것이 어떻게 __fish_complete_man
작동하는지. 더 간단한 옵션은 groff
HTML을 내보낸 다음 많은 HTML 파서 중 하나를 사용하여 원하는 것을 얻는 것이라고 가정합니다.
$ groff -T html -mdoc xpquery.1 | xpquery -p HTML '//p[b="xpquery"][2]' -
<p style="margin-left:17%;"><b>xpquery</b>
[<b>−E </b><i>encoding</i>]
[<b>−n </b><i>namespace</i>]
[<b>−p </b><i>method</i>]
[<b>−S </b><i>xpath-subquery</i>]
[<b>−t </b><i>timeout</i>] <i>xpath-query
file-or-url ..</i></p>
$
그건매뉴얼 페이지HTML로 렌더링된 후 사용할 때 선택됨X 경로요약 섹션에서 플래그 목록을 가져오세요. 요즘에는 CSS 선택기를 사용하는 것이 더 인기가 있습니다. 그러나 생성된 HTML은 그다지 구조화되어 있지 않습니다.
답변2
맨 페이지는 다음과 같습니다로프서식이 지정된 텍스트 파일은 불행히도 현재 서식이 지정된 언어로 구문 분석되는 가장 성가신 파일 중 하나입니다. 시스템에서 사용하는 roff 구현에 대한 문서를 살펴보면 원하는 것을 찾을 수 있을 것입니다 (거의 항상 nroff
, troff
또는 중 하나임). groff
형식 자체는 약간 복잡하지만(미니멀리즘이 좋은 소프트웨어 디자인의 전형이었던 시대에 디자인되었습니다), 대부분의 매뉴얼 페이지는 구조가 상당히 일관되므로 그리 어렵지는 않습니다.
그 외에도 몇 가지 다른 옵션이 있습니다. 첫 번째 단계는 소프트웨어 소스 코드 배포판에서 매뉴얼 페이지의 소스 코드를 보는 것입니다. 오늘날 대부분의 소프트웨어는 맨 페이지를 다른 형식의 man 프로그램에 의해 분석되는 roff 소스 코드로 컴파일하며, 대부분은 roff 매크로보다 분석하기가 더 쉽습니다. 또 다른 방법은 groff
thrig의 답변에서 제안한 대로 매뉴얼 페이지를 다른 형식으로 변환하기 위한 도구(포함)를 조사하는 것입니다 .
답변3
확인하다인간 서버이것은 매뉴얼 페이지를 구문 분석하고 이를 간단한 방법으로 웹 페이지로 렌더링하는 1999년의 Perl 스크립트입니다. 여기에는 troff 소스 코드를 해석하는 데 필요한 모든 Perl 코드가 포함되어 있습니다.