Por Manuel Perez
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.
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 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.
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.
Bien, pues veamos cuanto tiempo tarda en hacerlo AWK.
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 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.
Y si pulsamos enter en alguno de estos archivos, observamos que nos devuelve la cadena que hemos seleccionado.
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.
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 {}'
Función para movernos de carpeta de forma interactiva
_move() {
dirtomove=$(ls -d */ | fzf | awk '{print $NF}')
cd "$dirtomove"
}
Matar proceso de forma interactiva
ps aux | fzf | awk '{print $2}' | xargs sudo kill -9
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
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!
¿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?
Pero espera 🖐 que tenemos un conflicto interno. A nosotros las newsletter nos parecen 💩👎👹 Por eso hemos creado la LEAN LISTA, la primera lista zen, disfrutona y que suena a rock y reggaeton del sector de la programación. Todos hemos recibido newsletters por encima de nuestras posibilidades 😅 por eso este es el compromiso de la Lean Lista