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?
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?
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 formato man(1)
onde man
é o nome da página de manual e 1
é 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.
M-x man
(e C-h v mode-name
é Man
): pelo menos em um aspecto, é superior a WoMan
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, o man
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 (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 man
arquivo de paginação em um editor de texto, verá a man
página bruta que não está formatada para facilitar a leitura. A man
página bruta é escrita em uma linguagem de marcação chamada troff
. Para obter mais informações troff
e como escrever uma man
página, consulte: https://liw.fi/manpages/ .
man 1 top
? Quero dizer, deve ser algo como, ps 1 top
porque encontrei o link na página de manual para ps
. "man 1 top" não faz sentido para mim. Por favor, esclareça.
top(1)
"link", é necessário abrir top
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á o ps
comando com alguns parâmetros estranhos.
readlink
aparece na seção 1 e na seção 2 e printf
nas 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 # command
que precisa fazer para obter a documentação para a readlink
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.
w3mman
também é fornecido com a w3m
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 sublinhado top
:
!man top
Ou
!man 1 top
Você precisará fechá-los pressionando q
várias vezes. Observe também que isso não funcionará se LESSSECURE=1
for definido como variável ambiental, o que tornaria a execução less
no modo seguro e não permitirá o uso !
. Ele informará algo como "Comando não disponível".
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
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).
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
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.
info - leia documentos Info
Eu tenho um (dois) hack (es).
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 ..
Asciinema ..
https://asciinema.org/a/130131
Agora..
quando você digita man vim
, por exemplo, ele abrirá esta página de manual no vim
man 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 temos let 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 arquivo man
para você.man
extensão, basta definir o ft man
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:
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
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 ..
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
e q
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 )Consegui usar o --html
argumento 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 tendo certeza se isso funciona para sua distribuição, teste e relate nos comentários.
groff
precisa ser instalado. O groff
comando pode estar lá enquanto o pacote com o mesmo nome não estiver (o comando vem com groff-base
, não o groff
pacote 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: //?