Este repositorio es una recopilación de herramientas interesantes. Principalmente se trata de herramientas por linea de comando para linux.
Herramienta genérica para el tratamiento de ficheros de texto que contienen datos delimitados.
Herramientas para el tratamiento de ficheros en formato CSV y similares. Permiten realizar consultas, extracciones de datos, reformateados y estadísticas sobre este tipo de fichero.
Herramienta para trabajar con ficheros en formato JSON. Nos permite extraer y reformatear información de un JSON en otro JSON.
Permite realizar consultas SQL sobre ficheros de texto en formato CSV y similares. También puede combinarse con la salida de otros comandos para realizar tratamientos complejos de la información obtenida.
Miller es como awk, sed, cut, join y sort para CSV, TSV y JSON tabular.
Herramienta para la creación de pipeline de tratamiento de datos con bash. Drake es 'Make for data'.
Herramienta para crear gráficos con gnuplot. Permite definir el gráfico mediante parámetros de la línea de comando en lugar de tener que crear un script. También permite leer los datos desde la entrada estándar en lugar de requerir un fichero y puede hacer streaminig de los datos.
Una herramienta para el renombrado de ficheros y directorios en modo batch y de forma segura.
Chequea enlaces presentes en ficheros de texto. Por ejemplo yo lo utilizo para chequear que las URLs en este README son existen.
Convierte ficheros JSON a un formato de líneas que permite tratarlos con herramientas linux convencionales. Una vez tratados es posible volver a convertirlos en fichero JSON.
Herramienta cli que permite filtrar un documento JSON de forma interactiva.
Herramienta cli de transformación entre json, edn y transit. Está desarrollada por el mismo programador que ba·bash·ka.
Herramienta TUI para probar visualmente expresiones 'jq' sobre un fichero json. Útil si no tienes muy clara la sintaxis de estas expresiones-
Interfaz modo texto para realizar tareas de inspección y mantenimiento de repositorios git locales.
Otra muy buena interfaz en modo texto para git similar a tig.
Añade algunos comandos extra a git de modo que sea más sencillo realizar tareas como la sincronización upstream y el cambio entre ramas de forma 'limpia'.
Este es un gestor de authors para git. Con el se simplifica el uso de múltiples usuarios en una misma máquina a la hora de hacer commits en los repositorios. Se trata de una gema de ruby así que es necesario tener este interprete instalado.
$> gem install gas
Se trata de un paginador avanzado para 'git diff'. Permite no solo ver claramente los cambios si no además añade coloreado sintáctico.
Colección de scripts para facilitar ciertas tareas complejas. Contiene algunas joyas como 'move-commits' o 'change-author'.
Estas herramientas están relacionadas con la contabilidad de doble entrada. Todas ellas se basan en realizar la entrada de información usando ficheros de texto plano.
Clon de ledger hecho en haskell.
- VÍDEO: (Hands-on with hledger)[https://www.youtube.com/watch?v=H_CdGzLbc7A]
- URL: http://hledger.org/
Clon de ledger hecho en python.
Interfaz gráfica para beancount.
Es una alternativa a la interfaz de linea de comandos de MariaDB y MySQL (por favor usa siempre la primera). Tiene soporte para el autocompletado de comandos SQL con referencia a los objetos presentes en la base de datos actual.
- URL: http://mycli.net/
Es una alterna a la interfaz de linea de comandos de Postgres con el mismo tipo de soporte para el autocompletado de comandos que MyCLI.
Otro cliente TUI del mismo estilo que los anteriores pero para sqlite3.
- URL: https://litecli.com/
Herramienta de versionado y migración de bases de datos.
Shell con autocompletado 'al vuelo'. Según escribes un comando te ofrece sugerencias según tu historial de comandos.
Es un comando que permite encolar y monitorizar la ejecución de múltiples procesos. Es útil cuando queremos hacer en una misma consola múltiples procesos cuyo tiempo de ejecución es largo.
Es un comando para implementar búsquedas difusas en tus scripts. En particular viene preparado para integrarse en el shell mediante el atajo de teclado ctrl-T y permitir búsquedas en la carpeta local.
- URL: https://github.com/junegunn/fzf
- URL: https://mike.place/2017/fzf-fd/
- TIP: https://github.com/junegunn/fzf/wiki/Examples-(completion)
Es una mejora sobre el comando find. Ideal para combinarlo con fzf en la creación de buscadores de ficheros.
Es otro buscador de archivos pensado para tener el mejor rendimiento posible. Es similar a grep y ack pero más rápido en ejecución. Está escrito en C y se puede instalar desde aptitude con:
sudo aptitude install silversearcher-ag
Sustituto de grep escrito en perl y mucho más rápido.
Un comando que permite generar y compartir un GIF animado de la ejecución de una sesión interactiva del shell.
Es un filesystem FUSE que permite montar directorios remotos por SSH a nuestra máquina local. Ideal para editar con herramientas gráficas ficheros que se encuentran en máquinas servidoras.
sudo aptitude install sshfs
Un ejemplo de uso:
mkdir ~/remotes/servidor1
sshfs -o IdentityFile=~/.ssh/id_rsa user@servidor1:/a/given/path ~/remotes/servidor1
Es un programa que permite hacer rsync a múltiples servicios de almacenamiento en nube e incluso montarlos en local con FUSE. Algunos de los servicios soportados son googlee drive, dropbox, mega.nz...
- URL: https://rclone.org/
Es un programa para simplificar la creación de túneles ssh.
Con entr es posible planificar la ejecución de comandos arbitrarios cuando uno o varios ficheros cambian.
sudo aptitude install entr
Similar al anterior pero escrito en rust. También sirve para planificar la ejecución de tareas cuando se producen cambios en un directorio. No obstante este está más enfocado a la ejecución de tareas durante el desarrollo de aplicaciones.
cargo install watchexec-cli
El gestor de passwords de Unix basado en gpg. Puede ser instalado desde el gestor de paquetes de la distribución pero para obtener la última versión estable es preferible hacerlo manualmente desde el repositorio.
Una vez descargado el mismo puede ejecutarse:
$> sudo PREFIX=/usr/local make install
Lanzador de procesos java alternativo. Precalienta una JVM para cada proceso que se lanza de modo que las siguientes ejecuciones arrancan mucho más rápido. Ideal para herramientas por línea de comando. Se utiliza por ejemplo con Drake.
El comando 'run-one' es un wrapper que permite garantizar que solo se ejecuta simultáneamente una instancia de un determinado proceso y argumentos.
Tiene algunas alternativas útiles como 'run-this-one', 'run-one-constantly', 'keep-one-running', 'run-one-until-success' y 'run-one-until-failure'.
Un pager (estilo less) muy potente e implementado en python.
Permite utilizar cualquier comando cli como si fuera una linea de comandos con
autocompletado. Por ejemplo ptrepl git
simplifica el uso de git.
Agregador RSS para la línea de comando. Permite acceder a feeds en paginas de noticias, canales de youtube, subreddits, etc...
Versión avanza de ls que utiliza icons y degradados de color para representar los tipos y antigüedad de los ficheros.
Colección de fuentes parcheadas para terminales linux que incluyen los iconos necesarios para el prompt powerline y otras utilidades como colorls.
Sustituto de htop que crea un dashboard sobre el estado del sistema. Permite, mediante un plugin, monitorizar también los contenedores docker en ejecución.
Otra herramienta al estilo de htop con un dashboard y una interfaz más modernos.
Versión mejorada del comando df que representa la información de forma más visual.
Sustituto del comando rm que integra el borrado de ficheros en el shell con la papelera del desktop. Permite también listar, recuperar y borrar los contenidos de la papelera desde la línea de comandos.
NOTA: Lo instalé usando 'pip3 install --user trash-cli'
Es un servidor http que procesa peticiones simplemente devolviendo lo mismo que ha recibido tanto nivel de cabeceras como de contenido. Es útil para verificar que está enviando una determinada aplicación.
NOTA: Lo instalé haciendo npm install -g http-echo-server
en el node por
defecto de mi instalación de asdf.
Este comando permite compartir una aplicación de terminal como una aplicación web.
Este comando permite crear GIFs animados a partir de un fichero de comandos. Esto es útil para hacer pequeñas demos de ejecución de comandos/CLIs/TUIs.
Es un programa que levanta un servidor http pero con la característica particular de que tiene una TUI en la que podemos modificar la respuesta que el mismo devolverá a cualquier petición. Se puede cambiar el cuerpo, las cabeceras, el tiempo de retraso y el código de la respuesta. También permite analizar las requests recibidas. Es muy útil como herramienta para testear o depurar clientes de servicios web.
Una herramienta para manejar el contenido de tu fichero hosts de una forma civilizada. Permite crear 'profiles' que agrupan varias entradas que pueden ser administradas conjuntamente. También permite añadir de forma automática las IPs de contenedores docker en el fichero hosts dentro de uno de estos 'profiles'.
Una herramienta casi mágica que permite ejecutar terminales con una distribución de linux diferente a la que tenemos en la máquina real. Para ello hace uso de docker pero configura automáticamente el acceso a los discos y el entorno gráfico. El nuevo entorno está montado por encima de tu entorno real por lo que tienes acceso al software (si es compatible a nivel de libc). Si no se quiere alterar la home del usuario nativo, al crear el entorno se puede especificar que haga uso de otro directorio.
Es útil para ejecutar programas no disponibles en tu distribución nativa o para aprender el uso del sistema de paquetería de una distro diferente.
- URL: https://distrobox.it
Versión extendida del comando cp
escrita en rust. Tiene barra de progreso para
la copia de ficheros y directorios. Utiliza optimizaciones presentes en las
versiones más recientes de linux para mejorar el rendimiento de la copia entre
filesystems y unidades de red.
Checkpoint/Restore In Userspace, puede congelar un contenedor en ejecución (o una aplicación individual) y guardar su estado en el disco como una colección de archivos. Los datos guardados se pueden utilizar para restaurar la aplicación y ejecutarla exactamente de la misma manera que estaba durante el tiempo de congelación. Con esta funcionalidad, ahora es posible realizar la migración en vivo de aplicaciones o contenedores, crear instantáneas, depuración remota y muchas otras cosas.
Esta herramienta TUI permite ver logs de forma fácil. Tiene buscador, coloreado syntáctico y permite modo tail. Tiene modo de mergeo de ficheros por fecha y navegación temporal, avanzando o retrocediendo por minutos, horas o días.
Un lector TUI de ficheros markdown, similar a glow, pero con un renderizado más parecido al de una aplicación de escritorio. Permite navegar por los documentos en el filesystem y crear marcadores a los mismos.
Envio es una herramienta que facilita la gestión de variables de entorno. Permite crear perfiles encriptados que contienen conjuntos de variables asociadas a un proyecto o caso de uso específico. Es posible cambiar fácilmente entre perfiles e importarlos a la sesión del terminal actual para usarlos de inmediato.
Es una herramienta para generar screenshots de tu código al estilo de Carbon pero desde la línea de comando y sin depender del navegador.
La API de Rich facilita la adición de color y estilo a la salida del terminal. Rich también puede renderizar tablas atractivas, barras de progreso, Markdown, código fuente con resaltado de sintaxis, bolcados de stack y más, todo listo para usar.
Textual agrega interactividad a Rich con una API inspirada en el desarrollo web moderno. En software de terminal moderno (instalado por defecto en la mayoría de los sistemas), las aplicaciones Textual pueden usar 16.7 millones de colores con soporte para el mouse y animación suave sin parpadeos. Un potente motor de diseño y componentes reutilizables permiten crear aplicaciones que rivalizan con la experiencia de escritorio y web.
Herramienta que permite crear un empaquetado autoejecutable a partir de un entorno virtual o un conjunto de paquetes instalados en local.
Librería python que permite crear REPL complejos con histórico, autocompletado, autosugerencias basadas en el histórico, coloreado sintáctico, etc...
- VÍDEO: Awesome Command Line Tools PyCon 2017
- URL: https://github.com/jonathanslenders/python-prompt-toolkit
- DOC: https://python-prompt-toolkit.readthedocs.io/en/stable
Librería para el tratamiento de ficheros tabulares en múltiples formatos (csv, xml, xlsx, excel, etc...) El objetivo es ser una alternativa a pandas cuando no son necesarias las características de esta librería. Meza es más ligera a la hora de instalarla y de usarla.
Parser generator en python puro y pensado para usar con RPython.
Es un framework para dar soporte a la implementación de lenguajes dinámicos usando Python como base. Hace especial énfasis en la separación entre la definición del lenguaje y su implementación.
Librería de logging para python muy completa.
- URL: https://logzero.readthedocs.io/en/latest/
- URL: https://opensource.com/article/20/2/logzero-python
Otra librería de logging para python con un enfoque pragmático que la hace muy fácil de usar.
Lector de epub para la línea de comandos.
Automatización y estandarización del proceso de construcción y testeo de paquetes y aplicaciones python.
Un mejor sistema de gestión de dependencias y empaquetado para proyectos python.
Una librería que implementa reemplazos funcionales (inmutables) de las estructuras de datos básicas de python. Estas utilizan técnicas de 'structural sharing' para tener un performace aceptable.
Librería de validación con JSONSchema.
Una reconfiguración de emacs25 ideada para simplificar a los usuarios de vim el uso de este editor. Se basa en EvilMode aunque también puede usarse en modo nativo.
- URL: http://spacemacs.org/
- VÍDEO: Spacemacs - From First Install to Clojure programming
- VÍDEO: How to Configure Spacemacs
Un IDE integrado en tu proyecto leiningen o boot.
Un mejor vim. Más rápido y compatible con el vim tradicional.
- URL: https://neovim.io/
Spacevim es un conjunto de plugins y un sistema de configuración basado en layers para vim. Es similar al Spacemacs.
Pandoc es el transpilador de documentos universal. Es capaz de transformar documentos de un tipo en otro. Es especialmente útil para la conversión de markdown a pdf o docx.
- URL: http://pandoc.org/
El mejor template para la creación de libros y handouts a usando de markdown y pandoc.
Esta utilidad del sistema operativo (instalable mediante aptitude) permite convertir un documento pdf a una cara en un documento pdf en formato 2up listo para su impresión.
Convierte documentos en formato markdown en slides HTML.
Conversor simple de documentos markdown a slides HTML.
Creación de blogs como sitios estáticos a partir de ficheros markdown. Este es el sistema que se utiliza para las 'github pages'. Está implementado en ruby así que necesitaremos un interprete del mismo y su gestor de paquetes (gem). Es recomendable utilizar una herramienta de gestión de entornos ruby como rbenv.
Un proyecto similar a jekyll pero para la creación de páginas de documentación. Esta herramienta está implementada en python. Será necesario tener un interprete de este lenguaje y su gestor de paquetes (pip). Es recomendable utilizar un entorno virtual con virtualenvs o venv.
Es una aplicación node que permite exportar una URL como PDF. Útil para pasar presentaciones web a PDF.
Interfaz gráfica para la administración de contenedores docker en local y remoto.
Lector de PDF/EPUB orientado al teclado y a la documentación técnica. Es una gran herramienta para usar desde la línea de comandos.
- URL: https://sioyek.info/
Un frontend para apt (Debian/Ubuntu) muy mejorado con capacidad de descarga en paralelo de paquetes y una funcionalidad de histórico de instalaciones/actualizaciones que te permite conocer todo lo que has instalado y cuando. Además desde ese histórico es posible hacer undo/redo de cualquier acción.
Gestor de paquetes y entornos de software para linux. Permite instalar versiones más recientes de algunas herramientas como por ejemplo GIT.
Otro gestor de paquetes de software para linux. Se parece mucho a chocolatey.
Repositorio de aplicaciones autocontenidas para linux. También existe una herramienta para crear este tipo de aplicaciones.
Aplicación muy sencilla para crear plantillas de fichero o proyecto y luego crear esos tipos de elemento a partir de las mismas.
Completo navegador de ficheros por línea de comando.
CLI time tracker escrito en ruby.
Compendio de mis awesome lists favoritas.
Recopilación de las mejores awesome-lists de github.
Listado de cosas alucinantes para tu terminal.
Listado de las mejores aplicaciones escritas en python.
Listado de herramientas, librerías y aplicaciones en python.
Métodos alternativos de realizar presentaciones.
Presentaciones en el terminal usando markdown como lenguage de composición.
Applicación para mostrar en pantalla las teclas pulsadas. Útil para charlas y screencasts.
Aplicación para lanzar programas sin dejar el teclado.
Aplicación para tomar pantallazos con las herramientas de edición y publicación incorporadas.
Una implementación de Common-Lisp para la JVM.
- URL: https://abcl.org/
Que decir... es Clojure...
- URL: <https://clojure.org/ >
- URL: https://clojure.camp/
Una implementación de Common-Lisp que compila a código nativo casi tan eficiente como C/C++.
Otra implementación de Common-Lisp nativa the GNU.
Un sistema de definición y publicación de systemas que pueden ser usados como librerías.
OJO: No confundir con 'asdf' el instalador multiversión/multiprograma.
Un sistema de paquetería unificado compatible con múltiples implementaciones de Common-Lisp.
Un sistema de gestión de versiones e implementaciones de Common-Lisp. integra además un mecanismo unificado de 'compilación' de systemas, ASDF y QuickLisp.
Es un dialecto de Clojure como Babashka pero implementado en Go. Es muy rápido y su uso fundamental es crear scripts usando la sintaxis de Clojure.
Es un repositorio preparado para publicar un CV usando github pages. Solo require clonar el repositorio y modificar los datos.