Como seguir os links nas páginas de manual do linux?

92

Existe uma maneira de seguir os links mencionados em uma página de manual? Por exemplo, aqui está a página do manual ps; como faço para acessar o link marcado em vermelho?

Captura de tela da página de manual do ps

wsou eu
fonte
1
Além disso, vejo o man is an interface to the on-line reference manualsque (se não estou errado) significa que ele deve extrair todas as informações de alguma página da Internet, certo? Então, alguém tem uma idéia do que é o link http: //?
21
10
Aqui "on-line" significa "no computador" (em oposição a "no papel"), não "na Internet".
Gilles
1
"On-Line": você deve se lembrar daqueles jogos de aventura "Adventure" para PC lançados por uma empresa (então) chamada Sierra On-Line. páginas de manual: A melhor maneira de navegar pelas páginas de manual é usar seu editor. Dessa forma, navegando, pesquisando (etc.) o texto ficará tão suave quanto todos os atalhos da memória muscular desde há muito tempo. Além disso, digamos que você trabalhe em um projeto de programação - você pode copiar das páginas do manual para o seu código. Nada menos do que interação perfeita. Confira isso e meu comentário na resposta de @Gilles .
Emanuel Berg

Respostas:

52

As páginas do manual datam do Unix First Edition . Embora o hipertexto tenha sido inventado, ele ainda estava na infância; a web estava a duas décadas de distância, e o manual era um livro impresso real, geralmente com um comando por página, se eles se encaixassem (é por isso que foram chamados de páginas).

O formato usado para as páginas de manual evoluiu um pouco desde então, mas a maioria das páginas não é realmente projetada para hipertexto, e o manprograma padrão não o suporta (é apenas um visualizador de texto sem formatação, com hacks para suportar alguma formatação básica). No entanto, existem programas de visualização da página de manual que reconstroem alguns hiperlinks, principalmente links para outras páginas de manual, que são tradicionalmente escritas no formato man(1)onde mané o nome da página de manual e 1é o número da seção :

  • tkman , um visualizador de páginas de manual da GUI com hiperlinks
  • WoMan ( wiki , comparsion man , anteriormente ), um navegador de página de manual para o Emacs, suportando hiperlinks
  • man2html , um conversor de homem para HTML (além de um navegador da web para ler o resultado)

Você pode navegar pelas páginas de manual de vários sistemas operacionais, convertidos em HTML por man2htmlou ferramentas similares, em vários sites online, por exemplo:

Algum tempo depois que as páginas de manual se tornaram o formato de documentação estabelecido no unix e algum tempo antes da criação da Web, o projeto GNU introduziu o formato de documentação de informações , mais avançado que o man, ao mesmo tempo em que se mantinha uma simples marcação projetada para terminais de texto. A principal inovação da informação em comparação com o homem era ter documentação de várias páginas com hiperlinks para outras páginas. Info ainda é o formato de documentação preferido para projetos GNU, embora a maioria das páginas de Info seja gerada a partir de uma fonte Texinfo (ou às vezes outros formatos) que também pode gerar HTML. Quando a documentação de informações de um programa existe, geralmente é o manual principal, enquanto as páginas de manual contêm apenas informações básicas sobre argumentos de linha de comando.

Gilles
fonte
5
Ótima resposta! Também vale a pena mencionar que existe um outro modo para as páginas de manual no Emacs, aquele (pelo menos eu) supera apenas M-x man(e C-h v mode-nameé Man): pelo menos em um aspecto, é superior a WoManporque exibe tabelas ( captura de tela ). Obviamente, também está com hiperlink.
Emanuel Berg
1
A interface do usuário do programa de informações parece errada e contra-intuitiva. Eu não vi ninguém usando isso.
Pavel Šimerda
@ PavelŠimerda> A interface do usuário do programa de informações parece errada e contra-intuitiva. <Emm, comparado com o que? Para less (1) (que é o pager padrão para man (1) no GNU) - aquela coisa em que você deve se lembrar de como voltar atrás , pois o <backspace> não está vinculado (e o <pgup> pode não funcionar) ? A chave primária é b, por esse caminho. Para um usuário de qual paradigma de interface isso pode ser intuitivo?
Dmitry Alexandrov
@ PavelŠimerda> Não vi ninguém usando isso. <Sempre use info (1) para manpages leitura quando ficou preso em um terminal de texto para a razão exata, que ao contrário de menos (1) que não converter mudos page(N)links em hiperlinks. Surpreendeu-se bastante o fato de não ter sido mencionado na resposta de Gilles nessa qualidade.
Dmitry Alexandrov
37

Primeiro de tudo, não é um link. É apenas um sublinhado. As páginas de manual são apenas documentos de texto com um pouco de formatação simples que um terminal pode suportar. O sublinhado é apenas um destaque, não há "link" envolvido.

O mancomando normal é apenas um formatador de texto. De fato, o mancomando nem exibe o texto, manapenas formata as informações armazenadas no arquivo de página do manual [1] e envia a saída formatada para outro programa (geralmente less) que exibe a saída formatada na tela. Esses programas de exibição não têm conceito de links.

Existem alguns leitores de documentação especiais que podem analisar a formatação dessa maneira e adivinhar que esse destaque pode indicar que há uma página de manual relacionada que pode ser acessada e criar um link, mas eu não sei quais fazem. Talvez pinfo?

Se você deseja formatar na Web com hiperlinks, pode encontrar praticamente qualquer página de manual do UNIX on-line com links adicionados. Tente digitar man [anything]no google e você quase certamente obterá um nos primeiros acessos.

No caso do seu exemplo, o destaque visual é uma pista de que esse é outro nome de programa que possui sua própria página de manual que você pode acessar facilmente. Tente man 1 top. O 1 indica a seção das páginas do manual em que procurar. Consulte esta pergunta para obter uma explicação das seções: O que significam os números em uma página do manual?


[1] Se você abrir o manarquivo de paginação em um editor de texto, verá a manpágina bruta que não está formatada para facilitar a leitura. A manpágina bruta é escrita em uma linguagem de marcação chamada troff. Para obter mais informações troffe como escrever uma manpágina, consulte: https://liw.fi/manpages/ .

Caleb
fonte
Alguma idéia do porquê man 1 top? Quero dizer, deve ser algo como, ps 1 topporque encontrei o link na página de manual para ps. "man 1 top" não faz sentido para mim. Por favor, esclareça.
21
Existem também alguns recursos que disponibilizam as páginas de manual na Internet, com as referências substituídas pelas href's, que são clicáveis.
Gabe.
1
Se você deseja seguir o top(1)"link", é necessário abrir topa página do manual na 1ª seção. Para mais informações sobre as seções, consulte man (1). ps 1 topnão faz nenhum sentido, pois você apenas executará o pscomando com alguns parâmetros estranhos.
RVS
2
@Aahan é man 1 top porque você deseja ver a página de manual do comando top na 1ª seção das páginas de manual online. O topo de referência (1) significa exatamente isso, o topo da 1ª seção das páginas de manual. Para ver isso, digite "man 1 top" no prompt. Veja "homem homem"
gabe.
1
@ Aaran: As seções "do manual abrangem diferentes tópicos. A seção 1 é sobre comandos do usuário (coisas que você digita no prompt), a seção 2 é chamada do sistema e assim por diante. Algumas strings aparecem em mais de uma seção. Na máquina em que estou agora readlinkaparece na seção 1 e na seção 2 e printfnas seções 1 e 3. Se você digitar man command, o homem tenta seções em ordem numérica e exibe a primeira que encontrar, ou você pode ser específico com o man # commandque precisa fazer para obter a documentação para a readlinkchamada de sistema.
dmckee
12

Esta é uma resposta muito tardia, mas use w3mman. O w3mman é o pager manual do sistema da w3m.

https://linux.die.net/man/1/w3mman

Você pode experimentá-lo instalando o pacote w3m. Acredito que este pacote esteja registrado nos repositórios de software da maioria das principais distribuições Linux / UNIX e Cygwin.

akawaguc
fonte
1
Uma resposta tardia que acrescenta alguma resposta à pergunta que ainda não foi mencionada, nunca é um problema! Bem-vindo ao Unix e Linux StackExchange!
Bernhard
w3mmantambém é fornecido com a w3minstalação padrão do Macports . É ótimo :) Obrigado!
Sampablokuper
8

Deixe-me tentar interpretar sua pergunta um pouco mais no sentido em que tento seguir seu fluxo de trabalho. O que você provavelmente gostaria de ter é uma combinação de teclas em uma manpágina que o leva diretamente aos comandos sublinhados sobre os quais você está lendo. Portanto, não é necessário instalar outra coisa, nem abrir outro console e esquecer a sintaxe exata, por exemplo.

Esta solução mais simples é o ponto de exclamação (se você estiver usando lesspara exibir as páginas de manual) e deseja ir para o sublinhado top:

!man top

Ou

!man 1 top

Você precisará fechá-los pressionando qvárias vezes. Observe também que isso não funcionará se LESSSECURE=1for definido como variável ambiental, o que tornaria a execução lessno modo seguro e não permitirá o uso !. Ele informará algo como "Comando não disponível".

Anne van Rossum
fonte
1

Embora o w3mman seja uma solução para seguir os links, não usa toda a tela (pelo menos no ubuntu 12.10)

Eu prefiro usar:

$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'

adicione o último comando a ~ / .bash_aliases ou script de inicialização semelhante para obtê-lo em todas as sessões.

O -P w3m é porque o primeiro navegador a hman é o lynx ou o navegador sensível, mas eu prefiro o w3m

hman é uma ferramenta incluída no html2man. Veja isto

Se sair com confirmação é chato para você, como para mim é usar este

albfan
fonte
Meu erro, o pacote deve ser html2man
albfan
1

Especificamente para o Ubuntu, existe o Yelp. Ele é instalado por padrão e, por padrão, é capaz de exibir páginas de manual, embora a chamada para fazer isso não seja a mesma do mancomando; um alias ou uma função shell pode solucionar o último ponto (depende do seu shell).

yelp 'man:exit'

O padrão será uma seção de uma maneira que eu não conheço. Lembrete: para obter a lista de seções de um tópico manual, use whatis, como em whatis exit.

Para solicitar ao Yelp que mostre uma página de manual de uma seção específica, diga 2, faça:

yelp 'man:exit(2)'

Problemas: o yelp possui bugs e esteja preparado para obter vários erros de saída ao invocá-lo na linha de comando. Além disso, um alias ou uma função de shell personalizada pode ajudar a redirecionar todos os erros para/dev/null

Hibou57
fonte
1

Como eles disseram, não foi projetado para isso.

Você pode usar info mane pressionar Enter quando estiver na seção VER TAMBÉM no item.

info - leia documentos Info

trilhas binárias
fonte
1

Eu tenho um (dois) hack (es).

hackear 1

Coloque isso no seu ~ / .bashrc ou ~ / .zshrc

function man(){
    for arg in "$@"; do
        vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
    done
}

Screenshot ..

captura de tela manual no vim

Asciinema ..

https://asciinema.org/a/130131

Agora..

  1. quando você digita man vim, por exemplo, ele abrirá esta página de manual no vim

    • se você digitar man man vim, por exemplo, ele abrirá mano manual primeiro e depois que você sair do vim, ele abrirá vimo manual
  2. quando você pressiona K(é maiúsculo k) quando você está em outra página de manual na parte inferior (a seção VER TAMBÉM ), você pula para este manual (infelizmente dentro de um pager menos - é porque nós temos let no_man_maps = 1; se você não faça isso, então o vim forçará qa existir :qe você não poderá gravar uma macro facilmente, e o vim poderá se comportar de outras formas).

    • sair deste segundo manual digitado o levará de volta ao manual anterior que você estava visualizando
  3. você obtém um destaque muito bonito da sintaxe, uma vez que você carregou ftplugin / man.vim e o ft é (automaticamente) definido como man.

  4. você pode copiar e colar, navegar livremente no vim e até modificar o buffer e :w ~/usefulfile. Você pode fazer tudo o que normalmente faria no vim, incluindo macros de registro, puxar para a área de transferência com "+y(se houver +clipboard), etc, etc.

Acho muito melhor do que menos .

O único revés menor que encontrei (que ainda existe se você usar menos como seu pager) é se deseja ter vários manuais abertos em uma sessão do vim. Eu realmente não vejo uma maneira de fazer isso.

Algumas notas:

  1. se você tentar salvar o buffer, você receberá E382: Cannot write, 'buftype' option is set

    • Eu gosto que você não pode salvar, pois evita salvá-lo acidentalmente
  2. você ainda pode salvar como :w /tmp/man.man

    • se você salvá-lo com uma .manextensão, abri-lo definirá o tipo de arquivo manpara você
    • se você não salvá-lo com uma .manextensão, basta definir o ft manexecutando:set ft=man
  3. se você precisar fazer alguma coisa ao abrir páginas de manual, poderá usar autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!', por exemplo.

  4. Coloquei o seguinte no meu vimrc para poder pressionar Kpara tentar abrir o manual e, em seguida, pressionar Gpara voltar ao manual anterior:


augroup man
    autocmd!
    autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
    autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END

hackear 2

coloque isso no seu ~ / .bashrc ou ~ / .zshrc

function man(){
    declare -a args
    for arg in "$@"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

Screenshot ..

vários manuais no vim

Asciinema ..

https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv

Isso resolve o problema que hackea 1 e menos face (agora você pode ver vários manuais em um buffer), mas é menos elegante.

Notas:

  1. IMPORTANTE, se você deseja que o hack2 funcione, você deve colocar o :let no_man_maps = 1seu ~/.vimrc. Isso ocorre porque o vim será fonte .../vim80/man.vime qserá remapeado à força :q.

  2. há mais limpeza envolvida (agora você armazena todos os manuais em /tmp/*.man )

  3. agora você pode, no entanto, visualizar várias páginas de manual em uma sessão, conforme observado acima

  4. se você pressionar K, ainda abrirá uma nova sessão do vim, no entanto

    • se você quiser, pode vincular um autocmd (usando um autocmd como o acima) para fazer algo parecido autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"ou algo louco como esse ( não testado )
Dylan
fonte
desculpas por asciinema mal colorido. As cores parecem muito melhores no meu terminal.
Dylan
0

Consegui usar o --htmlargumento para manpara abri-lo no navegador definido pela variável de ambiente $ BROWSER, portanto:

BROWSER=google-chrome man ps --help

Estou usando o Fedora. Não tendo certeza se isso funciona para sua distribuição, teste e relate nos comentários.

tutuDajuju
fonte
A opção parece reconhecida no Ubuntu 12.04, mas falha.
precisa saber é o seguinte
OK, o pacote groffprecisa ser instalado. O groffcomando pode estar lá enquanto o pacote com o mesmo nome não estiver (o comando vem com groff-base, não o groffpacote completo ). Eu faço man --html="surf file%c//%s" <command>, e está tudo bem. No entanto, existe um hipertexto muito, muito limitado: - /.
Hibou57