Como acessar man pages como conteúdo estruturado

3

Estou construindo um recurso que faz referência a páginas do manual e estou imaginando se alguém sabe como acessar as páginas do manual como dados estruturados . Minha abordagem atual é fazer um lote se REGEXing, mas isso é entediante e propenso a erros.

Eu não sou especialista em * nix, mas o que eu entendo sobre man pages é que eles são basicamente arquivos de texto com uma sintaxe específica que é analisável pelo comando man . Isso me deixa um pouco cético de que pode haver uma maneira fácil de, digamos, acessar uma lista de opções ou sinalizadores. Mas talvez haja uma maneira de fazer isso que eu não sei.

    
por emersonthis 18.01.2018 / 21:05

3 respostas

5

Você pode espiar como o shell de peixe constrói seu conclusões das páginas de manual em particular como __fish_complete_man funciona. Uma opção mais fácil, assumindo groff , pode ser a de emitir HTML e, em seguida, usar um dos muitos analisadores de HTML disponíveis para obter o que você deseja:

$ 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>
$ 

Isso é uma página man processada como HTML e selecionada usando XPath para obter a lista de sinalizadores na seção SINOPSE; usar seletores de CSS pode ser mais moderno hoje em dia. No entanto, o HTML gerado não é muito estruturado.

    
por 18.01.2018 / 21:39
2

As páginas man são roff formatadas em arquivos de texto, que infelizmente é um dos mais irritantes para analisar linguagens de formatação em torno de agora. Você pode ter alguma sorte buscando o que deseja consultando a documentação para qualquer implementação de roff usada pelo seu sistema (quase sempre será uma das nroff , troff ou groff ). O formato em si é um pouco complicado (foi projetado em uma época em que o minimalismo era o epítome do bom design de software), mas a estrutura da maioria das páginas man é razoavelmente consistente, então não deve ser muito difícil.

Além disso, você tem algumas outras opções. A primeira é ver as fontes das man pages na distribuição de código-fonte do software. A maioria dos softwares nos dias de hoje compila suas páginas de manual para as fontes roff analisadas pelo programa man a partir de algum outro formato, a maioria das quais é muito mais fácil de analisar do que as macros. A outra é procurar em ferramentas (incluindo groff ) que convertem man pages em outros formatos, como sugerido na resposta do thrig.

    
por 18.01.2018 / 21:54
0

Confira o manServer que é um script em perl de 1999 que analisa as páginas do manual de maneira simples e as apresenta como páginas da web. Tem todo o código perl que você precisa para interpretar a fonte troff.

    
por 19.01.2018 / 19:57