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?
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
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.
Ó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/ .
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.
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.
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".
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
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
}
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
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
você obtém um destaque muito bonito da sintaxe, uma vez que você carregou ftplugin / man.vim e o ft é (automaticamente) definido como man.
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:
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
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
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.
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[@]}"
}
Isso resolve o problema que hackea 1 e menos face (agora você pode ver vários manuais em um buffer), mas é menos elegante.
Notas:
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.
há mais limpeza envolvida (agora você armazena todos os manuais em /tmp/*.man )
agora você pode, no entanto, visualizar várias páginas de manual em uma sessão, conforme observado acima
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 )
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: - /.
man is an interface to the on-line reference manuals
que (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: //?Respostas:
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
man
programa 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 formatoman(1)
ondeman
é o nome da página de manual e1
é o número da seção :Você pode navegar pelas páginas de manual de vários sistemas operacionais, convertidos em HTML por
man2html
ou 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.
fonte
M-x man
(eC-h v mode-name
éMan
): pelo menos em um aspecto, é superior aWoMan
porque exibe tabelas ( captura de tela ). Obviamente, também está com hiperlink.b
, por esse caminho. Para um usuário de qual paradigma de interface isso pode ser intuitivo?page(N)
links em hiperlinks. Surpreendeu-se bastante o fato de não ter sido mencionado na resposta de Gilles nessa qualidade.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
man
comando normal é apenas um formatador de texto. De fato, oman
comando nem exibe o texto,man
apenas formata as informações armazenadas no arquivo de página do manual [1] e envia a saída formatada para outro programa (geralmenteless
) 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
man
arquivo de paginação em um editor de texto, verá aman
página bruta que não está formatada para facilitar a leitura. Aman
página bruta é escrita em uma linguagem de marcação chamadatroff
. Para obter mais informaçõestroff
e como escrever umaman
página, consulte: https://liw.fi/manpages/ .fonte
man 1 top
? Quero dizer, deve ser algo como,ps 1 top
porque encontrei o link na página de manual paraps
. "man 1 top" não faz sentido para mim. Por favor, esclareça.top(1)
"link", é necessário abrirtop
a página do manual na 1ª seção. Para mais informações sobre as seções, consulte man (1).ps 1 top
não faz nenhum sentido, pois você apenas executará ops
comando com alguns parâmetros estranhos.readlink
aparece na seção 1 e na seção 2 eprintf
nas seções 1 e 3. Se você digitarman command
, o homem tenta seções em ordem numérica e exibe a primeira que encontrar, ou você pode ser específico com oman # command
que precisa fazer para obter a documentação para areadlink
chamada de sistema.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.
fonte
w3mman
também é fornecido com aw3m
instalação padrão do Macports . É ótimo :) Obrigado!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
man
pá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
less
para exibir as páginas de manual) e deseja ir para o sublinhadotop
:Ou
Você precisará fechá-los pressionando
q
várias vezes. Observe também que isso não funcionará seLESSSECURE=1
for definido como variável ambiental, o que tornaria a execuçãoless
no modo seguro e não permitirá o uso!
. Ele informará algo como "Comando não disponível".fonte
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:
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
fonte
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
man
comando; um alias ou uma função shell pode solucionar o último ponto (depende do seu shell).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 emwhatis exit
.Para solicitar ao Yelp que mostre uma página de manual de uma seção específica, diga 2, faça:
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
fonte
Como eles disseram, não foi projetado para isso.
Você pode usar
info man
e pressionar Enter quando estiver na seção VER TAMBÉM no item.fonte
Eu tenho um (dois) hack (es).
hackear 1
Coloque isso no seu ~ / .bashrc ou ~ / .zshrc
Screenshot ..
Asciinema ..
https://asciinema.org/a/130131
Agora..
quando você digita
man vim
, por exemplo, ele abrirá esta página de manual no vimman man vim
, por exemplo, ele abriráman
o manual primeiro e depois que você sair do vim, ele abrirávim
o manualquando 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 temoslet no_man_maps = 1
; se você não faça isso, então o vim forçaráq
a existir:q
e você não poderá gravar uma macro facilmente, e o vim poderá se comportar de outras formas).você obtém um destaque muito bonito da sintaxe, uma vez que você carregou ftplugin / man.vim e o ft é (automaticamente) definido como
man
.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:
se você tentar salvar o buffer, você receberá
E382: Cannot write, 'buftype' option is set
você ainda pode salvar como
:w /tmp/man.man
.man
extensão, abri-lo definirá o tipo de arquivoman
para você.man
extensão, basta definir o ftman
executando:set ft=man
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.Coloquei o seguinte no meu vimrc para poder pressionar Kpara tentar abrir o manual e, em seguida, pressionar Gpara voltar ao manual anterior:
hackear 2
coloque isso no seu ~ / .bashrc ou ~ / .zshrc
Screenshot ..
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:
IMPORTANTE, se você deseja que o hack2 funcione, você deve colocar o
:let no_man_maps = 1
seu~/.vimrc
. Isso ocorre porque o vim será fonte.../vim80/man.vim
eq
será remapeado à força:q
.há mais limpeza envolvida (agora você armazena todos os manuais em /tmp/*.man )
agora você pode, no entanto, visualizar várias páginas de manual em uma sessão, conforme observado acima
se você pressionar K, ainda abrirá uma nova sessão do vim, no entanto
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 )fonte
Consegui usar o
--html
argumento paraman
para abri-lo no navegador definido pela variável de ambiente $ BROWSER, portanto:Estou usando o Fedora. Não tendo certeza se isso funciona para sua distribuição, teste e relate nos comentários.
fonte
groff
precisa ser instalado. Ogroff
comando pode estar lá enquanto o pacote com o mesmo nome não estiver (o comando vem comgroff-base
, não ogroff
pacote completo ). Eu façoman --html="surf file%c//%s" <command>
, e está tudo bem. No entanto, existe um hipertexto muito, muito limitado: - /.