- Presentación de varias herramientas modernas de línea de comandos que mejoran la eficiencia del trabajo en Linux
- Incluye muchas herramientas centradas en el rendimiento y desarrolladas en Rust, Go y otros lenguajes, que reemplazan de forma moderna o potencian los comandos Unix tradicionales
Herramientas para ver y explorar archivos
bat : versión mejorada del comando cat, con resaltado de sintaxis e integración reforzada con git
exa : visor moderno de listas de archivos que reemplaza ls/tree, aunque actualmente ya no recibe mantenimiento
eza : fork de exa que ofrece una versión moderna de ls/tree
lsd : ls de nueva generación, con compatibilidad tradicional y una salida más pulida
broot : explorador de archivos en forma de árbol con navegación mejorada
nnn : administrador de archivos para terminal ligero y rápido
Análisis de uso de espacio en archivos y directorios
ncdu : ofrece una interfaz intuitiva de du basada en texto
dust : alternativa más fácil a du implementada en Rust
duf : herramienta de análisis de uso de disco con mejor usabilidad que df
Búsqueda de archivos y código
fd : reemplazo compacto y rápido de find, con gran usabilidad
ripgrep : alternativa a grep ultrarrápida con soporte para gitignore
ag : herramienta de búsqueda de código similar a ack, pero más rápida
fzf : buscador difuso de propósito general. Puede usarse en pipelines y en muchos otros contextos
bfs : reemplazo de find basado en breadth-first
Visores de Git/diff dentro de la terminal
delta : visualiza con mayor legibilidad los resultados de git y diff
Historial y procesamiento de comandos
mcfly : mejora de forma innovadora la búsqueda y navegación del historial del shell. Ofrece mejor calidad de búsqueda y una UI intuitiva
Procesamiento de datos
choose : alternativa más intuitiva y rápida a cut y parte de awk
jq : parser de datos que se usa como un sed especializado en JSON
sd : herramienta de reemplazo de sed, con un enfoque de find/replace más familiar
Monitoreo de sistema/procesos
bottom : monitor gráfico y multiplataforma de sistema y procesos
glances : versión mejorada de top/htop
gtop : monitor del sistema tipo dashboard para terminal
procs : comando alternativo a ps escrito en Rust
Benchmarking y red
hyperfine : herramienta de automatización de benchmarking para CLI
gping : herramienta ping con salida gráfica
Clientes HTTP
httpie : cliente HTTP moderno y amigable para CLI. Ideal para probar APIs de desarrollo
curlie : herramienta que combina la potencia de curl con la usabilidad de httpie
xh : herramienta alternativa a httpie centrada en el rendimiento
Navegación entre directorios y editores
zoxide : comando cd inteligente inspirado en z
micro : editor de texto para terminal con funciones modernas
Nuevas utilidades CLI
up : herramienta de pipelines con vista previa en tiempo real, permite ver de inmediato la salida de los comandos
Herramientas de ayuda y documentación
ManKier : páginas man resumidas, con explicaciones de comandos limpias
tldr : resumen de páginas man conciso y centrado en ejemplos
tealdeer : implementación de tldr en Rust, con ejecución rápida
explainshell : analiza automáticamente los argumentos de comandos y explica visualmente su significado
cheat.sh : servicio de ayuda en línea que integra tldr y cheatsheets
Herramientas GUI
baobab : analizador de uso de disco con GUI
stacer : herramienta GUI para optimización y monitoreo del sistema, incluye gestión de servicios
1 comentarios
Opiniones en Hacker News
Puede que estas herramientas sean objetivamente mejores, pero me di cuenta de que tener que configurarlas cada vez que reinstalo el OS, levanto una VM o entro por SSH es un sufrimiento interminable. Configurar cada entorno cansa, y tampoco quiero estar mezclando herramientas nuevas en un lugar y tradicionales en otro. Aprender bien las herramientas clásicas es lo que más te simplifica la vida
Algunas personas pasan casi todo su tiempo en su propia computadora, así que estas mejoras de comodidad sí valen mucho. Aun así, también saben usar más o menos las herramientas clásicas, y con eso les alcanza cuando de vez en cuando trabajan en otro servidor. No todo el mundo es un administrador de sistemas que tiene que iniciar sesión en muchos servidores distintos todo el día
Algunas herramientas son tan superiores que valen totalmente la pena aunque instalarlas sea un poco molesto. Manejo bien las herramientas clásicas, pero
fdoripgrepsiempre me parecen mejoresUna de las razones por las que realmente me encanta Nix es que permite tener prácticamente el mismo setup en casi cualquier entorno (siempre que use Linux o macOS, que son los dos que me importan). Hay varias formas de instalar Nix sin privilegios de root, así que puedo recrear mi entorno en cualquier lado. Claro, si no hay Nix, las herramientas clásicas también alcanzan. No es que haya que elegir una u otra; puedes tener ambas
Cuando reinstalas un OS, igual tienes que instalar los paquetes que necesitas con
apt-get,pacman,dnf,brewy cosas así, y además instalar tu navegador, editor y demás por separado. Si entras por SSH, ni siquiera puedes usar GUI, pero eso no es razón para evitar herramientas con GUI. Aunque el conjunto de herramientas sea distinto entre tu entorno personal y uno compartido, no me parece un gran problema. Por ejemplo,batno reemplaza por completo acat, solo agrega resaltado de sintaxis y te hace la vida más fácil. Si no está instalado, simplemente no lo usasDesde mi punto de vista, si lo ves desde la filosofía UNIX de “haz una sola cosa y hazla bien”, parte de la esencia de estas utilidades simples es justamente que puedas reemplazarlas fácilmente cuando aparece una alternativa mejor. Tiene sentido aprender primero las herramientas clásicas por tu carrera, pero también creo que hay que aprender las alternativas nuevas. Más que
batoeza, a mí me ayudan mucho alternativas que ahorran tiempo comofd(reemplazo defind) osd(reemplazo desed)Desde la perspectiva de alguien que entra a cientos de servidores en distintas redes y clientes, casi no vale la pena usar herramientas personalizadas. En el 90% de los entornos ni siquiera están instaladas. Yo agrego solo unas pocas cosas en
ansible-configpara desplegarlas de forma automatizada, pero mantengo la lista muy corta. El 95% de los sistemas que administro son Debian o Ubuntu, así que la base es casi igual, y encima de eso solo agrego cosas comoack,etckeeper,vim,pvydstatLa clave aquí es que estamos hablando de “servidores”. La mayoría de los programas apenas mejorados para sysadmins tal vez no valgan mucho la pena, pero algunos sí son herramientas de desarrollo de verdad para usar en las pocas máquinas donde programas. Ejemplos claros son
ripgrep(un excelentegreprecursivo),jq(procesador de JSON, sin alternativa dentro del toolkit base de Unix) yhyperfine(benchmarking)Como trabajo entre Windows y Linux, herramientas excelentes y multiplataforma como
ripgrepson realmente muy cómodasMe pregunto si existirá alguna herramienta o extensión de SSH que traiga automáticamente estas apps a una sesión remota por SSH. Si el binario es pequeño, podrías copiarlo a una carpeta temporal y usarlo ahí, e incluso automatizar ese proceso. El tema sería si hay problemas de seguridad o si hace falta algún permiso extra. Al final, la portabilidad de estas apps es la clave. Yo también pienso seguido en esto
emacsfunciona casi como un sistema operativo en sí mismo, así que te da un entorno familiar en cualquier sistema. De ahí viene la frase “GNU is my operating system, linux is just the current kernel”. Desde la perspectiva de un admin veterano, por eso recomiendo a quien recién aprende Linux que empiece por el comandoinfoy lea todo ese manual. Con eso puedes superar fácilmente a la mayoría de los administradores. Si sabes qué herramientas vienen integradas, la documentación también es buena y escribir scripts se vuelve fácil; ese es justamente el núcleo de la filosofía Linux. Hubo una época en la que ni siquiera habíananoy solo estabavi, pero hoy con automatización CI/CD también es fácil agregar un editor TUINo conecto mucho con este tipo de comentarios del estilo “yo soy esta clase de persona”. A mucha gente no le importa no instalar herramientas personalizadas en remoto. La idea es que al menos las instales en tu computadora local y aproveches sus ventajas
Creo que esta tabla mejoraría mucho si tuviera una columna extra de “qué problema resuelve esta herramienta”. Y no considero que “implementado en Rust” sea un diferenciador
Una vez en una reunión de trabajo escuché que “está hecho en Go” era el diferenciador y me quedé en shock. #facepalm
Muchos elementos de la tabla sí mencionan problemas reales, como “syntax highlight”, “ncurses interface” o “more intuitive”. Pero expresiones como “hecho en Rust”, “moderno” o “mejor” no ayudan mucho
El objetivo principal de la mayoría de estas herramientas es mejorar la UX
Usar una licencia que no sea GPL tampoco es un diferenciador
Está bueno que bastantes de estas herramientas también se puedan usar en Windows
Estas listas de herramientas siempre son divertidas. La mayoría de la gente probablemente podría sacarle buen provecho a una o dos de las que aparecen aquí. Personalmente,
ripgrepyjqme resultan indispensables.ripgrepes el mejor reemplazo tipo drop-in degrep, yjqresuelve un problema que yo realmente necesitaba resolver. Tal vez pruebe tambiénlsdydust. Aunque una herramienta nueva no me haga falta directamente, agradezco que haya gente dedicándole tiempo a esto. Es genial que vayan mejorando poco a poco la caja de herramientas de toda la comunidadCreo que yo elegiría
fzfantes que cualquiera. Lo prefiero muchísimo más quergojqripgrepse comporta distinto degrep, así que en realidad no es un reemplazo drop-in. Es un programa excelente, pero no es totalmente compatibleLos admins de Linux como yo solemos tener cada quien una de estas listas bien apretadas. Yo armé mi stack alrededor de herramientas basadas en GPL, y este formato de ikrima.dev me gusta especialmente
Vivo en la terminal, pero estas herramientas no me resuelven ningún problema que tenga ahora mismo, o no están instaladas en mi sistema, y aun así por alguna razón tienen decenas de miles de estrellas en GitHub. De verdad no entiendo por qué son tan populares
Alguien que vive metido en su biblioteca musical también puede quedarse confundido si un artista que no le gusta o ni siquiera tiene en su colección vende millones de discos. Bromas aparte, te preguntaría si alguna vez probaste de verdad una de estas herramientas. A mí antes me pasaba con
vim: no entendía por qué la gente lo usaba, hasta que lo usé bien y entendí¿No usas
fzf? Tu vida en la terminal debe ser realmente dura. Más que ejecutarlo directamente, es muy útil por sus plugins de shell: conCtrl+Rhaces búsqueda difusa enbash_history, y conCtrl+Tbuscas archivos del directorio actualEl conjunto base de herramientas Unix es tan sólido que puedes trabajar perfectamente solo con lo que viene por defecto. Muchas herramientas alternativas sí son mejores, pero no son indispensables, y además la mayoría no viene instalada por defecto
Pregunta genuina: ¿hay alguna manera elegante, usando solo las herramientas Unix integradas, de hacer un grep recursivo ignorando archivos ocultos (
.git, etc.) y filtrando por una extensión específica? Por ejemplo, el comandorg -g '*.foo' bares un patrón que uso muchísimo. Lo mismo con buscar archivos que coincidan con una expresión regular o un glob usandofd. No encontré una forma limpia de hacerlo solo con las herramientas baseMe da curiosidad saber qué tipo de trabajo haces todo el día en la terminal como para no sentir necesidad de mejorar tu toolkit. Dan ganas de preguntar si escribes todas tus herramientas tú mismo
En modo oscuro casi no se ve el texto de los enlaces, así que cuesta leer
Creo que solo
jqresuelve un problema real que no se puede resolver con las herramientas existentes. El resto son sobre todo diferencias de sintaxis, rendimiento, resaltado o implementación en RustMe gustaría que un equipo sacara una “suite” de herramientas con diseño consistente en parámetros, colores, tablas y demás
Durante mucho tiempo usé
htopen vez detopporque me parecía más accesible, pero el hecho de quehtopno muestre los hilos del kernel por defecto terminó siendo un obstáculo al investigar la causa de una falla. Desde entonces volví atop, porque muestra toda la información y me parece más confiable. Las UI dehtopobtopme parecen casi puro showEste artículo es de 2023. La mayoría de estas “herramientas modernas” ya podrían haberse actualizado y quizá ya salieron otras nuevas y más de moda
Como hay tantas herramientas, con que sobreviva la mitad ya vale la pena
Mi experiencia ha sido más bien la contraria. La mayoría de estas herramientas no son más que otra “reinventada” de las potentísimas herramientas base de GNU, siempre y cuando inviertas el tiempo necesario para aprenderlas bien