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

80

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

    
por its_me 05.08.2011 / 22:07

9 respostas

47

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

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

Você pode navegar nas páginas de manual de vários sistemas operacionais, convertidos em HTML por man2html ou ferramentas semelhantes, em vários sites on-line, por exemplo:

Algum tempo depois de as man pages terem se tornado o formato de documentação estabelecido no unix e algum tempo antes de a web ser inventada, o projeto GNU introduzido o formato de documentação info , mais avançado do que o homem, ao mesmo tempo que mantém a simples marcação projetada para terminais de texto. A principal inovação da informação em relação ao 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 Informações sejam geradas a partir de uma fonte Texinfo (ou às vezes outros formatos ) que também pode gerar HTML. Quando existe uma documentação informativa para um programa, geralmente é o manual principal, enquanto as páginas man contêm apenas informações básicas sobre os argumentos da linha de comando.

    
por 05.08.2011 / 23:44
33

Primeiro de tudo, não é um link. É apenas um sublinhado. Man pages são apenas documentos de texto com um pouco de formatação simples que um terminal pode manipular. O sublinhado é apenas um destaque, não há "link" envolvido.

O comando normal man é apenas um formatador de texto. Na verdade, o comando man nem exibe o texto, man apenas formata as informações armazenadas no arquivo de manual man [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 nenhum conceito de links.

Existem alguns leitores de documentação especiais que podem analisar formatações desse tipo e adivinhar que tal destaque pode indicar que existe uma página de manual relacionada que pode ser obtida e criar um link, mas eu não não sei quais são. Talvez pinfo ?

Se você quiser formatação da web com hiperlinks, você pode encontrar praticamente qualquer página man do UNIX online com links adicionados. Tente digitar man [anything] no google e você quase certamente obterá um nos primeiros hits.

No caso do seu exemplo, o realce visual é um indício de que esse é outro nome de programa que tem sua própria página de manual que você pode facilmente acessar. Tente man 1 top . O 1 indica a seção das páginas man a serem examinadas. Veja esta pergunta para obter uma explicação das seções: O que os números em uma página de homem significa?

[1] Se você abrir o arquivo da página man em um editor de texto, verá a página man bruta que não está formatada para facilitar a leitura. A página man bruta é gravada em uma linguagem de marcação chamada troff . Para mais informações sobre troff e como escrever uma página man , consulte: link .

    
por 05.08.2011 / 22:16
9

Esta é uma resposta muito atrasada, mas use o w3mman. w3mman é o pager manual do sistema por w3m.

link

Você pode tentar 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.

    
por 14.12.2012 / 03:56
6

Deixem-me tentar interpretar a sua pergunta um pouco mais de uma forma em que tento seguir o seu fluxo de trabalho. O que você provavelmente gostaria de ter é uma combinação de chaves dentro de uma página man que o leve diretamente aos comandos sublinhados sobre os quais você está lendo. Então, não ter que 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 less para exibir as páginas man) e quiser ir para o top :

sublinhado
!man top

Ou

!man 1 top

Você terá que fechá-los pressionando q várias vezes. Observe também que isso não funcionará se LESSSECURE=1 estiver definido como variável de ambiente, o que tornaria a execução less no modo seguro e não permitiria o uso de ! . Ele lhe dirá algo como "Comando não disponível".

    
por 02.03.2015 / 17:03
1

Embora o w3mman seja uma solução para seguir 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 para hman é lynx ou sensible-browser mas eu prefiro w3m

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

Se a saída com confirmação for irritante para você, como para mim, use this

    
por 06.03.2013 / 23:18
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 invocação para fazer isso não seja a mesma que a do comando man ; um alias ou uma função de shell pode funcionar em torno do ú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 para um tópico manual, use whatis , como em whatis exit .

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

yelp 'man:exit(2)'

Problemas: o yelp tem erros e está preparado para receber vários erros ao invocá-lo a partir da linha de comando. Há também um alias ou uma função de shell personalizada que pode ajudar a redirecionar todos os erros para /dev/null

    
por 13.08.2014 / 01:02
1

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

Você pode usar info man e, em seguida, pressionar Enter quando estiver na seção VER TAMBÉM do seu item.

info - read Info documents

    
por 24.08.2016 / 01:04
1

Eu tenho um (par de) hack (s).

hackear 1

Coloque isso no seu ~ / .bashrc ou no seu ~ / .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 ..

Asciinema..

link

Agora ..

  1. quando você digita man vim , por exemplo, ele abre esta página man em vim

    • se você digitar man man vim , por exemplo, primeiro abrirá o manual man e, depois de sair do vim, ele abrirá o manual vim
  2. quando você pressiona K (que é o capital k ) quando você está em outra página man na parte inferior (a seção VEJA TAMBÉM ), você vai pular para isso manual (infelizmente dentro de um pager a menos - isso acontece porque temos let no_man_maps = 1 ; se você não fizer isso, então o vim forçará q a ser :q e você será incapaz de gravar facilmente uma macro, e o vim pode comportar-se de maneira aleatória de outras maneiras).

    • Ao sair deste segundo manual que você inseriu, você voltará ao manual anterior que estava visualizando
  3. você obtém realce de sintaxe muito bonito já que 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 faria normalmente no vim, incluindo macros de registro, puxar para a área de transferência com "+y (se tiver +clipboard ), etc, etc.

Acho muito melhor do que menos .

O único pequeno contratempo que encontrei (que ainda existe se você usa menos como seu pager) é se você deseja ter vários manuais abertos em uma sessão vim. Eu 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 a extensão .man , a abertura definirá o tipo de arquivo como man para você
    • se você não salvá-lo com a extensão .man , basta definir o ft como man executando :set ft=man
  3. se você precisar fazer coisas ao abrir páginas de manual, pode usar autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!' , por exemplo.

  4. Eu coloquei o seguinte no meu vimrc para que eu possa pressionar K para tentar abrir o manual, e então pressionar G para 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

hack 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 ..

Asciinema..

link

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

Notas:

  1. IMPORTANTE se quiser que o hack2 funcione, você deve colocar :let no_man_maps = 1 no seu ~/.vimrc . Isso ocorre porque o vim irá fornecer .../vim80/man.vim e q serão remapeados à força para :q .

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

  3. agora você pode visualizar várias páginas man em uma sessão, conforme mencionado acima

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

    • se você quiser, pode ligar um autocmd (usando um autocmd como o acima) para fazer algo como 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 assim ( não testado )
por 23.07.2017 / 01:19
0

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

BROWSER=google-chrome man ps --help

Estou usando o Fedora. Não tenho certeza se isso funciona para sua distro, por favor, teste e informe nos comentários.

    
por 12.02.2014 / 09:38

Tags