Como sei se a página man que estou vendo é a correta?

3

Por exemplo,

[fakename]$ type echo
echo is a shell builtin

Mas o man echo me fornece a versão GNU dos utilitários de echo . Qual é a maneira mais fácil de saber se a página de manual que estou vendo é a correta, ou seja, a do utilitário que eu obteria se a invocasse diretamente?

    
por extremeaxe5 05.08.2018 / 01:28

6 respostas

3

Você não, realmente. Não sem conhecimento externo à página man.

No caso de echo (e printf e test , ...), geralmente é um shell embutido, portanto, você precisará saber disso e ler a documentação do shell. (E echo é notoriamente diferente em implementações diferentes, use printf .)

Na maioria, se não em todos os shells, você pode descobrir se algo está embutido com type command , por exemplo, type echo imprimirá echo is a shell builtin . ( type é especificado por POSIX mas por exemplo fish também é compatível, pois não é POSIXy como é.) No Bash, você leria man bash , a documentação on-line ou use o comando interno help (que é específico do Bash e que você precisa saber existe).

Mesmo que o comando não seja embutido, é possível que existam vários comandos com o mesmo nome, rename sendo um exemplo famoso (veja . Agora, seu sistema operacional deve ter a man page correta para o utilitário atualmente instalado e, por exemplo, no Debian, o sistema de "alternativas" atualiza as páginas de manual correspondentes também quando as alternativas de comando são alteradas. Mas se você ler uma página de manual on-line , precisará estar ciente disso.

Muitos utilitários têm uma opção de linha de comando como --version , que pode indicar a implementação desse comando. (Mas nem todos os utilitários têm isso. Eu acho que é um GNUísmo originalmente, então os utilitários GNU têm, assim como aqueles que copiaram o costume.) No caso de rename , ele funciona para dizer duas coisas diferentes. implementações à parte:

debian$ rename --version
/usr/bin/rename using File::Rename version 0.20
centos$ rename --version
rename (util-linux-ng 2.17.2)

Além disso, seu sistema pode ter um alias ou uma função com o mesmo nome de um utilitário, geralmente para modificar o comportamento do utilitário. Nesse caso, os padrões apresentados em uma página do manual podem não se aplicar. Os aliases para ls são comuns, assim como os aliases adicionam -i a rm ou mv . Mas type foo também diria se foo é um alias ou uma função.

    
por 05.08.2018 / 13:56
0

Deve ser possível invocar a versão interna não-shell, fornecendo o caminho completo (que você pode obter com which echo ). Não há manpages separadas para internos de shell; para documentação sobre aqueles que você vai querer procurar o manpage para o seu shell. O comando "type" que você mencionou acima é a melhor maneira de descobrir o que você obterá.

    
por 05.08.2018 / 02:08
0

Se você quer o manual para um comando interno, então você precisa olhar o manual do seu shell. O comando será documentado nele, junto com todos os outros comandos internos (ou haverá pelo menos uma referência para onde a documentação para builtins deve ser encontrada).

  • bash : man bash ou help echo de uma concha bash interativa.
  • zsh : man zsh (e depois de um pouco de leitura, man zshbuiltin )
  • fish : man fish (e depois de um pouco de leitura, help echo )

O manual obtido para man echo documents /bin/echo , ou seja, o comando external echo . Este comando não é o que você usaria quando você usa echo sem um caminho explícito.

    
por 05.08.2018 / 13:30
-1

Como o comando do qual você deseja obter informações é um shell integrado, digitar help <command name> no mesmo shell fornecerá a entrada de ajuda correta:

$ help echo
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.
    ...

Como alternativa, você pode digitar man bash (ou qualquer shell que esteja usando) e encontrar o arquivo que estava procurando.

Infelizmente, não há uma maneira fácil de verificar se uma página man corresponde totalmente ao comando que você deseja executar. Obter a página "certa" é mais complicado do que parece, pois isso dependerá de muitos fatores, como o caminho completo do comando, variáveis de ambiente e aliases, e é tecnicamente impossível que man seja responsável por todos esses fatores. No entanto, depois de um curto período, você deve desenvolver uma compreensão geral de onde procurar ajuda.

Se eu fosse descrever um algoritmo geral para obter a documentação correta nos mais modernos * nices, seria algo como isto:

  • Precisa de ajuda com um built-in ( type <command> diz que está embutido)?
    • Use help <command> ou man <shellname> se help estiver indisponível no seu shell.
  • Você quer sua ajuda sucinta e técnica?
    • Use man <command> (ou man <section> <command> se houver várias entradas em seções diferentes, consulte man man na lista de seções)
  • Deseja sua ajuda na forma de um tutorial / manual interativo mais longo (se disponível)?
    • use info <command>
  • Se as etapas acima falharem:
    • Verifique /usr/share/doc/<package name> para obter documentação adicional sobre o pacote, como páginas HTML.
    • Execute o comando com as opções -h ou --help , supondo que o comando seja confiável. Isso muitas vezes dará um breve resumo do que ele faz e lhe dirá onde você pode encontrar mais informações.
    • Google.

mas devo reiterar, isso tudo se tornará "natural", já que se gasta algum tempo com o SO.

    
por 05.08.2018 / 13:27
-4

man é dividido em seção:

  1. Seção geral
  2. Chamadas do sistema
  3. Funções da biblioteca
  4. Formatos de arquivo
  5. Jogos e protetores de tela
  6. Diversos
  7. Administração do sistema

Dependendo do que você está procurando, você pode invocar man assim para evitar confusão: man section command .

Para mais informações, você pode usar man man

    
por 05.08.2018 / 02:58
-4

Se a sua distribuição de SO não tiver páginas man para aqueles programas que mencionam as diferenças, você deve fazer um relatório de bug.

Na verdade, essa é a tarefa dos criadores de distro, mas se você digitar:

type cmdname

você obterá a saída se cmdname for um shell embutido. Se você sabe qual shell está usando, pode executar:

man shellname

substituindo shellname pelo nome do seu shell. A página man do seu shell deve conter informações sobre os comandos incorporados.

Deixe-me dar um exemplo de como um UNIX amigável deve documentar isso: link

    
por 05.08.2018 / 13:06

Tags