Empezando con "man": algunas preguntas

Empezando con "man": algunas preguntas

Tengo problemas con el hombre:

  1. ¿Cómo puedo mostrar secciones de una página de manual? ¿Cómo puedo saber qué secciones ofrece una página de manual? Según man man -Sel parámetro, necesito obtener una lista de "secciones" disponibles de una página de manual. Pero si intento mostrar las secciones disponibles de git, lso pwdcon: man -S git. Esperaría una lista, pero todo lo que obtengo es: ¿Qué página del manual desea?

  2. También tengo una segunda pregunta: ¿Cómo puedo mostrar una versión corta/vista previa de una página de manual? También es mi tarea resolver esto. No pude encontrar un parámetro que se parezca a lo que quiero hacer.

PD: estoy usando un shell en MacOS Sierra

Respuesta1

La respuesta sencilla:

Las páginas man nocontenersecciones; Las secciones contienen páginas de manual.

Esto se refiere a las secciones numeradas de las que estás hablando. Puede haber dos páginas de manual con el mismo nombre, pero en dos secciones diferentes (numeradas), por ejemplo, printf. La printf(1)página de manual cubre la herramienta de línea de comando. La printf(3)página de manual cubre la llamada a la función C.

Puede ver ambas páginas de manual en secuencia ejecutando:

man -a printf

Cuando salgas del primero, verás el segundo.

Puedes ver en qué secciones aparece, sin abrir ninguna de las dos, ejecutando:

man -aw printf

Además de las secciones numeradasen el cualLas páginas de manual existen, las páginas de manual individuales también están divididasvisualmentecon encabezados y subtítulos separados, como "Nombre", "Sinopsis", "Descripción", etc.

Estos sontambiénllamadas "secciones", pero es un uso claramente diferente de la palabra "sección" de las secciones numeradas descritas anteriormente.

Respuesta2

En los viejos tiempos, el manual en línea ("en línea" en contraste con "impreso") solía tener ocho secciones, pero luego se agregaron algunas más. Estas secciones son 1, 2, ..., 8, por lo que escribirías algo como

man -S 4 xyz

para obtener la página de manual de xyz en la Sección 4.

En realidad, especificar una sección sólo es importante si hay páginas de manual para la misma palabra clave en más de una sección.

Por ejemplo:

man printf

rendimientos

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
...

mientras

man -S 3 printf

rendimientos

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, ...);
...

Pruebe man -S x introcon x= 1,2,3,... para obtener una introducción a las distintas secciones.

A veces encuentras declaraciones como:... fork(2)se utiliza para crear un nuevo proceso; esto suele ir seguido de execl(3)...Esto indica que la página de manual forkestá en la Sección 2 y la página de manual execlestá en la Sección 3.

¿Cómo puedo mostrar una versión corta/vista previa de una página de manual?

No estoy seguro de qué quieres decir con esto. manno proporciona algo parecido Get-Helpen PowerShell. whatiste da una descripción muy breve, 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

Respuesta3

El argumento -S no hace lo que quieres. Es para especificar en qué categorías de páginas man desea buscar.

Si existe un método automatizado para mostrar las secciones de una página de manual, no lo sé. Buscaría herramientas como grep/sed/awk para analizar la página de manual y extraer el texto que me interesa, es decir:

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

El código anterior no es una solución completa. Por un lado, también imprime el encabezado y pie de página de la página de manual. Confío en que pueda modificarlo para satisfacer plenamente sus requisitos o idear una mejor implementación;)

De manera similar, la solicitud para obtener una "vista previa" de la página de manual se puede realizar fácilmente mediantecanalizar la salidadel hombre en otra herramienta. Yo lo recomiendocabezapara esa tarea.

Respuesta4

[1.]

Esperaría una lista, pero todo lo que obtengo es: ¿Qué página del manual desea?

-Sno se utiliza para mostrar la lista de secciones, sino que le pide que pase la lista de secciones enel orden de búsqueda de sección que desee. P.ej

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$ 

Lo anterior -S=7,6,5,4,3,2muestra que el orden de búsqueda de las secciones comienza de izquierda a derecha en esta lista. Si el manual lscontiene la sección 7, lo mostrará. De lo contrario, intentará buscar en la sección 6, y así sucesivamente. Si no existe ninguna sección al final de esta lista, dirá "No hay entrada manual para ls".aunque la sección 1 existe. Pero este funciona porque la sección 1 de la lista:

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

Experimente con estos dos para demostrar que el orden de búsqueda -Ses de izquierda a derecha:

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

También puedes simplemente pasar la sección exacta, sin -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$

El orden predeterminado se puede encontrar aquí (esta ruta de archivo se describe en man man), orden de búsqueda de izquierda a derecha:

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$ 

¿Cómo puedo mostrar secciones de una página de manual? ¿Cómo puedo saber qué secciones ofrece una página de manual?

Utilice apropos [-e], whatis, o 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.]

¿Cómo puedo mostrar una versión corta/vista previa de una página de manual?

Siempre suelo --helpver la versión abreviada del manual (Descargo de responsabilidad: no es exactamente equivalente), por ejemplo:

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$ 

información relacionada