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
- Qué es whatis
- Uso básico
- Las secciones del manual
- Opciones útiles
- Cómo funciona por dentro
- Problemas habituales
- ¿Es posible instalar los manuales traducidos al español?
- whatis frente a otras herramientas
- Trucos y ejemplos
- 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 enman bashy no tienen entrada propia en todas las distribuciones; para ellos usahelp cd. -
El índice está desactualizado. Ejecuta
sudo mandby vuelve a probar. -
Escribiste mal el nombre, o quieres buscar por parte del nombre y necesitas
-w,-roapropos.
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.