Colección de herramientas modernas para Linux: nuevas CLI que reemplazan comandos tradicionales
(ikrima.dev)- 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 comandocat, con resaltado de sintaxis e integración reforzada congitexa: visor moderno de listas de archivos que reemplazals/tree, aunque actualmente ya no recibe mantenimientoeza: fork deexaque ofrece una versión moderna dels/treelsd: ls de nueva generación, con compatibilidad tradicional y una salida más pulidabroot: explorador de archivos en forma de árbol con navegación mejoradannn: administrador de archivos para terminal ligero y rápido
Análisis de uso de espacio en archivos y directorios
ncdu: ofrece una interfaz intuitiva dedubasada en textodust: alternativa más fácil aduimplementada en Rustduf: herramienta de análisis de uso de disco con mejor usabilidad quedf
Búsqueda de archivos y código
fd: reemplazo compacto y rápido defind, con gran usabilidadripgrep: alternativa agrepultrarrápida con soporte paragitignoreag: herramienta de búsqueda de código similar aack, pero más rápidafzf: buscador difuso de propósito general. Puede usarse en pipelines y en muchos otros contextosbfs: reemplazo defindbasado en breadth-first
Visores de Git/diff dentro de la terminal
delta: visualiza con mayor legibilidad los resultados degitydiff
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 acuty parte deawkjq: parser de datos que se usa como unsedespecializado en JSONsd: herramienta de reemplazo desed, con un enfoque de find/replace más familiar
Monitoreo de sistema/procesos
bottom: monitor gráfico y multiplataforma de sistema y procesosglances: versión mejorada detop/htopgtop: monitor del sistema tipo dashboard para terminalprocs: comando alternativo apsescrito en Rust
Benchmarking y red
hyperfine: herramienta de automatización de benchmarking para CLIgping: herramientapingcon salida gráfica
Clientes HTTP
httpie: cliente HTTP moderno y amigable para CLI. Ideal para probar APIs de desarrollocurlie: herramienta que combina la potencia decurlcon la usabilidad dehttpiexh: herramienta alternativa ahttpiecentrada en el rendimiento
Navegación entre directorios y editores
zoxide: comandocdinteligente inspirado enzmicro: 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 limpiastldr: resumen de páginas man conciso y centrado en ejemplostealdeer: implementación de tldr en Rust, con ejecución rápidaexplainshell: analiza automáticamente los argumentos de comandos y explica visualmente su significadocheat.sh: servicio de ayuda en línea que integra tldr y cheatsheets
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