Introdução ao “man”: algumas perguntas [duplicadas]

0

Estou com 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 -S é o parâmetro que eu preciso para obter uma lista de "seções" disponíveis de uma página man. Mas se eu tentar exibir as seções disponíveis de git , ls ou pwd com: man -S git . Eu esperaria uma lista, mas tudo que eu tenho é: Qual página de manual você quer?

  2. Eu também tenho uma segunda pergunta: Como posso exibir uma versão / visualização curta de uma página man? Também é minha tarefa descobrir isso. Não consegui encontrar um parâmetro que soasse como o que eu quero fazer.

PS: Estou usando um shell no MacOS Sierra

    
por phip1611 21.10.2016 / 22:28

4 respostas

2

A resposta simples:

As seções Man pages don't contêm ; seções contêm páginas man.

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

Você pode ver as duas páginas man em sequência executando:

man -a printf

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

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

man -aw printf

Além das seções numeradas em que páginas man existem, as man pages individuais também são divididas visualmente com cabeçalhos e subtítulos separados, como "Name", "Synopsis, "" Descrição ", etc.

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

    
por 22.10.2016 / 00:31
1

Nos velhos tempos, o manual on-line ("on-line", em contraste com "impresso") costumava ter oito seções, mas algumas foram adicionadas posteriormente. Estas seções são 1, 2, ..., 8, então você digitaria algo como

man -S 4 xyz

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

Na verdade, especificar uma seção é importante apenas 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, ...);
...

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

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

How can I display a short version/preview of a man page?

Não tenho certeza do que você quer dizer com isso. man não fornece algo como Get-Help no PowerShell. whatis fornece 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
    
por 21.10.2016 / 23:17
0

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

Se houver um método automatizado de exibição das seções de uma página man, não sei. Eu procuraria ferramentas como o grep / sed / awk para analisar a página man e extrair o texto em que eu estava interessado, por exemplo:

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

O código acima não é uma solução completa. Por um lado, também imprime o cabeçalho e rodapé da página man. Eu confio que você pode modificá-lo para atender plenamente às suas necessidades, ou chegar a uma melhor implementação;)

Da mesma forma, a solicitação para obter uma "pré-visualização" da página man pode ser facilmente realizada por canais saída do homem em outra ferramenta. Eu recomendaria cabeçalho para essa tarefa.

    
por 21.10.2016 / 22:58
0

[1.]

I would expect a list but all I get is: What manual page do you want?

-S não é usado para exibir a lista de seções. Em vez disso, ele solicita que você passe a lista de seções na ordem de pesquisa da sua 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$ 

Os -S=7,6,5,4,3,2 acima mostram que a ordem de busca da seção começa da esquerda para a direita nesta lista. Se o manual de ls contiver a seção 7, ela será mostrada. Caso contrário, ele tentará pesquisar a seção 6 e assim por diante. Se não existir nenhuma seção no final desta lista, será indicado "Nenhuma entrada manual para ls" , mesmo que a seção 1 exista . Mas este aqui 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 esses dois para provar que a ordem de pesquisa de -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ê pode simplesmente passar a seção exata também, 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 ordenação padrão pode ser encontrada aqui (Esse caminho de arquivo descrito em man man ), a 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$ 

How can I display sections of a man-page ? How can I figure out what sections a man page offers ?

Use apropos [-e] , whatis ou 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.]

How can I display a short version/preview of a man page ?

Eu sempre uso --help para ver encurtar a versão 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$ 
    
por 21.10.2016 / 23:59