
Tengo problemas con el hombre:
¿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
-S
el parámetro, necesito obtener una lista de "secciones" disponibles de una página de manual. Pero si intento mostrar las secciones disponibles degit
,ls
opwd
con:man -S git
. Esperaría una lista, pero todo lo que obtengo es: ¿Qué página del manual desea?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 intro
con 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 fork
está en la Sección 2 y la página de manual execl
está 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. man
no proporciona algo parecido Get-Help
en PowerShell. whatis
te 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?
-S
no 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,2
muestra que el orden de búsqueda de las secciones comienza de izquierda a derecha en esta lista. Si el manual ls
contiene 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 -S
es 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 --help
ver 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$