Páginas On Man Man do Terminal

3

Com o risco de levantar uma questão que já possa ter uma resposta, gostaria de perguntar se alguém sabe se e como é possível ler man pages no meu terminal para programas / aplicativos que não estão instalados no meu sistema usando fontes online / ferramentas online.

Eu fiz um stackexchange e pesquise no Google, mas não encontrei nada sobre esse problema.

Por exemplo, man grep aumentará o manual do grep conforme o esperado. Por outro lado, man agrep dará um erro, pois agrep não está instalado. Para ler agrep manual eu tenho que google agrep man pages , obtendo resultados como este: link

PS: BTW parece estranho para mim que link não forneçam concord ...

Gostaria de saber se é possível executar o comando man agrep ou similar do meu terminal (sem instalar o agrep) e ler as man pages no terminal como sempre funciona.

Eu não espero que todas as páginas do mundo estejam disponíveis localmente; Eu só me pergunto se existe alguma maneira complicada de usar o homem (ou até mesmo outro comando) para pesquisar e exibir páginas man de progs não instalados sem ter que abrir o navegador, digite palavras-chave, busca nos resultados etc.

PS: Como notado por Kusalananda, levantar consultas na web pode levar a resultados não adequados para uma versão específica da distro (versões diferentes resultarão em pop-up). Então o melhor (no meu sonho) seria se houvesse algum tipo de comando interno / interno específico do Distro (Debian no meu caso) (ou até mesmo um switch) que pudesse recuperar páginas de manual on-line especificamente para minha configuração (algo como: man --online agrep ou onlineman agrep ). Parece não.

    
por George Vasiliou 01.01.2017 / 21:48

4 respostas

5

Você pode usar links : links -dump https://linux.die.net/man/1/agrep | less . Apenas mude a categoria e o nome e você é bom.

    
por 01.01.2017 / 22:11
2

Como alternativa, você pode considerar o navegador de texto em lynx . Dessa forma, você só precisa digitar:

lynx https://linux.die.net/man/1/agrep

Funcionou para mim em muitas situações e parece estar amplamente disponível em repositórios de software para muitos sistemas.

Até onde você sabe que tem a versão para o seu sistema, eu não acho que exista uma maneira de fazer isso sem obter o número da versão daquele que você instalou, e procurando na página man que você está tentando ler. .

    
por 02.01.2017 / 02:06
1

Se este fosse o Ubuntu, você poderia usar o comando dman do pacote bikeshed . De man dman :

dman   is   a   script   that   remotely   retrieves   manpages    from
http://manpages.ubuntu.com, but reads them on the local system.

This  is  often  useful  to read a manpage of a utility that you do not
have installed on the local system.

It will cycle through each manpage section available for a given TOPIC.

IIRC, dman é um script, por isso pode ser possível modificá-lo para funcionar com o link .

    
por 06.01.2017 / 05:40
0

Usar serviços on-line para exibir manuais é legal, mas assim que eu leio @Kusalananda comentar sobre tirar páginas de manuais de pacotes de instalação, eu fiquei obcecado em implementar essa técnica que vai garantir que eu leia o manual correto para o meu distro.

O único bug na solução abaixo é que ele é baseado em versões recentes do apt / dpkg que estão disponíveis no Debian Testing 8.6 e podem não estar disponíveis em outros sistemas.

Extraia as páginas man de arquivos .deb sem fazer download
Localize o arquivo deb como se você tivesse planos de instalar o pacote em questão (ou seja, yade):

apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4

PS: - print-uris switch imprime a URL do pacote deb, mas deb não é baixado.

Encontre as páginas man escondidas neste arquivo deb:

dpkg -c <(curl -sL -o- http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb) |grep "man/man" |grep -vE "\/$" |awk '{print $NF}'
./usr/share/man/man1/yade-batch.1.gz
./usr/share/man/man1/yade.1.gz

Leia a página man yade.1.gz (sem baixar o deb):

man <(dpkg-deb --fsys-tarfile <(curl -sL -o- http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb) |tar -xO ./usr/share/man/man1/yade.1.gz)

a página man é exibida corretamente usando o aplicativo man.

apt --version --> apt 1.4~beta2 (amd64)
dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
man --version --> man 2.7.6.1
tar --version --> tar (GNU tar) 1.29
curl --version --> curl 7.51.0 (x86_64-pc-linux-gnu) libcurl/7.51.0 GnuTLS/3.5.7 zlib/1.2.8 libssh2/1.7.0 nghttp2/1.17.0 librtmp/2.3  

Maneira alternativa de baixar o arquivo deb:
O método abaixo, baseado no clássico apt-get, ar e tar, deve funcionar em qualquer distribuição. O arquivo deb é baixado no diretório de trabalho atual, a página man é extraída e o arquivo é removido.

pkg="$1"
apt-get download "$pkg" 2>/dev/null
debname=$(find . -name "$pkg*.deb")
datatar=$(ar t "$debname" |grep "data.tar") 
#ar t prints out the contents of the archive 

if [[ ${datatar##*.} == "gz" ]];then #extension check 
  options="z"
elif [[ ${datatar##*.} == "xz" ]];then
  options="J"
else
  echo "data.tar archive inside deb is not a gz or xz archive. Exiting"
  exit 1
fi

manpage+=($(ar p $debname $datatar | tar t"$options" |grep "man/man" |grep -vE "\/$" |awk '{print $NF}')) #tar t lists the files included in archive
man <(ar p "$debname" "$datatar" | tar xO"$options" ${manpage[@]}) 
#ar p and tar -O prints archive files / contents in stdout to be read by man
rm -f $debname #or rm -i for more control.

Usando manpages.debian.org
Como uma terceira alternativa, a partir de janeiro de 2017, alguém pode usar um alias / script que extrairá a página man do debian nline, baseado no novo site de man pages debian que o leva diretamente para a página man correta / mais recente do pacote que você quer:

alias debman='function __debman { links -dump https://manpages.debian.org/jump?q=$1 |awk "/Scroll to navigation/,0" |less; };__debman'

chame pelo terminal como $ debman yade

    
por 06.01.2017 / 04:40