Como eu faço o utilitário 'man' tão abrangente quanto o ss64.com?

2

O utilitário 'man' que vem com uma distribuição Debian não é tão abrangente quanto o ss64.com, e em ambientes como o cygwin, é ainda mais. Existe um software ou um script que tornará meu 'homem' mais parecido com as páginas ss64? ss64.com contém referência de linha de comando para muitos ambientes diferentes, incluindo Windows CMD e Mac OS X e bash. Um exemplo que tenho é a man page para ler

Editar: De lifehacker.com , eu encontrei o seguinte função:

man () { /usr/bin/man $@ || (help $@ 2> /dev/null && help $@ | less) }   
O

help utility me fornece a página que estou procurando - mas não ignora a página man abaixo do esperado para read .

    
por Forethinker 23.03.2013 / 08:16

3 respostas

4

Ter uma página man para read (na seção 1 do manual) que diz algo diferente de "Não há nenhum comando read , mas seu shell pode ter um comando read builtin, consulte seu manual de shell para detalhes " é enganoso, porque read é um shell embutido e o comportamento e as opções suportadas variam de shell para shell.

Alguns sistemas (geralmente não Linux), no entanto, têm um comando read (em /bin , /usr/bin ou em outro lugar) como POSIX requer (mas a especificação Linux Standard Base (LSB) levanta esse requisito), e nesses sistemas, a página man descreverá o comportamento do comando read , e será enganosa porque geralmente não é read que você invoca quando liga read em um prompt do shell ou em um script de shell ou em system() , popen() ... mas o shell integrado em um.

O site link descreve o comando bash builtin read (embora não diga qual versão de bash e por Por exemplo, é diferente do read embutido na versão de bash desta máquina, que por si só é diferente da read da bash de outra máquina (mais antiga) à qual tenho acesso) em bash seção. A esse respeito, não é enganoso, mas onde é muito enganador é onde ele coloca todos os tipos de outros comandos não relacionados ao bash < mesma seção e meio que implica que bash (um dos muitos shells disponíveis no Linux e outros Unices, shells sendo uma das muitas maneiras de executar comandos) é necessário para executar esses comandos ou que esses comandos tenham alguma coisa fazer com isso.

Agora, quando você executar man read , se não houver nenhum comando read na seção 1 (comandos do usuário) do manual, ele pesquisará em outras seções. Por exemplo, se você instalou o pacote manpages-dev (no Debian), você obterá a página man da chamada do sistema read (na seção 2). Se não, mas você instalou o pacote de documentação do TCL, você obterá a man page para a função read TCL na seção 3tcl .

Você pode solicitar explicitamente o comando read user com man 1 read ( man -s 1 read em alguns sistemas). Se seu manual tivesse uma seção 1bash , ele apareceria antes da seção 1zsh , então você precisaria escrever man 1zsh read para obter a variante zsh . Você pode obter todas as páginas man com man -a read , você pode descobrir de quais pacotes elas vêm no Debian com: dpkg -S $(man -wa read) . Por exemplo, neste sistema, eu tenho:

$ dpkg -S $(man -wa read)
9base: /usr/share/man/man1/plan9-read.1.gz
tcl8.5-doc: /usr/share/man/man3/read.3tcl.gz
manpages-dev: /usr/share/man/man2/read.2.gz

Com zsh , pressionando Alt-H no prompt, traz o manual (via o comando man ) para o comando que você está digitando no momento. A instalação padrão do zsh no Debian a melhora para fazer uso da função run-help (veja info -f zsh --index-search=run-help ), então você também pode obter ajuda para os recursos internos.

Com o shell fish , há uma função help incorporada que tenta trazer a documentação mais sensata para um determinado comando ou fish concept (de man ou a documentação fish ).

Se, por algum motivo, você for forçado a usar bash (sorriso) ou não puder se incomodar em mudar do padrão, bash também terá um comando help builtin que traz ajuda sobre bash builtins (no entanto, observe que help read é como help '*read*' , ou seja, ele traz o manual para todos os builtins cujo nome contém read , use help '[r]ead' , por exemplo, se você quiser apenas o manual read ). / p> A ajuda de

bash só funciona para bash builtins. Se você quiser estendê-lo para incluir a pesquisa no manual nas seções 1 (comandos do usuário) e 6 (jogos) e 8 (comandos administrativos), você pode redefini-lo como:

help() {
  builtin help "$@" 2> /dev/null ||
    MANSECT=1:8:6 man "$@"
}
    
por 23.03.2013 / 10:27
2

Como Stephane sugere uma armadilha potencial de favorecer páginas de manual on-line é que eles documentam versões mais antigas ou mais recentes de software do que o que você tem. Só por essa razão eu acho que é uma péssima prática começar a substituí-los por aqueles que você preferir, porque em algum ponto futuro pode haver alguma sutileza em relação às versões que é importante - e que pode ser muito complicado se você tiver substituído os documentos oficiais por documentos informativos, mas inadvertidamente incorretos .

Eu não usei ss64.com, mas parece uma referência decente para certas coisas; Eu presumo que é realmente destinado a direcionar cygwin usuários como a categoria "bash" é realmente um mash-up de bash built-ins e comandos unix comuns. Como tecnicamente o posterior não tem nada a ver com o bash , isso torna o conteúdo do site potencialmente enganoso, mas faria sentido a partir de uma perspectiva do cygwin.

Eu concordo que as páginas man do GNU no linux (eu acho que as naves com o cygwin também) às vezes não são tão boas quanto as outras - por exemplo, o POSIX páginas são geralmente mais profundas do que as coisas na seção 3, e como o linux está em conformidade com posix, eu as considero como válidas. Mas eu ainda não iria substituir as páginas do meu sistema com elas - qual é o objetivo?

Todas essas coisas são efetivamente complementares; suas páginas do sistema são o que são. Hoje em dia, a maioria das pessoas tem uma conexão contínua à Internet de alta velocidade, e o tempo que leva para realmente ler uma documentação completamente diminui o tempo de acesso em uma rede. No entanto, às vezes, reflito sites que acho tão úteis que tê-los bem à mão seria bom:

wget -r -np -k -p http://www.site.com/dir/page.html

O endereço é o índice de nível superior da documentação, por exemplo, "ss64.com/bash/" provavelmente funcionaria. Os comutadores estão descritos em man wget . Então, você faz o download do site para um diretório local, o adiciona ao seu navegador ou cria um índice de tal e pronto.

    
por 23.03.2013 / 13:05
1

'Olá, autor do SS64 aqui, me deparei com essa questão 5 anos depois. Há alguns pontos positivos nas outras respostas acima e eu reescrevi a página de índice e muitas das páginas individuais para torná-las mais claras, que são comandos bash integrados e que são utilitários gerais.

Além disso, eu concordaria com os outros que nenhuma referência on-line pode substituir as páginas man internas. É útil poder pesquisar on-line e encontrar os comandos que você precisa usar, mas é sempre bom verificar se eles correspondem à sintaxe de sua própria máquina.

Para responder à pergunta, provavelmente a melhor e mais permanente maneira de melhorar suas páginas de manual locais é contribuir para o Projeto de documentação do Linux

Eu senti há muito tempo que o Linux poderia fazer com as páginas de manual HTML e o Ubuntu está fazendo algum trabalho sobre isso.

    
por 28.10.2018 / 13:10

Tags