
Estou tendo problemas com o homem:
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 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 degit
,ls
oupwd
com:man -S git
. Eu esperaria uma lista, mas tudo que recebo é: Qual página de manual você deseja?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 intro
com 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 fork
está na Seção 2 e a página de manual execl
está 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. 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
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?
-S
nã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,2
mostra que a ordem de pesquisa das seções começa da esquerda para a direita nesta lista. Se o manual ls
contiver 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]
, 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.]
Como posso exibir uma versão curta/visualização de uma página de manual?
Eu sempre uso --help
para 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$