Man Página Completa Documentação Externa pdf ou construção de texto

0

Ubuntu 14.04
homem versão 2.6.7.1
gedit versão 3.10.4

Eu estou no processo de montar uma Documentação Completa da Página do Homem, atualmente como um arquivo txt, esperançosamente como um pdf, eventualmente, quando eu encontrar um conversor com formatação razoável, com o objetivo final de torná-lo disponível para a Comunidade como alternativa, recurso atualizável (eu certamente já vi perguntas suficientes sobre isso). O problema que eu tive é que o comando que estou usando para processar os arquivos man retorna caracteres fora da codificação de pelo menos gedit (ainda não tentei com editores alternativos). Aqui está o meu processo até agora:

alias manGet="sudo apt-get update && sudo apt-get upgrade;man -a /bin/* > binMan.txt && man -a /sbin/* > sbinMan.txt;cat binMan.txt sbinMan.txt > manAll.txt;gedit manAll.txt"
manGet

Uma vez no gedit, os problemas de codificação parecem surgir perto das quebras de página, onde mostrará uma série bastante longa de caracteres não exibíveis. Então, duas questões, em essência:

1) Como atualizo a codificação de caracteres para exibir esses arquivos, se possível? 2) Se não, como faço para baixar uma codificação que os suporte ou filtrá-los seletivamente?

Qualquer ajuda que você possa fornecer seria muito apreciada.

Observação: eu baixei e instalei o unicode, pensando que poderia usá-lo para encontrar a codificação apropriada, sem sorte (acho que não sei como usá-lo ainda, pessoalmente)

    
por SonOfEntropy 02.06.2014 / 00:30

2 respostas

1

Algumas coisas. Vamos começar com sua abordagem para capturar todos esses manpages. Deixe man fazer isso tudo para você com man -k . - começaremos com um exemplo mais curto:

$ man -k rmdir
rmdir (1)            - remove empty directories
rmdir (1posix)       - remove directories
rmdir (2)            - delete a directory
rmdir (3posix)       - remove a directory

Precisamos analisar essa lista. Precisamos do comando e da seção que está entre colchetes. Podemos dizer a awk para dividir isso para nós usando seu argumento -F (apenas informamos quais caracteres são nossos delimitadores) e, como um bônus, para salvar as variáveis de Bash, podemos ter awk criando a variável próximo comando também.

Antes de chegarmos lá, precisamos saber qual comando queremos executar. man pode gerar arquivos HTML se groff estiver instalado ( sudo apt-get install groff ). Esta é provavelmente a melhor idéia possível para você agora, pois é uma forma de formatação bastante simples que é preservada. Também é bastante universal nos dias de hoje. Usamos -Hcat para dizer a ele para renderizar HTML no comando cat (ele espera um navegador). O 1 é a seção (veja man man para saber mais sobre isso).

man -Hcat 1 rmdir

Então, para trazer tudo isso de volta, vamos deixar o awk dividir a man -k output, criar o comando e executá-lo em uma pequena linha:

man -k . | awk -F '[ ()]' '{print "man -Hcat",$3,$1," > "$1"."$3".html" | "/bin/sh"}'

Isso criará um arquivo HTML para a todas as páginas do manual . Levará muito tempo para terminar, então eu sugiro apenas testá-lo com o exemplo rmdir , então sugiro apenas começar com rmdir :

man -k rmdir | awk -F '[ ()]' '{print "man -Hcat",$3,$1," > "$1"."$3".html" | "/bin/sh"}'

Isso me dá quatro arquivos HTML ( rmdir.1.html , rmdir.1posix.html , rmdir.2.html e rmdir.3posix.html ). Para transformá-los em um livro, sugiro strongmente que você consulte htmldoc . Isso é um aplicativo gráfico e de linha de comando. Sugiro me acostumar com a versão gráfica primeiro.

E lá vai você. Todas as suas páginas de trabalho ordenadas, com uma tabela de conteúdo (se você quiser), com a formatação preservada em uma boa saída de documento (HTML ou PDF).

    
por Oli 02.06.2014 / 02:02
0

Existem muitos problemas sérios ao fazer isso. Eu percebo que quando eu corro isso, isso faz com que o terminal cuspa toneladas de erros por segundo. Uma maneira melhor seria fazer assim:

for binary in $(ls /bin); do man -a $binary >> ~/binMan.txt; done

No entanto, acho que seria melhor se você fizesse um arquivo por programa, o que, nesse caso, poderia ser alcançado como:

for binary in $(ls /bin); do man -a $binary > ~/$binary.txt; done
    
por mmstick 02.06.2014 / 01:49