Comando man: uso y opciones, números de sección y búsqueda con man -k

Entorno de pruebaFamilia RHELAlmaLinux 9.8man-db 2.9Cuenta rootDebian 12 · man-db 2.11 cuenta normal
Comandos de shellman, whatis, aproposUbicación/usr/bin/man

Para consultar cómo se usa un comando o un archivo de configuración en un servidor Linux, se abre su página de manual con el comando man y, cuando no se conoce el nombre, se buscan las descripciones cortas con man -k. Al buscar la página de passwd en servidores AlmaLinux 9 y Debian 12, Debian 12 tenía tanto la página de comandos de la sección 1 como la de formatos de archivo de la sección 5, mientras que AlmaLinux 9 no tenía página en la sección 5.

La salida de abajo se obtuvo en un servidor AlmaLinux 9.8 con la cuenta root y en un servidor Debian 12 con una cuenta normal. El nombre de host y la dirección de conexión del simulador son valores de ejemplo.

1️⃣ Uso básico del comando man

  • ↪️ Abrir una página, moverse por ella y páginas que no existen

Al escribir el nombre de un comando después de man se abre la página de manual de ese comando. man pasa la página a un programa paginador que la muestra pantalla a pantalla, así que no vuelve al prompt nada más ejecutarse. El paginador se define con la variable de entorno MANPAGER o PAGER y, si las dos están vacías, se usa less.

Si la salida se envía por una tubería, sale solo el texto, sin paginador. Al recoger con head las 12 primeras líneas de [man ls], la primera línea tenía LS(1) y después venían en orden las secciones NAME, SYNOPSIS y DESCRIPTION.

man ls | head -n 12
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci-
       fied.

El número 1 entre paréntesis de LS(1) en la primera línea es el número de la sección que contiene esta página.

Dentro de una página, [Space] muestra la pantalla siguiente y [/palabra] seguido de Enter busca una palabra. [n] pasa al siguiente lugar donde aparece la misma palabra y [q] cierra man.

Si se escribe un nombre que no existe, aparece el error [No manual entry for], y el código de salida fue 16.

man no-such-cmd9
No manual entry for no-such-cmd9
echo $?
16

La sección EXIT STATUS de la página de man describe 16 como el valor que se devuelve cuando no se encuentra al menos una de las páginas, archivos o palabras. Un error de uso es 1, así que un script puede tratar los dos casos por separado.

2️⃣ Números de sección de man

  • ↪️ 1 comandos, 5 archivos de configuración, 8 comandos de administración

Cuando hay páginas con el mismo nombre en varias secciones, man busca en las secciones siguiendo un orden fijo y abre solo la primera página que encuentra. Las secciones van de la 1 a la 9, y las que más se abren al trabajar en servidores son la 1 de comandos, la 5 de formatos de archivo y la 8 de comandos de administración.

SecciónPáginas que contieneEjemplo visto en el servidor AlmaLinux 9.8
1Programas ejecutables y comandos del shellls, passwd, crontab, man
2Llamadas al sistema (funciones que ofrece el kernel)
3Funciones de biblioteca
4Archivos especiales (normalmente bajo /dev)
5Formatos de archivo y convenciones, p. ej. /etc/passwdcrontab
6Juegos
7Varios (paquetes de macros y convenciones)
8Comandos de administración del sistema, normalmente para rootuseradd, mandb
9Rutinas del kernel (no estándar)

crontab tiene páginas en dos secciones porque el comando y el formato del archivo de configuración llevan el mismo nombre. Al comprobarlo con [man -f crontab], salieron juntas las líneas de las secciones 1 y 5.

man -f crontab
crontab (1)          - maintains crontab files for individual users
crontab (5)          - files used to schedule the execution of programs

Al ejecutar [man crontab] sin número de sección se abre la página del comando crontab de la sección 1. Para ver el formato del archivo de tareas programadas, se escribe 5 delante del nombre.

man 5 crontab | head -n 4
CRONTAB(5)                       File Formats                       CRONTAB(5)

NAME
       crontab - files used to schedule the execution of programs

La primera línea cambió a CRONTAB(5) y File Formats, y en la línea NAME también salió la descripción del archivo de tareas programadas en lugar de la del comando.

Si en la sección indicada no hay una página con ese nombre, aparece un error. Al ejecutar [man 5 passwd] en el servidor AlmaLinux 9.8 para ver el formato del archivo /etc/passwd, salió un error que decía que no había página en la sección 5.

man 5 passwd
No manual entry for passwd in section 5

En el servidor Debian 12, [man -f passwd] mostró también la línea de passwd de la sección 5. En qué secciones hay página depende de los manuales instalados en el servidor, así que antes de añadir un número de sección conviene comprobarlo con [man -f].

man -f passwd
passwd (1)           - change user password
passwd (1ssl)        - OpenSSL application commands
passwd (5)           - the password file

La sección 8 contiene comandos de administración que ejecuta sobre todo la cuenta root, como useradd, que crea cuentas.

man -f useradd
useradd (8)          - create a new user or update default new user information

3️⃣ Opciones del comando man y búsqueda con -k y -f

  • ↪️ whatis, apropos y la ubicación de archivos con man -w

[man -f] muestra la descripción de una línea de las páginas con el mismo nombre y funciona igual que whatis. Al ejecutar [man -f passwd] y [whatis passwd] en el servidor AlmaLinux 9.8, salieron las mismas dos líneas.

man -f passwd
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

La línea 1ossl es la página de un comando de OpenSSL que comparte el nombre passwd.

Cuando no se conoce el nombre, [man -k] busca en los nombres de página y en las descripciones cortas. Funciona igual que apropos, y la palabra se lee como una expresión regular.

man -k '^passwd'
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

^ indica el principio de la línea, así que solo salieron las líneas que empiezan por passwd. También se puede buscar por una palabra de la descripción: [man -k 'directory contents'] encontró las páginas dir y vdir junto con ls.

man -k 'directory contents'
dir (1)              - list directory contents
ls (1)               - list directory contents
vdir (1)             - list directory contents

[man -k] busca solo en las descripciones cortas de la sección NAME, así que no encuentra una página por el nombre de una opción ni por una palabra del texto. [man -K], que busca también en el texto, lee todas las páginas una a una y tarda mucho.

Si la palabra buscada no aparece, sale [nothing appropriate], y el código de salida fue 16.

man -k no-such-word9
no-such-word9: nothing appropriate.
echo $?
16

[man -w] muestra solo la ubicación del archivo de origen, sin abrir la página.

man -w ls
/usr/share/man/man1/ls.1.gz
man -w 5 crontab
/usr/share/man/man5/crontab.5.gz

Los dos archivos estaban en las carpetas man1 y man5 bajo /usr/share/man, y el número del nombre de la carpeta coincidía con el número de sección. El archivo de la página 1ossl, encontrado con [man -w 1ossl passwd], también estaba en la carpeta man1, la misma que la sección 1.

Las opciones están reunidas en las dos pestañas de abajo.

OpciónCopiarDescripción
-f, --whatisMuestra la descripción de una línea de las páginas con el mismo nombre. Igual que whatis
-k, --aproposBusca en los nombres de página y en las descripciones cortas. Igual que apropos
-w, --where, --path, --locationMuestra solo la ubicación del archivo de origen, sin abrir la página
-a, --allMuestra una tras otra todas las páginas cuyo nombre coincide
OpciónCopiarDescripción
-K, --global-aproposBusca una palabra en el texto de todas las páginas. Tarda mucho
-S, -s, --sectionslistaIndica las secciones en las que buscar y su orden como una lista separada por comas o dos puntos
-P, --pagerpaginadorIndica el paginador con el que se muestra la página. El valor predeterminado es less
-M, --manpathrutaIndica la ruta de manuales donde buscar las páginas
-L, --localelocaleIndica el locale que se usa en esta ejecución
-l, --local-fileMuestra como página el archivo indicado, sin buscar en los manuales del sistema
-u, --updateActualiza las cachés de índice de las páginas instaladas
-V, --versionMuestra la información de versión

🔲 Simulador del comando man

En el simulador de abajo se puede abrir una página con [man ls] y pasar las pantallas con los chips [Space], [/list], [n] y [q]. En el mismo servidor virtual se puede añadir un número de sección, como en [man 5 crontab], o escribir [man -f], [man -k] y [man -w].

Simulador del comando manman-db 2.9 · Cuenta root
[root@server work]#
Funciona solo dentro del navegador. En la pantalla de una página se pulsan los chips Space, /palabra, n y q, y con ↑↓ del teclado se recuperan los comandos escritos antes.

4️⃣ Estructura de una página de man

  • ↪️ Leer NAME, SYNOPSIS, DESCRIPTION y OPTIONS

Una página de man se divide en secciones con títulos en mayúsculas. Al extraer solo los títulos con grep y compararlos, la página de ls tenía la descripción de las opciones dentro de DESCRIPTION, mientras que la página de crontab tenía una sección OPTIONS aparte.

man ls | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSO
man crontab | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHOR

Los nombres de las secciones cambian un poco de una página a otra, y las más habituales son las siguientes.

SecciónContenido
NAMENombre y descripción de una línea (la línea que muestran man -f y man -k)
SYNOPSISForma de escribir el comando
DESCRIPTIONDescripción del funcionamiento (la página de ls incluye aquí también las opciones)
OPTIONSUn párrafo por opción
EXIT STATUSSignificado de los códigos de salida
FILESArchivos que el comando lee o escribe
SEE ALSOPáginas relacionadas

Los símbolos de SYNOPSIS siguen reglas fijadas por la página de man. Lo que va entre corchetes se puede omitir. Las opciones separadas por una barra vertical (|) no se pueden usar juntas, y un argumento seguido de tres puntos (...) se puede escribir varias veces.

La SYNOPSIS de ls es ls [OPTION]... [FILE]..., así que tanto las opciones del comando como los argumentos de línea de comandos, por ejemplo los nombres de archivo, se pueden omitir todos o escribir varias veces.

[--help] es un resumen de uso que imprime el propio programa, así que sale directamente en la terminal, sin paginador. El Usage de la primera línea de [ls --help] tenía la misma forma que SYNOPSIS, y la salida completa ocupaba 121 líneas, menos que las 245 de [man ls].

ls --help | head -n 3
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Una página de man tiene además secciones que no están en [--help], como AUTHOR y SEE ALSO. Para ver rápido una sola opción sirve [--help], y cuando hace falta una explicación dividida en secciones, como el formato de un archivo de configuración o los códigos de salida, se abre man.

🔢 FAQ & contenido recomendado

cd es un comando interno de bash, así que [man cd] lleva a la página que reúne todos los comandos internos. En el servidor AlmaLinux 9.8, [type cd] mostró [cd is a shell builtin] y [man -w cd] mostró la ubicación del archivo builtins.1.gz. El uso de un solo comando interno se puede consultar directamente con [help cd].

Al ejecutar [man -a nombre] se abren una tras otra las páginas cuyo nombre coincide. Para ver solo la ubicación de los archivos, se añade [-w]. Al ejecutar [man -w -a crontab] en el servidor AlmaLinux 9.8, salieron dos líneas con los archivos de crontab de las carpetas man1 y man5.

El índice en el que buscan [man -k] y [man -f] lo crea y lo actualiza mandb. Por eso una página que todavía no está en el índice no aparece en los resultados, y el índice se vuelve a generar ejecutando [mandb] con la cuenta root.

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Demuestra que eres humano: 10   +   6   =