Si alguna vez has ejecutado man para recordar una opción de un comando y has terminado leyendo tres pantallas de texto para encontrar el ejemplo que buscabas, tldr va a convertirse en tu nuevo mejor amigo en la terminal. En esta guía vemos qué es, cómo instalarlo en las principales distribuciones de Linux (y también en macOS y Windows), cómo configurarlo en español y qué ventajas ofrece frente al clásico man.
Qué es tldr
El comando tldr en Linux, acrónimo de “Too Long; Didn’t Read” (demasiado largo, no lo leí), es una colección comunitaria de páginas de ayuda concisas y orientadas a ejemplos prácticos para comandos de terminal. En lugar de la documentación exhaustiva de man, cada página de tldr muestra directamente los casos de uso más habituales de un comando, listos para copiar y pegar. Es la diferencia entre leer un manual técnico y preguntarle a alguien con experiencia “oye, ¿cómo se usa esto normalmente?”.
BlogEnFaseTerminal:~$ tldr tldr
tldr
Muestra páginas de ayuda simples para herramientas de línea de comandos del proyecto tldr-pages.
Nota: las opciones `--language` y `--list` no son requeridas por la especificación del cliente, pero la mayoría de los mismos las implementan.
Más información: https://github.com/tldr-pages/tldr/blob/main/CLIENT-SPECIFICATION.md#command-line-interface.
- Imprime la página tldr para un comando específico (pista: ¡así es como has llegado hasta aquí!):
tldr comando
- Imprime la página tldr para un subcomando específico:
tldr comando subcomando
- Imprime la página tldr para un comando en el [L]enguaje dado (si está disponible, de lo contrario vuelve al inglés):
tldr --language código_de_lenguaje comando
- Imprime la página tldr para un comando de una [p]lataforma específica:
tldr --platform android|common|freebsd|linux|osx|netbsd|openbsd|sunos|windows comando
- Actualiza la caché local de páginas tldr:
tldr --update
- [l]ista todas las páginas para la plataforma actual y common:
tldr --list
- [l]ista todas las páginas de subcomandos disponibles para un comando:
tldr --list | grep comando | column
- Imprime la página tldr para un comando aleatorio:
tldr --list | shuf --head-count 1 | xargs tldr
La aplicación tldr no solo te muestra información resumida de un comando para Linux, sino también para muchos otros sistemas operativos que también son controlados con el terminal. Actualmente tiene registrados en su base de datos:
- Común 1149 referencias a comandos utilizados en la terminal
- Linux 655
- macOS 279
- Windows 240
- Cisco iOS 17
- Android 15
- FreeBSD 8
- NetBSD 6
- OpenBSD 2
- dos 1
- SunOS 1
Clientes oficiales: ¿cuál elijo?
El proyecto tldr-pages mantiene varios clientes oficiales, y elegir el adecuado depende de tu sistema y tus preferencias
⚠ ¡Advertencia! El comando `tldr` que se encuentra en las fuentes de Debian es una versión anticuada que no funciona correctamente. Es recomendable instalarlo desde las siguientes fuentes:
- Cliente en Python (recomendado): estable, con buen soporte de idiomas y fácil de mantener actualizado.
-
Cliente en Rust (
tlrc): rápido y moderno, buena opción si priorizas rendimiento. - Cliente en Node.js: el más veterano de los tres; sigue funcionando, aunque suele recibir actualizaciones con menos frecuencia.
- Web/PWA: tldr.inbrowser.app, útil si no quieres instalar nada y quieres poder usarla también sin conexión como aplicación web progresiva.
Instalación por plataforma
Linux
tldr está disponible en los repositorios de la mayoría de distribuciones, así que la instalación depende del gestor de paquetes que use la tuya. Estos son los comandos para las familias más comunes:
Debian, Ubuntu y derivadas (Linux Mint, Pop!_OS, elementary OS, MX Linux…):
# Cliente Python vía pipx (recomendado)
sudo apt install pipx
pipx install tldr
tldr --update
# Cliente Node.js
sudo apt install nodejs npm
sudo npm install -g tldr
Fedora / RHEL / derivadas:
sudo dnf install tldr
Arch Linux / Manjaro:
# Cliente Python, en los repositorios oficiales
sudo pacman -S tldr
# Cliente Rust (tlrc), desde el AUR con tu ayudante habitual (yay, paru...)
yay -S tlrc
openSUSE:
sudo zypper install tlrc
Independiente de la distribución (funciona en cualquiera con Python, Rust o Node instalados):
# Python vía pipx o pip
pipx install tldr
# Rust (tlrc)
cargo install tlrc --locked
# Node.js
npm install -g tldr
# Snap (disponible en la mayoría de distros)
sudo snap install tldr
Sin instalar nada: abre tldr.inbrowser.app y añádela como PWA desde el navegador para tener acceso offline. Muy útil para usarlo como centro de consulta desde tu smartphone, por ejemplo, al añadir la aplicación web a la página de inicio.
macOS
# Con Homebrew + tlrc
brew install tlrc
tlrc --update
# Con pipx
brew install pipx
pipx install tldr
# Con Node.js
brew install node
npm install -g tldr
Windows
# Cliente Rust vía winget
winget install tldr-pages.tlrc
# Cliente Node.js
npm install -g tldr
Soporte de idiomas: ¿hace falta traducir tldr o ya viene en español?
Una duda habitual: ¿es necesario recurrir a una traducción automática, o tldr ya soporta otros idiomas además del inglés?
La respuesta corta es que no necesitas traducir nada por tu cuenta: tldr-pages es un proyecto community-driven que mantiene traducciones oficiales en decenas de idiomas —español incluido— hechas por colaboradores del propio proyecto. Los clientes (Python, tlrc, Node.js) descargan directamente esa base de datos de páginas ya traducidas cuando ejecutas tldr --update, y la seleccionan automáticamente según el idioma de tu sistema. No hay que instalar un paquete de idioma aparte ni tocar la base de datos manualmente: se actualiza igual que las páginas en inglés.
Dicho esto, hay un matiz importante: la traducción al español, como la de cualquier otro idioma, es un trabajo en curso hecho por voluntarios, así que no todas las páginas están traducidas todavía. Cuando una página no tiene versión en español, el cliente hace fallback automático al inglés en lugar de mostrar un error. Es precisamente en esos huecos donde tiene sentido una traducción automática (como la que veremos con Translate Shell más abajo): no sustituye al soporte nativo de idiomas de tldr, sino que lo complementa para los comandos que aún no tienen traducción oficial.
Para comprobar qué variables de entorno tiene tu sistema y que tldr podría usar para decidir el idioma:
echo $TLDR_LANGUAGE
echo $LANGUAGE
echo $LANG
tldr --language(o-L) no muestra el idioma actual: es una opción que requiere un argumento (tldr --language es) para forzar ese idioma en esa consulta concreta, y no un modo de consulta del idioma configurado. Si la ejecutas sin argumento, el cliente simplemente devolverá un error de uso. Para saber qué idioma se está usando realmente, comprueba las variables de entorno anteriores; en el cliente Rust (tlrc) también puedes ejecutartldr --info, que muestra los idiomas ya descargados en la caché.
El orden de prioridad que sigue el cliente Python (y, de forma equivalente, la especificación oficial de tldr) es: primero --language si se indica al ejecutar el comando, después la variable TLDR_LANGUAGE, luego LANGUAGE y LANG, y en último caso el inglés como idioma por defecto.
Para forzar el español o el inglés en una sesión:
export TLDR_LANGUAGE=es # español
export TLDR_LANGUAGE=en # inglés
Si quieres que el cambio sea permanente, añade la línea correspondiente a tu ~/.bashrc o ~/.zshrc.
tldr frente a man: ¿cuándo uso cada uno?
tldr aporta:
- Resúmenes prácticos con ejemplos listos para copiar.
- Lectura rápida, ideal para refrescar opciones comunes.
- Soporte multilenguaje cuando existe traducción disponible.
- Actualización sencilla desde el repositorio central de tldr-pages.
BlogEnFaseTerminal:~$ tldr ls ls Lista los contenidos de directorios. Más información: https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html. - Lista un archivo por línea: ls -1 - Lista todos los archivos, incluyendo archivos ocultos: ls --all - Lista todos los archivos, añadiendo / al final de los nombres de directorios: ls --classify - Lista todos los archivos en formato largo (permisos, propietarios, tamaño y fecha de última modificación): ls -l --all - Lista en formato largo y tamaño legible por humanos (i.e., KiB, MiB, GiB, etc.): ls -l --human-readable - Lista recursivamente en formato largo y ordena los tamaños de mayor a menor: ls -lS --recursive - Lista todos los archivos en formato largo y ordenados por fecha de modificación (archivos más viejos en primer lugar): ls -lt --reverse - Lista solamente directorios: ls --directory */
man aporta:
- Referencia completa y detallada de cada comando.
- Cobertura exhaustiva de todas las opciones y comportamientos del sistema.
- Disponibilidad local, sin depender de descargas externas.
En la práctica, la regla es sencilla: usa tldr cuando necesites recordar rápido cómo se usa un comando, y recurre a man cuando necesites la documentación completa o algún detalle técnico concreto que tldr no cubra.
BlogEnFaseTerminal:~$ man ls
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.
Mandatory arguments to long options are mandatory for short options
too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
with -l, print the author of each file
-b, --escape
print C-style escapes for nongraphic characters
--block-size=SIZE
with -l, scale sizes by SIZE when printing them; e.g.,
'--block-size=M'; see SIZE format below
-B, --ignore-backups
do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last change of file
status information); with -l: show ctime and sort by name; oth‐
erwise: sort by ctime, newest first
-C list entries by columns
--color[=WHEN]
color the output WHEN; more info below
-d, --directory
list directories themselves, not their contents
-D, --dired
generate output designed for Emacs' dired mode
-f list all entries in directory order
-F, --classify[=WHEN]
append indicator (one of */=>@|) to entries WHEN
--file-type
likewise, except do not append '*'
--format=WORD
across -x, commas -m, horizontal -x, long -l, single-column -1,
verbose -l, vertical -C
--full-time
like -l --time-style=full-iso
-g like -l, but do not list owner
--group-directories-first
group directories before files; can be augmented with a --sort
option, but any use of --sort=none (-U) disables grouping
-G, --no-group
in a long listing, don't print group names
-h, --human-readable
with -l and -s, print sizes like 1K 234M 2G etc.
--si likewise, but use powers of 1000 not 1024
-H, --dereference-command-line
follow symbolic links listed on the command line
--dereference-command-line-symlink-to-dir
follow each command line symbolic link that points to a direc‐
tory
--hide=PATTERN
do not list implied entries matching shell PATTERN (overridden
by -a or -A)
--hyperlink[=WHEN]
hyperlink file names WHEN
--indicator-style=WORD
append indicator with style WORD to entry names: none (default),
slash (-p), file-type (--file-type), classify (-F)
-i, --inode
print the index number of each file
-I, --ignore=PATTERN
do not list implied entries matching shell PATTERN
-k, --kibibytes
default to 1024-byte blocks for file system usage; used only
with -s and per directory totals
-l use a long listing format
-L, --dereference
when showing file information for a symbolic link, show informa‐
tion for the file the link references rather than for the link
itself
-m fill width with a comma separated list of entries
-n, --numeric-uid-gid
like -l, but list numeric user and group IDs
-N, --literal
print entry names without quoting
-o like -l, but do not list group information
-p, --indicator-style=slash
append / indicator to directories
-q, --hide-control-chars
print ? instead of nongraphic characters
--show-control-chars
show nongraphic characters as-is (the default, unless program is
'ls' and output is a terminal)
-Q, --quote-name
enclose entry names in double quotes
--quoting-style=WORD
use quoting style WORD for entry names: literal, locale, shell,
shell-always, shell-escape, shell-escape-always, c, escape
(overrides QUOTING_STYLE environment variable)
-r, --reverse
reverse order while sorting
-R, --recursive
list subdirectories recursively
-s, --size
print the allocated size of each file, in blocks
-S sort by file size, largest first
--sort=WORD
sort by WORD instead of name: none (-U), size (-S), time (-t),
version (-v), extension (-X), width
--time=WORD
select which timestamp used to display or sort; access time
(-u): atime, access, use; metadata change time (-c): ctime, sta‐
tus; modified time (default): mtime, modification; birth time:
birth, creation;
with -l, WORD determines which time to show; with --sort=time,
sort by WORD (newest first)
--time-style=TIME_STYLE
time/date format with -l; see TIME_STYLE below
-t sort by time, newest first; see --time
-T, --tabsize=COLS
assume tab stops at each COLS instead of 8
-u with -lt: sort by, and show, access time; with -l: show access
time and sort by name; otherwise: sort by access time, newest
first
-U do not sort; list entries in directory order
-v natural sort of (version) numbers within text
-w, --width=COLS
set output width to COLS. 0 means no limit
-x list entries by lines instead of by columns
-X sort alphabetically by entry extension
-Z, --context
print any security context of each file
--zero end each output line with NUL, not newline
-1 list one file per line
--help display this help and exit
--version
output version information and exit
The SIZE argument is an integer and optional unit (example: 10K is
10*1024). Units are K,M,G,T,P,E,Z,Y,R,Q (powers of 1024) or KB,MB,...
(powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and
so on.
The TIME_STYLE argument can be full-iso, long-iso, iso, locale, or
+FORMAT. FORMAT is interpreted like in date(1). If FORMAT is FOR‐
MAT1<newline>FORMAT2, then FORMAT1 applies to non-recent files and FOR‐
MAT2 to recent files. TIME_STYLE prefixed with 'posix-' takes effect
only outside the POSIX locale. Also the TIME_STYLE environment vari‐
able sets the default style to use.
The WHEN argument defaults to 'always' and can also be 'auto' or
'never'.
Using color to distinguish file types is disabled both by default and
with --color=never. With --color=auto, ls emits color codes only when
standard output is connected to a terminal. The LS_COLORS environment
variable can change the settings. Use the dircolors(1) command to set
it.
Exit status:
0 if OK,
1 if minor problems (e.g., cannot access subdirectory),
2 if serious trouble (e.g., cannot access command-line argument).
AUTHOR
Written by Richard M. Stallman and David MacKenzie.
REPORTING BUGS
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
COPYRIGHT
Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU
GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
dircolors(1)
Full documentation <https://www.gnu.org/software/coreutils/ls>
or available locally via: info '(coreutils) ls invocation'
GNU coreutils 9.4 August 2026 LS(1)
Manual page ls(1) line 192/249 (END) (press h for help or q to quit)
El comando man es mucho más completo, pero también más engorroso con sus 248 líneas de documentación, y tldr es mucho más conciso y probablemente mucho más práctico para usuarios principiantes o intermedios, con sus 30 líneas para mostrar cómo utilizar el comando ls
Comandos y trucos útiles
Actualizar las páginas:
tldr --update
# o, si usas tlrc
tlrc --update
Listar todas las páginas disponibles (ojo: no es tldr ls, que buscaría la página del comando “ls”; la opción correcta es --list):
tldr --list
Mostrar la salida sin colores (útil si quieres procesarla o traducirla):
tldr --list | sed 's/\x1b\[[0-9;]*m//g'
Comprobar si una página en concreto ya está traducida al español: la forma fiable es pedirla directamente en ese idioma y ver si el cliente la muestra en español o cae al inglés (los clientes no exponen de forma estándar la ruta interna donde guardan la caché por idioma):
tldr --language es ls
Traducción automática en la terminal (opcional)
Como se ha explicado anteriormente, esto no es necesario para usar tldr en español, sino un complemento para las páginas que todavía no tienen traducción oficial. Si quieres cubrir ese hueco con una traducción automática al vuelo, puedes combinar tldr con Translate Shell:
sudo apt install translate-shell
Añade esta función a tu ~/.bashrc o ~/.zshrc:
tldres() {
tldr "$@" | sed 's/\x1b\[[0-9;]*m//g' | trans -b en:es
}
Recarga la configuración y pruébala:
source ~/.bashrc
tldres ls
Solución de problemas comunes
“No tldr entry for ls”
tldr --update
Si el problema persiste, elimina la caché local y vuelve a actualizar:
rm -rf ~/.local/share/tldr
tldr --update
Si aun así no se soluciona, lo más sencillo es desinstalar la versión que no funciona e instalar un cliente moderno (Python o Rust) y repetir la actualización.
sudo apt-get purge tldr
rm -rf ~/.local/share/tldr
Recursos oficiales
- Página oficial: tldr.sh
- Web/PWA: tldr.inbrowser.app
- Repositorio de páginas: tldr-pages en GitHub
Conclusión
tldr es una herramienta ligera y práctica que agiliza el trabajo diario en la terminal. Instalar un cliente moderno como el de Python o Rust te da acceso a páginas actualizadas y soporte de idiomas; y si prefieres no instalar nada, la web PWA cubre perfectamente esa necesidad. Y cuando necesites profundizar más allá de los ejemplos rápidos, man sigue ahí para lo que tldr no cubre.