Começando com "man": algumas perguntas

Começando com "man": algumas perguntas

Estou tendo problemas com o homem:

  1. Como posso exibir seções de uma página de manual? Como posso descobrir quais seções uma página de manual oferece? De acordo com man man -So parâmetro que preciso para obter uma lista de "seções" disponíveis em uma página de manual. Mas se eu tentar exibir as seções disponíveis de git, lsou pwdcom: man -S git. Eu esperaria uma lista, mas tudo que recebo é: Qual página de manual você deseja?

  2. Também tenho uma segunda pergunta: como posso exibir uma versão/visualização resumida de uma página de manual? Também é minha tarefa descobrir isso. Não consegui encontrar um parâmetro que se parecesse com o que desejo fazer.

PS: estou usando um shell no MacOS Sierra

Responder1

A resposta simples:

As páginas de manual nãoconterSeções; seções contêm páginas de manual.

Isso se refere às seções numeradas das quais você está falando. Pode haver duas páginas de manual com o mesmo nome, mas em duas seções diferentes (numeradas) — por exemplo, printf. A printf(1)página man cobre a ferramenta de linha de comando. A printf(3)página man cobre a chamada da função C.

Você pode visualizar as duas páginas de manual em sequência executando:

man -a printf

Ao sair do primeiro, você verá o segundo.

Você pode ver em quais seções ele aparece, sem abrir, executando:

man -aw printf

Além das seções numeradasno qualexistem páginas de manual, páginas de manual individuais também são divididasvisualmentecom cabeçalhos e subcabeçalhos separados, como "Nome", "Sinopse", "Descrição" etc.

Estes sãotambémchamadas de "seções", mas é um uso distintamente diferente da palavra "seção" das seções numeradas descritas acima.

Responder2

Antigamente, o manual online (“online” em contraste com “impresso”) costumava ter oito seções, mas algumas mais foram adicionadas posteriormente. Essas seções são 1, 2, ..., 8, então você digitaria algo como

man -S 4 xyz

para obter a página de manual do xyz na Seção 4.

Na verdade, especificar uma seção só é importante se houver páginas de manual para a mesma palavra-chave em mais de uma seção.

Por exemplo:

man printf

rendimentos

PRINTF(1)                                                         User Commands

NAME
       printf - format and print data

SYNOPSIS
       printf FORMAT [ARGUMENT]...
       printf OPTION

DESCRIPTION
       Print ARGUMENT(s) according to FORMAT, or execute according to OPTION
...

enquanto

man -S 3 printf

rendimentos

PRINTF(3)                                                   Linux Programmer's Manual

NAME
       printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf, vsprintf, vsnprintf - formatted output conversion

SYNOPSIS
       #include <stdio.h>

       int printf(const char *format, ...);
       int fprintf(FILE *stream, const char *format, ...);
       int dprintf(int fd, const char *format, ...);
       int sprintf(char *str, const char *format, ...);
       int snprintf(char *str, size_t size, const char *format, ...);
...

Experimente man -S x introcom x= 1,2,3,... para obter uma introdução às várias seções.

Às vezes você encontra afirmações como:... fork(2)é usado para criar um novo processo; isso geralmente é seguido por execl(3)...Isso indica que a página de manual forkestá na Seção 2 e a página de manual execlestá na Seção 3.

Como posso exibir uma versão curta/visualização de uma página de manual?

Não tenho certeza do que você quer dizer com isso. mannão fornece algo como Get-Helpno PowerShell. whatisfornece uma descrição muito curta, como

whatis man
man                  (1)  - format and display the on-line manual pages
man                  (1p)  - display system documentation
man                  (7)  - macros to format man pages
man []               (1)  - format and display the on-line manual pages
man []               (1p)  - display system documentation
man []               (7)  - macros to format man pages
man []               (7)  - pages - conventions for writing Linux man pages
man-pages            (7)  - conventions for writing Linux man pages
man.conf []          (5)  - configuration data for man
man.conf [man]       (5)  - configuration data for man

Responder3

O argumento -S não faz o que você deseja. É para especificar quais categorias de páginas de manual você deseja procurar.

Se existe um método automatizado de exibir as seções de uma página de manual, eu não o conheço. Eu procuraria ferramentas como grep/sed/awk para analisar a página de manual e extrair o texto que me interessa, ou seja:

man ls|grep -v -e '^$' -e '^[[:space:]]'

O código acima não é uma solução completa. Por um lado, ele também imprime o cabeçalho e o rodapé da página de manual. Acredito que você possa modificá-lo para atender totalmente às suas necessidades ou criar uma implementação melhor;)

Da mesma forma, a solicitação para obter uma "visualização" da página de manual pode ser facilmente realizada porcanalizando a saídado homem em outra ferramenta. eu recomendariacabeçapara essa tarefa.

Responder4

[1.]

Eu esperaria uma lista, mas tudo que recebo é: Qual página de manual você deseja?

-Snão é usado para exibir a lista de seções; em vez disso, pede que você passe a lista de seções emsua ordem de pesquisa de seção desejada. Por exemplo

xb@dnxb:/tmp$ man -S=7,6,5,4,3,2 ls
No manual entry for ls
See 'man 7 undocumented' for help when manual pages are not available.
xb@dnxb:/tmp$ 

O exemplo acima -S=7,6,5,4,3,2mostra que a ordem de pesquisa das seções começa da esquerda para a direita nesta lista. Se o manual lscontiver a seção 7, ele será exibido. Caso contrário, tentará pesquisar a seção 6 e assim por diante. Se não existir nenhuma seção no final desta lista, será exibido "Nenhuma entrada manual para ls"mesmo que a seção 1 exista. Mas este funciona porque a seção 1 da lista:

xb@dnxb:/tmp$ man -S=7,6,5,4,3,2,1 ls
xb@dnxb:/tmp$ 

Brinque com estes dois para provar que a ordem de pesquisa -Sé da esquerda para a direita:

xb@dnxb:/tmp$ man -S 1,1posix ls
xb@dnxb:/tmp$ man -S 1posix,1 ls
xb@dnxb:/tmp$ 

Você também pode simplesmente passar pela seção exata, sem -S:

xb@dnxb:/tmp$ man 5 ls
No manual entry for ls in section 5
See 'man 7 undocumented' for help when manual pages are not available.
xb@dnxb:/tmp$ man 1posix ls
xb@dnxb:/tmp$

A ordem padrão pode ser encontrada aqui (este caminho de arquivo descrito em man man), ordem de pesquisa da esquerda para a direita:

xb@dnxb:/tmp$ \grep SECTION /etc/manpath.config
# the default is 1, n, l, 8, 3, 0, 2, 5, 4, 9, 6, 7. Multiple SECTION
SECTION         1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7
xb@dnxb:/tmp$ 

Como posso exibir seções de uma página de manual? Como posso descobrir quais seções uma página de manual oferece?

Use apropos [-e], whatisou man -k:

xb@dnxb:/tmp$ apropos statvfs #OR man -k statvfs
fstatvfs (2)         - get filesystem statistics
fstatvfs (3)         - get filesystem statistics
fstatvfs (3posix)    - get file system information
statvfs (2)          - get filesystem statistics
statvfs (3)          - get filesystem statistics
statvfs (3posix)     - get file system information
statvfs.h (7posix)   - VFS File System information structure
sys_statvfs.h (7posix) - VFS File System information structure
xb@dnxb:/tmp$ apropos -e statvfs #OR whatis statvfs
statvfs (2)          - get filesystem statistics
statvfs (3)          - get filesystem statistics
statvfs (3posix)     - get file system information
xb@dnxb:/tmp$ 

[2.]

Como posso exibir uma versão curta/visualização de uma página de manual?

Eu sempre uso --helppara ver a versão abreviada do manual (Isenção de responsabilidade: não é exatamente equivalente), por exemplo:

xb@dnxb:/tmp$ mplayer --help
Usage:   mplayer [options] [url|path/]filename

Basic options: (complete list in the man page)
 -vo <drv>        select video output driver ('-vo help' for a list)
 -ao <drv>        select audio output driver ('-ao help' for a list)
 vcd://<trackno>  play (S)VCD (Super Video CD) track (raw device, no mount)
 dvd://<titleno>  play DVD title from device instead of plain file
 -alang/-slang    select DVD audio/subtitle language (by 2-char country code)
 -ss <position>   seek to given (seconds or hh:mm:ss) position
 -nosound         do not play sound
 -fs              fullscreen playback (or -vm, -zoom, details in the man page)
 -x <x> -y <y>    set display resolution (for use with -vm or -zoom)
 -sub <file>      specify subtitle file to use (also see -subfps, -subdelay)
 -playlist <file> specify playlist file
 -vid x -aid y    select video (x) and audio (y) stream to play
 -fps x -srate y  change video (x fps) and audio (y Hz) rate
 -pp <quality>    enable postprocessing filter (details in the man page)
 -framedrop       enable frame dropping (for slow machines)

Basic keys: (complete list in the man page, also check input.conf)
 <-  or  ->       seek backward/forward 10 seconds
 down or up       seek backward/forward  1 minute
 pgdown or pgup   seek backward/forward 10 minutes
 < or >           step backward/forward in playlist
 p or SPACE       pause movie (press any key to continue)
 q or ESC         stop playing and quit program
 + or -           adjust audio delay by +/- 0.1 second
 o                cycle OSD mode:  none / seekbar / seekbar + timer
 * or /           increase or decrease PCM volume
 x or z           adjust subtitle delay by +/- 0.1 second
 r or t           adjust subtitle position up/down, also see -vf expand

 * * * SEE THE MAN PAGE FOR DETAILS, FURTHER (ADVANCED) OPTIONS AND KEYS * * *

MPlayer 1.3.0 (Debian), built with gcc-5.4.0 (C) 2000-2016 MPlayer Team
xb@dnxb:/tmp$ 

informação relacionada