Onde estão documentados os comandos disponíveis na janela da página de manual e esses comandos dependem do sistema?

9

Tendo usado o Linux há anos, subitamente descobri que não sabia como usar o mancomando corretamente. É sabido que se pode digitar qpara sair de uma página de manual, /pesquisar e outras. Não sei, porém, onde estão documentados. Eu tentei man man man -a man info mane pesquisei no Google, sem sorte.

Por favor, aponte-me para a posição correta para procurar essas informações, mesmo que estejam corretas man mane eu as tenha esquecido, está perfeitamente bem, deixe-me saber.

Esses comandos são diferentes para sistemas operacionais diferentes ou para diferentes distribuições do Linux?

Weijun Zhou
fonte
As páginas de manual não são apenas visualizadas less? (É no meu distribuição, pelo menos, e hmostra um resumo dos lesscomandos)
Roberto Rastapopoulos
@Rastapopoulos As páginas de manual não são apenas vistas less? Não. Porque lessnão é um utilitário padrão.
quer
Suponho que você possa usar readlink -f /usr/bin/pagerou readlink -f $(which pager)descobrir qual pager você possui (por padrão /bin/less) que mano pager usado. Ele pode (deve) o trabalho diretamenteman pager
Hastur
2
Se você ler suas páginas de manual usando moreou less, poderá digitar hpara obter ajuda. (ou você pode simplesmente usar emacs...)
Alex Vong
1
Se você digitar ?ou hno prompt do pager, deverá fornecer uma lista de comandos.
Barmar

Respostas:

11

De fato, está correto na página de manual man, na subposição "Controlando a saída formatada" e repetida posteriormente na seção "AMBIENTE" para uma boa medida:

Por padrão, o homem usa pager -s.
A página do manual explica como existe uma hierarquia de variáveis de ambiente e opções de linha de comando ( PAGER, MANPAGERe --pager) para substituir o padrão.

É assim que se lê em sistemas como o Debian Linux. Em sistemas como o Oracle Linux, por outro lado, o man-dbpacote foi construído com um padrão diferente, que ainda é refletido ali mesmo na página de manual nos mesmos lugares:

Por padrão, o homem usa less -s.

As man-dbtentativas organizadas para a auto-detectar, em tempo de compilação, que pager padrão para build-in para o comando, e documento na página de manual, fora de less, moree pager.

Em sistemas como o Debian Linux, o pagercomando faz parte do sistema "alternativas" e pode mapear para um dos vários comandos reais:

jdebp% update-alternative - list pager
/ bin / menos
/ bin / mais
/ usr / bin / pg
/ usr / bin / w3m
jdebp%

Portanto, consultamos suas respectivas páginas de manual sobre como tirá-las do teclado, de acordo com a alternativa escolhida. De maneira útil, o sistema de alternativas Debian mantém a página de manual sincronizada com o comando escolhido, portanto, a leitura desta página de manual é bastante direta:

homem pager

JdeBP
fonte
5

O homem usa um pager para mostrar o conteúdo.

Os detalhes exatos dependem de qual versão manvocê está usando.

Para a versão usada em muitos sistemas:

  • Se a opção -p pagerfor dada, esse pager será usado.
  • Caso contrário, se a variável de ambiente MANPAGERestiver configurada, ela será usada.
  • Caso contrário, se PAGERestiver definido, será usado.
  • Caso contrário, o padrão é usar /usr/bin/less

Se a página do manual estiver no formato HTML, BROWSERserá usada em vez de MANPAGER/PAGER

O Debian usa man-dbdiferentes padrões.

Leia man manpara detalhes

PiedPiper
fonte
Obrigado pela sua resposta. Embora a resposta explique como manfunciona, gostaria de perguntar se você pode fazer o favor de me indicar o lugar certo onde esse comportamento está documentado. Obrigado.
Weijun Zhou
Na minha man mansaída (novamente, manversão: 2.6.3), afirma que "por padrão, menos-s é usado.", Então espero que isso seja dependente da versão e do sistema?
Weijun Zhou
1
Este é apenas um exemplo da filosofia padrão do Unix: comandos pequenos e simples que operam em fluxos de texto e fazem exatamente uma coisa e fazem bem. Formatar um manual e paginar são duas coisas, e é por isso que elas são executadas por duas ferramentas diferentes. Dessa forma, a ferramenta de paginação pode ser reutilizada para outras tarefas, não apenas para exibir páginas de manual.
Jörg W Mittag
2

Graças a @Rastapopoulos, encontro uma linha relacionada a lessem man manuma antiga caixa Linux ( manversão: 1.6f) na seção AMBIENTE que declara,

NAVEGADOR O nome de um navegador a ser usado para exibir páginas de manual em HTML. Se não estiver definido, /usr/bin/lessé usado.

No entanto, em uma caixa mais recente ( manversão: 2.6.3), esta linha foi substituída por

BROWSER Se $ BROWSER estiver definido, seu valor será uma lista de comandos delimitada por dois pontos, cada um dos quais por sua vez é usado para tentar iniciar um navegador da web para man --html. Em cada comando,% s é substituído por um arquivo? nome que contém a saída HTML do groff, %% é substituído por um único sinal de porcentagem (%) e% c é substituído por dois pontos (:).

Com base nessas informações, acredito que sejam formatadas lesspor padrão (pelo menos no primeiro caso). No entanto, mesmo que este seja o caso, ele está documentado de uma maneira que não me parece clara (ou aprendi o mancomando da maneira errada).

Weijun Zhou
fonte
2

Não há uma maneira real de responder totalmente à sua pergunta em geral para vários sistemas operacionais, pois a manimplementação não é realmente tão especificada.

A resposta padrão do POSIX, não específica do Linux, pode ser encontrada na documentação do POSIXman :

NOME

man - display system documentation

SINOPSE

man [-k] name...

...

VARIÁVEIS AMBIENTAIS

As seguintes variáveis ​​de ambiente devem afetar a execução do homem:

LANG

Forneça um valor padrão para as variáveis ​​de internacionalização não configuradas ou nulas. (Consulte Variáveis ​​de internacionalização XBD para obter a precedência das variáveis ​​de internacionalização usadas para determinar os valores das categorias de localidade.)

LC_ALL

Se definido como um valor de sequência não vazio, substitua os valores de todas as outras variáveis ​​de internacionalização.

LC_CTYPE

Determine o código do idioma para a interpretação de sequências de bytes de dados de texto como caracteres (por exemplo, caracteres de byte único em vez de caracteres de vários bytes nos argumentos e no banco de dados de resumo). O valor de LC_CTYPE não precisa afetar o formato das informações gravadas sobre os operandos de nome.

LC_MESSAGES

Determine o código do idioma que deve ser usado para afetar o formato e o conteúdo das mensagens de diagnóstico gravadas em erro padrão e as mensagens informativas gravadas na saída padrão.

NLSPATH

Determine a localização dos catálogos de mensagens para o processamento de LC_MESSAGES.

PAGER

Determine um comando de filtragem de saída para gravar a saída em um terminal. Qualquer sequência aceitável como um operando command_string para o comando será válida. Quando a saída padrão é um dispositivo terminal, a saída da página de referência deve ser canalizada através do comando. Se a variável PAGER for nula ou não definida, o comando deverá ser um ou outro utilitário de paginador documentado na documentação do sistema.sh-cmore

Observe a seção RATIONALE, descrevendo por que mannão está tão completamente especificado:

JUSTIFICATIVA

É reconhecido que o utilitário man é apenas de utilidade mínima, conforme especificado. A opinião dos desenvolvedores de padrões estava fortemente dividida quanto a quanto ou a pouca informação que o homem deveria ser obrigado a fornecer. Eles consideraram, no entanto, que o fornecimento de alguma maneira portátil de acessar a documentação ajudaria a portabilidade do usuário. Os argumentos contra uma especificação mais completa foram:

  • Grandes quantidades de documentação não devem ser necessárias em um sistema que não possui espaço em disco em excesso.

  • O sistema manual atual não apresenta informações de uma maneira que ajude bastante a portabilidade do usuário.

  • Atualmente, um "sistema de ajuda melhor" é uma área na qual os fornecedores sentem que podem agregar valor às suas implementações POSIX.

A opção -f foi considerada, mas devido a diferenças de implementação, não foi incluída neste volume do POSIX.1-2008.

A descrição foi alterada para ser mais específico sobre o que deve ser exibido para um utilitário. Os desenvolvedores padrão consideraram insuficiente permitir a exibição apenas da sinopse sem fornecer uma breve descrição do que cada opção e operando faz.

A entrada "finalidade" a ser incluída no banco de dados pode ser semelhante ao título da seção (menos o prefixo numérico) deste volume do POSIX.1-2008 para cada utilitário. Esses títulos são semelhantes aos usados ​​em sistemas históricos para esse fim.

Veja mailx para justificativa referente ao paginador padrão.

A ressalva na descrição LC_CTYPE foi adicionada porque não é um requisito que uma implementação forneça páginas de referência para todos os seus códigos de idioma suportados em cada sistema; alterar LC_CTYPE não traduz necessariamente a página de referência para outro idioma. Isso é equivalente ao estado atual de LC_MESSAGES nas mensagens específicas do código do idioma POSIX.1-2008 ainda não é um requisito.

A variável histórica MANPATH não está incluída no POSIX porque não é feita nenhuma tentativa de especificar convenções de nomenclatura para arquivos de páginas de referência, nem mesmo para exigir que eles sejam arquivos. Em algumas implementações, eles podem ser um banco de dados verdadeiro, um arquivo de hipertexto ou até mesmo cadeias de caracteres fixas no executável man. Os desenvolvedores de padrão consideraram a portabilidade das páginas de referência fora do seu escopo de trabalho. No entanto, os usuários devem estar cientes de que o MANPATH é implementado em vários sistemas históricos e que pode ser usado para personalizar o padrão de pesquisa de páginas de referência das várias categorias (utilitários, funções, formatos de arquivo etc.) quando o administrador do sistema revela o local e as convenções para as páginas de referência no sistema.

...

A discussão da lógica do paginador na página mailx :

O paginador selecionado quando PAGER é nulo ou não está definido é parcialmente não especificado para permitir a prática histórica do System V de usar pg como padrão. Ignorar a função de paginação, como declarar que cat é o paginador, não atenderia ao significado pretendido desta descrição. No entanto, qualquer "usuário portátil" teria que configurar o PAGER explicitamente para obter seu paginador preferido em todos os sistemas. A escolha do paginador foi feita parcialmente não especificada, ao contrário da opção do editor VISUAL (obrigatoriamente vi) porque a maioria dos pagers históricos segue um tema comum de entrada do usuário, enquanto os editores diferem dramaticamente.

Andrew Henle
fonte