Una página de manual para fork
, por ejemplo, está en la sección Llamadas del sistema que tiene el número 2:
man 2 fork
¿Cómo ves qué es la sección 2 sin recurrir a Google?
Una página de manual para fork
, por ejemplo, está en la sección Llamadas del sistema que tiene el número 2:
man 2 fork
¿Cómo ves qué es la sección 2 sin recurrir a Google?
Respuestas:
Este comando enumera los nombres ordenados de todas las entradas en la sección dada:
man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u
Si desea ver los nombres de las rutas, use:
man -aWS 1 \* | sed 's/\.[^.]*$//' | sort
Esto le indica man
que busque en una sección todos los comandos utilizando el patrón comodín *
(barra invertida entre comillas para que el shell no lo interprete). -a
encuentra todas las coincidencias, -W
imprime los nombres de las rutas en lugar de mostrar las páginas y -S 1
especifica la sección uno. Cambie 1
a la sección que desee buscar.
El sed
comando elimina las extensiones de nombre de archivo; elimínelo si desea ver los nombres completos de los archivos. sort
ordena los resultados ( -u
elimina duplicados).
Para una reutilización conveniente, esto define una función de shell Bash:
function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }
Por ejemplo, puede invocarlo mansect 3
para ver las entradas en la sección tres.
[Probado en macOS.]
uniq
no se soluciona nada que ponga un en curso .
sort -u
para eliminar duplicados.
Para enumerar todas las páginas man instaladas de una sección específica, puede usar a propósito :
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
Las páginas de manual generalmente se colocan /usr/share/man
, pero comprueban $MANPATH
, y se organizan en secciones de la siguiente manera:
Section 1:
/usr/share/man/man1/
Section 2:
/usr/share/man/man2/
...
Para enumerar todas las páginas de manual de la sección 2 instaladas, haga lo siguiente:
ls /usr/share/man/man2/
O el más completo:
find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'
El último tendrá problemas si tiene directorios $MANPATH
con espacio en sus nombres.
En la mayoría de las distribuciones, también puede consultar las páginas man disponibles con una herramienta de paquete, por ejemplo, en las distribuciones derivadas de Debian que puede usar apt-file
así:
apt-file search /man2/
lman 2
y enumera el nombre sin adornos para cada página en una nueva línea y las pagina. El cuerpo de la función es:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
Sé que esta es una pregunta muy antigua, sin embargo, las respuestas dadas aquí no funcionaron para mí. Por lo tanto, se me ocurrió el siguiente one-liner que funciona en Ubuntu 18.04 y macOS Mojave, 10.14.6:
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
Descenso rápido:
$(man --path | tr ':' ' ')
para obtener las rutas actuales de las páginas manfind <man paths> -type f -path '*man2*' -exec basename {} \;
Obtiene los nombres de archivo de todos los archivos normales en las rutas de acceso mansed
se deshace de la extensión del archivosort
alfabéticamente.