Como administrador o simple usuario de un sistema *nix (GNU/Linux, *BSD, etc.) muchas veces recurrimos a las páginas de manual (manpages), a través del comando man, para obtener ayuda o comprender el funcionamiento de alguna parte del sistema, herramienta o aplicación. Las páginas de manual son uno de los pilares distintivos de todo sistema operativo de la familia Unix donde, a diferencia de otros sistemas operativos (que buscan ofuscar su código y hasta su funcionamiento al máximo posible para sacar la mayor rentabilidad del soporte, pues con cobrar por las licencias del software no basta...), todo está documentado. Cada paquete, aplicación, servicio, herramienta y hasta los internals del sistema operativo y el lenguaje con el cual fue programado, tienen su respectiva página de manual (la cual puede ser consultada utilizando el comando man). Los lectores asiduos a este blog, sabrán que la mayor cantidad de referencias en los artículos son a páginas de manual.

Tener acceso libre a la documentación de un software es tan importante como tener acceso a su código fuente. Más allá de que esto permite que uno, como usuario, pueda darse soporte a sí mismo simplemente leyendo las páginas de manual, permite además comprender en detalle el funcionamiento de una pieza de software en caso de tener la necesidad de realizar una modificación sobre el mismo. Es decir, por más que uno tenga acceso al código fuente, sin su documentación es casi imposible intentar modificación alguna. Y esto es algo que recalco constantemente dada mi experiencia en el rubro. Por eso cuando alguien les diga, o lean en artículos de opinión de dudosa reputación, que cierto código fuente es auto-documentado, sepan que es una gran falacia y probablemente se trate de simple lobby a favor de determinada corporación que intenta hacer mella en la comunidad de software libre, u obtener un rédito exclusivo a partir de la misma. No hace falta nombrarla creo.

Y me fui por ramas con la filosofía del software libre, como siempre sucede. Filosofía, ese camino de muchos ramales que conduce desde ninguna parte hacia la nada, tal como reza el Diccionario del Diablo de Ambrose Bierce. El punto de este artículo es que a veces necesitamos obtener información de las páginas de manual del sistema, pero simplemente no sabemos de qué pagina del manual se trata.

La cuestión es que si consultan la página de manual de man...

Es posible buscar páginas de manual por palabra clave o expresión regular, dentro de los nombres de páginas y sus descripciones, a través de la opción -k. Pero esto equivale a utilizar apropos.

El comando apropos busca en las descripciones y nombres de páginas de manual de acuerdo a u patrón pasado como parámetro.

Veamos un ejemplo, supongamos que deseamos identificar las páginas de manual asociadas a exim4 (agente de correo electrónico por defecto en muchas distribuciones GNU/Linux, notablemente Debian):

root@linuxito:~# apropos exim
etc-aliases (5)      - Files in use by the Debian exim4 packages
etc-email-addresses (5) - Files in use by the Debian exim4 packages
exicyclog (8)        - Cycle exim's logfiles
exigrep (8)          - Search Exim's main log
exim (8)             - a Mail Transfer Agent
exim4 (8)            - a Mail Transfer Agent
exim4-config_files (5) - Files in use by the Debian exim4 packages
exim4_exim_crt (5)   - Files in use by the Debian exim4 packages
exim4_exim_key (5)   - Files in use by the Debian exim4 packages
exim4_hubbed_hosts (5) - Files in use by the Debian exim4 packages
exim4_local_domain_dnsbl_whitelist (5) - Files in use by the Debian exim4 packages
exim4_local_host_blacklist (5) - Files in use by the Debian exim4 packages
exim4_local_host_whitelist (5) - Files in use by the Debian exim4 packages
exim4_local_rcpt_callout (5) - Files in use by the Debian exim4 packages
exim4_local_sender_blacklist (5) - Files in use by the Debian exim4 packages
exim4_local_sender_callout (5) - Files in use by the Debian exim4 packages
exim4_local_sender_whitelist (5) - Files in use by the Debian exim4 packages
exim4_passwd (5)     - Files in use by the Debian exim4 packages
exim4_passwd_client (5) - Files in use by the Debian exim4 packages
exim_checkaccess (8) - Check address acceptance from given IP
exim_convert4r4 (8)  - Convert Exim configuration from v3 to v4 format
exim_db (8)          - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
exim_dbmbuild (8)    - Build a DBM file.
exim_dumpdb (8)      - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
exim_fixdb (8)       - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
exim_lock (8)        - Mailbox maintenance
exim_tidydb (8)      - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
eximstats (8)        - generates statistics from Exim mainlog or syslog files.
exipick (8)          - selectively display messages from an Exim queue
exiqgrep (8)         - Search in the exim queue
exiwhat (8)          - Finding out what Exim processes are doing
syslog2eximlog (8)   - make syslog output suitable for eximstats
update-exim4.conf (8) - Generate exim4 configuration files.
update-exim4.conf.conf (5) - Generate exim4 configuration files.
update-exim4.conf.template (8) - Regenerate exim4 configuration file template.
update-exim4defaults (8) - Manage exim4 daemon default file.

apropos retorna el nombre de la página de manual y su descripción corta para todas las coincidencias. El número entre paréntesis indica la sección en la cual se encuentra cada página de manual. Es posible restringir la búsqueda a una o varias secciones específicas mediante la opción -s:

root@linuxito:~# apropos -s 8 exim
exicyclog (8)        - Cycle exim's logfiles
exigrep (8)          - Search Exim's main log
exim (8)             - a Mail Transfer Agent
exim4 (8)            - a Mail Transfer Agent
exim_checkaccess (8) - Check address acceptance from given IP
exim_convert4r4 (8)  - Convert Exim configuration from v3 to v4 format
exim_db (8)          - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
exim_dbmbuild (8)    - Build a DBM file.
exim_dumpdb (8)      - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
exim_fixdb (8)       - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
exim_lock (8)        - Mailbox maintenance
exim_tidydb (8)      - Manage Exim's hint databases (exim_dumpdb, exim_fixdb, exim_tidydb)
eximstats (8)        - generates statistics from Exim mainlog or syslog files.
exipick (8)          - selectively display messages from an Exim queue
exiqgrep (8)         - Search in the exim queue
exiwhat (8)          - Finding out what Exim processes are doing
syslog2eximlog (8)   - make syslog output suitable for eximstats
update-exim4.conf (8) - Generate exim4 configuration files.
update-exim4.conf.template (8) - Regenerate exim4 configuration file template.
update-exim4defaults (8) - Manage exim4 daemon default file.

Cabe recordar que las secciones del manual son las siguientes (man man):

       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]

La información relacionada a los nombres de páginas de manual disponibles en el sistema y sus descripciones cortas es provista por el utilitario whatis. Lo interesante es que apropos es un simple enlace simbólico al binario de whatis, salvo que el programa se comporta diferente de acuerdo a cómo fue invocado:

root@linuxito:~# which apropos
/usr/bin/apropos
root@linuxito:~# file /usr/bin/apropos
/usr/bin/apropos: symbolic link to `whatis'
root@linuxito:~# which whatis
/usr/bin/whatis
root@linuxito:~# file /usr/bin/whatis 
/usr/bin/whatis: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xc148372324fe20141eec0d8d42952be44520e972, stripped

Más allá de este detalle de color, la conclusión es que es posible buscar páginas de manual mediante apropos o man -k. Un tip a tener en cuenta a la hora de buscar documentación e información en sistemas operativos de la familia Unix.

Referencias

  • man man
  • man aropos
  • man whatis


Tal vez pueda interesarte


Compartí este artículo