leanmind logo leanmind text logo

Blog

Código Sostenible

Cómo escribir código fácil de mantener mediante valores, principios y técnicas.

Herramientas de terminal

Por Manuel Perez

Doge

En las últimas semanas me he dedicado a completar los cursos sobre terminal de CodelyTV y me gustaría compartir con vosotros algunas de las herramientas y recursos que me han parecido interesantes.

ZSH


En primer lugar el archiconocido Zsh.

Es un intérprete de comandos basado en el estándar sh así como Bash. La diferencia radica en la posibilidad de instalar frameworks, que nos dan la posibilidad de añadir plugins y temas personalizados, que aumentan la capacidad del intérprete.

TLDR


TLDR es una alternativa al clásico MAN, que nos aporta información acerca de una utilidad de consola.

La característica principal de TLDR, es que muestra la información de forma mucho más amigable, e incluye ejemplos muy sencillos y claros de como utilizar el comando.

comando tldr

AWK


AWK es un lenguaje de programación utilizado principalmente para el procesamiento de archivos de texto. Aunque, como veremos más adelante tiene otras aplicaciones.

Por ejemplo, todos hemos abierto en nuestro editor favorito, un CSV de miles de líneas, con un formato que no nos funciona para la tarea que estamos abordando. Tiramos de multicursor o cualquier otra triquiñuela y, nuestro ordenador lucha por salir adelante entre congelación y congelación.

Cuando fracasas en el intento, intentas hacer un script para procesar el CSV y dejarlo en el formato correcto. Probablemente funcione, sin embargo el riesgo de que el script no esté lo suficientemente optimizado y el tiempo de desarrollo requerido, hace que esta sea una vía cuestionable.

Para estos casos tenemos AWK. Que es capaz de formatear de forma eficiente un archivo de varios cientos de miles de líneas.

Pasemos a un ejemplo práctico.

Aquí tenemos un CSV con 5.429.253 líneas. Os podéis imaginar, las fatigas que se pueden pasar para invertir el orden de las columnas usando un editor o un script.

Contenido de CSV

Bien, pues veamos cuanto tiempo tarda en hacerlo AWK.

Comando awk
Comando wc

Cuatro segundos y medio para dar formato a nuestro archivo de más de 5 millones de registros.

AWK es la clase de herramienta que no vamos a tener que utilizar mucho, pero agradeceremos tenerla cuando la necesitemos. No se trata de ser un maestro, ya que AWK tiene mucha profundidad, se trata de contar con un buen recurso y encontrar el script adecuado.

FZF


FZF se puede definir como un filtro interactivo de línea de comandos.

Si ejecutamos simplemente fzf en nuestra consola, empezará a mostrar todos los archivos del sistema. Si escribimos algo, por ejemplo node, nos filtrará los archivos y carpetas que tengan algo que ver.

Comando fzf

Y si pulsamos enter en alguno de estos archivos, observamos que nos devuelve la cadena que hemos seleccionado.

Seleccionar archivo sección fzf

Entonces, ¿qué puedo hacer yo con esto?

FZF por si solo no tiene mucha utilidad. Sin embargo, combinándolo con otras herramientas, su potencia crece exponencialmente como veremos a continuación.

FZF + AWK


Aquí tenemos algunos scripts de ejemplo.

Previsualizador de archivos con FZF y CAT


Usando BAT se logran unos resultados más agradables a la vista.

ls -p | grep -v / | fzf --preview 'cat {}'
Comandos fzf y cat

Función para movernos de carpeta de forma interactiva


_move() {
  dirtomove=$(ls -d */ | fzf | awk '{print $NF}')
  cd "$dirtomove"
}
Función movernos de carpeta

Matar proceso de forma interactiva


ps aux | fzf | awk '{print $2}' | xargs sudo kill -9
Matar proceso de forma interactiva

Entrar a contenedor de Docker de forma interactiva


#!/usr/bin/env zsh

if docker ps >/dev/null 2>&1; then
  container=$(docker ps | awk '{if (NR!=1) print $1 ": " $(NF)}' | fzf --height 40%)

  if [[ -n $container ]]; then
    container_id=$(echo $container | awk -F ': ' '{print $1}')

		docker exec -it $container_id /bin/bash || /bin/sh  
	else
	    echo "You haven't selected any container! ༼つ◕_◕༽つ"
	  fi
else
  echo "Docker daemon is not running! (ಠ_ಠ)"
fi
Entrar a contenedor docker de forma interactiva

¿Y ahora qué?


La verdad, es que esto no es ni la punta del iceberg de todo lo que pueden ofrecer estos recursos. Espero que al menos os haya picado la curiosidad y os animéis a explorarlas.

¡Un saludo!

Referencias

Publicado el 28/09/2022 por
Manuel image

Manuel Perez

¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.

Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?

Impulsamos el crecimiento profesional de tu equipo de developers