whatis: qué hace un comando de Linux en una sola línea

whatis: qué hace un comando de Linux en una sola línea

whatis: Qué hace un comando de Linux en una sola línea

Cuando trabajas en la terminal te cruzas con comandos que no conoces: nl, comm, fmt, tac… Abrir su página de man completa solo para saber qué hacen es excesivo. Para eso existe whatis: te devuelve la descripción de una línea de cualquier página del manual.

Índice

  1. Qué es whatis
  2. Uso básico
  3. Las secciones del manual
  4. Opciones útiles
  5. Cómo funciona por dentro
  6. Problemas habituales
  7. ¿Es posible instalar los manuales traducidos al español?
  8. whatis frente a otras herramientas
  9. Trucos y ejemplos
  10. Conclusión

Qué es whatis

whatis busca el nombre que le indiques en una base de datos de páginas de manual y muestra la descripción corta (la línea de la sección NAME de cada página). No abre la página ni la formatea: solo te dice, en una línea, qué es y para qué sirve.

Forma parte del paquete man-db, que en la mayoría de distribuciones ya viene instalado junto con man, apropos y mandb.

whatis whatis
whatis (1)           - muestra descripciones de una línea de las páginas de manual

Uso básico

whatis ls

Salida típica:

ls (1)               - list directory contents

El formato es siempre nombre (sección) - descripción. Puedes consultar varios comandos a la vez:

whatis ls cp mv rm
ls (1)               - list directory contents
cp (1)               - copy files and directories
mv (1)               - move (rename) files
rm (1)               - remove files or directories

Y, como cualquier otro comando, también puedes preguntarle por sí mismo:

whatis whatis
whatis (1)           - display one-line manual page descriptions

Nota: las descripciones salen del manual instalado en tu sistema. Si tienes instalados los manuales en español, es posible que las veas traducidas. Los textos de los ejemplos pueden variar ligeramente según la distribución y la versión.

Las secciones del manual

Un mismo nombre puede existir en varias secciones del manual, y whatis las muestra todas. Por ejemplo:

whatis printf
printf (1)           - format and print data
printf (1p)          - write formatted output
printf (3)           - formatted output conversion

Aquí printf es a la vez un comando de shell (sección 1) y una función de la biblioteca de C (sección 3). Las secciones estándar son:

Sección Contenido
1 Comandos de usuario y programas ejecutables
2 Llamadas al sistema (syscalls)
3 Funciones de bibliotecas (C, etc.)
4 Dispositivos y archivos especiales (/dev)
5 Formatos de archivo y convenciones (/etc/passwd, fstab…)
6 Juegos
7 Miscelánea (protocolos, estándares, visión general)
8 Administración del sistema (comandos de root)
9 Interfaz del kernel (no siempre presente)

Ver el número de sección te ayuda después a abrir exactamente la página que buscas: man 5 passwd en lugar de man passwd.

Opciones útiles

Estas son las opciones más prácticas de la versión de whatis incluida en man-db (consulta man whatis en tu sistema por si tu versión difiere):

Opción Qué hace
-s, --sections lista Limita la búsqueda a una o varias secciones (separadas por comas).
-w, --wildcard Interpreta los nombres como patrones con comodines (*, ?).
-r, --regex Interpreta los nombres como expresiones regulares.
-l, --long No recorta la salida al ancho de la terminal.
-L, --locale idioma Usa otra configuración regional para buscar.
-d, --debug Muestra información de depuración.
-V, --version Muestra la versión.
-?, --help Muestra la ayuda.

Limitar por sección

whatis -s 1 printf
printf (1)           - format and print data

Buscar con comodines

Por defecto whatis solo encuentra coincidencias exactas del nombre. Con -w puedes usar patrones:

whatis -w 'pass*'

Esto lista todas las páginas cuyo nombre empieza por pass (passwd, passwd2des, etc., según lo que tengas instalado). Recuerda entrecomillar el patrón para que sea whatis y no tu shell quien lo expanda.

Buscar con expresiones regulares

whatis -r '^tar'

Devuelve las entradas cuyo nombre empieza por tar.

Salida sin recortar

Si la descripción es larga y tu terminal es estrecha, whatis la corta. Con -l la ves completa:

whatis -l systemd

Cómo funciona por dentro

whatis no lee las páginas de manual cada vez. Consulta una base de datos de índices que se construye a partir de ellas. Esa base de datos la genera y actualiza mandb, y se guarda normalmente bajo /var/cache/man/.

Por eso, si instalas un programa nuevo con su página de manual, puede que whatis no lo encuentre hasta que se actualice el índice. En Debian y Ubuntu, por ejemplo, esto se hace de forma automática de manera periódica, pero puedes forzarlo cuando quieras:

sudo mandb

Ese comando recorre los directorios de manuales y reconstruye o actualiza los índices. Su salida indica cuántas páginas ha procesado y cuántas entradas nuevas ha añadido.

Problemas habituales

«nothing appropriate»

micomando: nothing appropriate.

Puede significar varias cosas:

  • El comando no tiene página de manual. Muchos scripts y programas pequeños no la traen. Los builtins de la shell (cd, export, alias…) suelen documentarse en man bash y no tienen entrada propia en todas las distribuciones; para ellos usa help cd.
  • El índice está desactualizado. Ejecuta sudo mandb y vuelve a probar.
  • Escribiste mal el nombre, o quieres buscar por parte del nombre y necesitas -w, -r o apropos.

Cuando whatis no encuentra nada, además de mostrar ese mensaje devuelve el código de salida 16, algo muy útil en scripts:

if whatis micomando >/dev/null 2>&1; then
    echo "Tiene página de manual"
else
    echo "No hay manual para micomando"
fi

No tengo manuales instalados

En contenedores y sistemas mínimos es habitual que no estén ni man ni las páginas. Instala el paquete correspondiente:

# Debian / Ubuntu
sudo apt install man-db manpages

# Fedora
sudo dnf install man-db man-pages

# Arch Linux
sudo pacman -S man-db man-pages

Después ejecuta sudo mandb para generar el índice.

Instalar los manuales traducidos al español

Sí. Las principales distribuciones empaquetan por separado las traducciones al español de las páginas de manual. Son traducciones comunitarias, así que la cobertura es parcial, pero cubren buena parte de los comandos más habituales. Conseguirlas y usarlas lleva cuatro pasos.

1. Instalar el paquete de traducciones

Distribución Paquetes
Debian / Ubuntu manpages-es y manpages-es-extra
Fedora man-pages-es y man-pages-es-extra
Arch Linux man-pages-es
openSUSE man-pages-es

bash

# Debian / Ubuntu
sudo apt install manpages-es

# Fedora
sudo dnf install man-pages-es man-pages-es-extra

# Arch Linux
sudo pacman -S man-pages-es

El paquete «extra» incluye traducciones de programas que no están en el paquete principal. Los nombres exactos pueden cambiar entre distribuciones y versiones, así que si alguno no aparece, búscalo con apt search manpages-es, dnf search man-pages-es o pacman -Ss man-pages-es.

2. Comprobar que el idioma (locale) español está disponible

man elige el idioma según la configuración regional, por lo que necesita que es_ES.UTF-8 esté generado en el sistema. Compruébalo con:

bash

locale -a | grep es_ES

Si no aparece nada, genéralo:

bash

# Debian: marca es_ES.UTF-8 en el asistente
sudo dpkg-reconfigure locales

# Ubuntu
sudo locale-gen es_ES.UTF-8

# Fedora
sudo dnf install glibc-langpack-es

# Arch Linux: descomenta la línea "es_ES.UTF-8 UTF-8" en /etc/locale.gen y ejecuta
sudo locale-gen

En contenedores Debian o Ubuntu minimalistas puede que ni siquiera esté instalado el paquete locales, así que instálalo antes con sudo apt install locales.

3. Actualizar el índice

bash

sudo mandb

Normalmente el propio gestor de paquetes lo hace al instalar, pero ejecutarlo a mano no hace daño. Las páginas traducidas se guardan en /usr/share/man/es/, así que puedes comprobar que están ahí:

bash

ls /usr/share/man/es/man1 | head

4. Usar los manuales en español

Si tu sistema ya está en español (LANG=es_ES.UTF-8), man mostrará las traducciones automáticamente cuando existan. Si no, puedes pedirlas de forma puntual:

bash

man -L es ls

o con la variable de entorno:

bash

LANG=es_ES.UTF-8 man ls

whatis admite la misma opción, y la descripción de una línea saldrá en español para las páginas traducidas:

bash

whatis -L es ls

Si prefieres mantener el sistema en inglés pero consultar los manuales en español, puedes crear un alias en tu ~/.bashrc o ~/.zshrc:

bash

alias manes='man -L es'

Si una página no está traducida, normalmente man te mostrará la versión en inglés. Y para volver al original cuando lo necesites:

bash

man -L en ls

Limitaciones

  • La cobertura es parcial. Habrá comandos sin traducir, sobre todo los más recientes o poco comunes.
  • Pueden estar desfasadas. Las traducciones las mantienen voluntarios y a veces van por detrás de la versión del programa que tienes instalado, de modo que alguna opción nueva podría no aparecer o describirse distinto.
  • Para algo crítico, contrasta con el original. Si una opción te genera dudas, mira la página en inglés con man -L en comando.

Aun así, para empezar a familiarizarse con la terminal, leer los manuales en tu idioma es una gran ayuda.

En macOS y BSD

macOS y los sistemas BSD incluyen su propia versión de whatis, con menos opciones. Se apoya en una base de datos que se genera con makewhatis, y las opciones descritas arriba (-s, -w, -r…) no son idénticas, así que consulta man whatis en tu sistema.

whatis frente a otras herramientas

Herramienta Para qué sirve Ejemplo
whatis Descripción corta de un nombre exacto whatis grep
man -f Equivalente a whatis man -f grep
apropos Buscar por palabra clave en nombres y descripciones apropos "copy files"
man -k Equivalente a apropos man -k "copy files"
man Leer la página completa man grep
info Documentación GNU en formato info info coreutils
tldr Ejemplos prácticos y resumidos tldr grep
whereis Localizar binario, fuente y manual whereis grep
which / type Ver qué ejecutable o alias se usará type grep
help Ayuda de los comandos internos de bash help cd

La regla mental es sencilla:

  • ¿Sé el nombre y quiero saber qué es? → whatis.
  • ¿No sé el nombre pero sé qué quiero hacer? → apropos.
  • ¿Quiero entenderlo a fondo? → man.
  • ¿Quiero ejemplos rápidos? → tldr.

Trucos y ejemplos

Descubrir qué hay en tu sistema

Una forma divertida de aprender es mirar qué contienen los directorios de binarios. Por ejemplo, las descripciones de los primeros programas de /usr/bin:

ls /usr/bin | head -20 | xargs -n1 whatis 2>/dev/null

Entender un comando que te encuentras en un script

Si lees un script ajeno con una línea como esta:

tr -d '\r' < entrada.txt | sort -u | comm -23 - excluidos.txt

pregunta por los que no conozcas:

whatis tr sort comm

Comprobar si un nombre existe en varias secciones

whatis -w 'open'

Te ayuda a distinguir, por ejemplo, el comando de usuario de la llamada al sistema de mismo nombre, y a elegir la sección correcta antes de ejecutar man.

Un alias práctico

Si lo usas a menudo, puedes combinarlo con una función que muestre primero la descripción corta y luego abra el manual:

quees() {
    whatis "$1" && read -rp "¿Abrir el manual? [s/N] " r
    [[ "$r" =~ ^[sS]$ ]] && man "$1"
}

Añádela a tu ~/.bashrc o ~/.zshrc y tendrás quees ls en castellano.

Conclusión

whatis es de esos comandos pequeños que no llaman la atención pero que ahorran tiempo cada día: una consulta rápida, sin ruido y sin salir de la terminal. Si lo combinas con apropos para descubrir, man para profundizar y tldr para ver ejemplos, tendrás un flujo completo para aprender cualquier comando de Linux sin abrir el navegador.

Y recuerda: si whatis no encuentra algo que debería existir, casi siempre basta con un sudo mandb.