Onde estão documentados os comandos disponíveis na janela man page, e estes comandos são dependentes do sistema?

9

Tendo usado o Linux por anos, de repente eu descobri que não sei como usar o comando man corretamente. É bem sabido que alguém pode digitar q para sair de uma página man, / para pesquisar e outros. Eu não sei, no entanto, onde estão estes documentados. Eu tentei man man man -a man info man e pesquisando, sem sorte.

Por favor, aponte-me para a posição certa para procurar por essa informação, mesmo se ela estiver correta em man man e, por acaso, eu a negligenciei, está perfeitamente bem, é só me avisar.

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

    
por Weijun Zhou 07.12.2017 / 12:42

4 respostas

12

Na verdade, está bem na página de manual para man , sob o subtítulo "Controlando a saída formatada" e repetida mais tarde na seção "MEIO AMBIENTE" para uma boa medida:

By default, man uses pager -s.
A página de manual explica como há uma hierarquia de variáveis de ambiente e opções de linha de comando ( PAGER , MANPAGER e --pager ) para substituir o padrão.

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

By default, man uses less -s.

O pacote man-db tenta detectar automaticamente, em tempo de compilação, qual paginador padrão é incorporado ao comando e documentar em sua página de manual, em less , more e pager .

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

jdebp % update-alternatives --list pager
/bin/less
/bin/more
/usr/bin/pg
/usr/bin/w3m
jdebp %

Então, uma consulta suas respectivas páginas de manual sobre como direcioná-las a partir do teclado, de acordo com qual alternativa foi escolhida. Convenientemente, o sistema alternativo do Debian mantém a página de manual em sincronia com o comando escolhido, então ler esta página de manual é bastante simples:

man pager
    
por 07.12.2017 / 13:16
5

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

Os detalhes exatos dependem da versão de man que você está usando.

Para a versão usada em muitos sistemas:

  • Se a opção -p pager for fornecida, esse pager será usado.
  • Caso contrário, se a variável de ambiente MANPAGER for configurada, ela será usada.
  • Caso contrário, se PAGER for definido, ele será usado.
  • Caso contrário, o padrão é usar /usr/bin/less

Se a página de manual estiver no formato HTML, então BROWSER será usado em vez de MANPAGER / PAGER

O Debian usa man-db , que possui padrões diferentes.

Leia man man para os detalhes

    
por 07.12.2017 / 12:55
2

Graças a @Rastapopoulos, encontro uma linha relacionada a less in man man em uma antiga caixa do Linux ( man version: 1.6f) na seção AMBIENTE que declara

BROWSER The name of a browser to use for displaying HTML manual pages. If it is not set, /usr/bin/less is used.

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

BROWSER If $BROWSER is set, its value is a colon-delimited list of commands, each of which in turn is used to try to start a web browser for man --html. In each command, %s is replaced by a file? name containing the HTML output from groff, %% is replaced by a single percent sign (%), and %c is replaced by a colon (:).

Com base nessas informações, acredito que esteja formatado em less por padrão (pelo menos no primeiro caso). No entanto, mesmo que esse seja o caso, ele é documentado de uma forma que não parece clara para mim (ou aprendi o comando man do jeito errado).

    
por 07.12.2017 / 12:55
2

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

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

NAME

man - display system documentation

SYNOPSIS

man [-k] name...

...

ENVIRONMENT VARIABLES

The following environment variables shall affect the execution of man:

LANG

Provide a default value for the internationalization variables that are unset or null. (See XBD Internationalization Variables for the precedence of internationalization variables used to determine the values of locale categories.)

LC_ALL

If set to a non-empty string value, override the values of all the other internationalization variables.

LC_CTYPE

Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments and in the summary database). The value of LC_CTYPE need not affect the format of the information written about the name operands.

LC_MESSAGES

Determine the locale that should be used to affect the format and contents of diagnostic messages written to standard error and informative messages written to standard output.

NLSPATH

Determine the location of message catalogs for the processing of LC_MESSAGES.

PAGER

Determine an output filtering command for writing the output to a terminal. Any string acceptable as a command_string operand to the sh-c command shall be valid. When standard output is a terminal device, the reference page output shall be piped through the command. If the PAGER variable is null or not set, the command shall be either more or another paginator utility documented in the system documentation.

Observe a seção RATIONALE, descrevendo por que man não é totalmente especificado:

RATIONALE

It is recognized that the man utility is only of minimal usefulness as specified. The opinion of the standard developers was strongly divided as to how much or how little information man should be required to provide. They considered, however, that the provision of some portable way of accessing documentation would aid user portability. The arguments against a fuller specification were:

  • Large quantities of documentation should not be required on a system that does not have excess disk space.

  • The current manual system does not present information in a manner that greatly aids user portability.

  • A "better help system" is currently an area in which vendors feel that they can add value to their POSIX implementations.

The -f option was considered, but due to implementation differences, it was not included in this volume of POSIX.1-2008.

The description was changed to be more specific about what has to be displayed for a utility. The standard developers considered it insufficient to allow a display of only the synopsis without giving a short description of what each option and operand does.

The "purpose" entry to be included in the database can be similar to the section title (less the numeric prefix) from this volume of POSIX.1-2008 for each utility. These titles are similar to those used in historical systems for this purpose.

See mailx for rationale concerning the default paginator.

The caveat in the LC_CTYPE description was added because it is not a requirement that an implementation provide reference pages for all of its supported locales on each system; changing LC_CTYPE does not necessarily translate the reference page into another language. This is equivalent to the current state of LC_MESSAGES in POSIX.1-2008-locale-specific messages are not yet a requirement.

The historical MANPATH variable is not included in POSIX because no attempt is made to specify naming conventions for reference page files, nor even to mandate that they are files at all. On some implementations they could be a true database, a hypertext file, or even fixed strings within the man executable. The standard developers considered the portability of reference pages to be outside their scope of work. However, users should be aware that MANPATH is implemented on a number of historical systems and that it can be used to tailor the search pattern for reference pages from the various categories (utilities, functions, file formats, and so on) when the system administrator reveals the location and conventions for reference pages on the system.

...

A discussão sobre o argumento do paginador na página mailx :

The paginator selected when PAGER is null or unset is partially unspecified to allow the System V historical practice of using pg as the default. Bypassing the pagination function, such as by declaring that cat is the paginator, would not meet with the intended meaning of this description. However, any "portable user" would have to set PAGER explicitly to get his or her preferred paginator on all systems. The paginator choice was made partially unspecified, unlike the VISUAL editor choice (mandated to be vi) because most historical pagers follow a common theme of user input, whereas editors differ dramatically.

    
por 07.12.2017 / 13:45

Tags