programación

Terminal like a boss.

Hoy queremos hacer un recorrido por esos programas, plugins y atajos de teclado que hacen que nuestra vida en la consola sea una delicia.

Imágen de portada

Mientras mirábamos el editor de texto en blanco, pensando una idea para el blog, un tweet nos avisa que oh-my-zsh cumple 9 años. Es entonces que la inspiración se posa sobre nuestras cabezas y decimos compartir esas cosas que hacen que nuestra vida en la terminal sea mucho mejor. Este post va dirigido a aquellos usuarios de GNU/Linux y OS X que comienzan con el uso de la consola. Esta es una visión muy general y no pretende ser una guía completa de instalación o personalización (rice). Dicho esto empecemos

Emulador de terminal.

El primer punto a considerar es el programa que vamos a utilizar para comunicarnos con el sistema operativo. Existen infinidad de opciones, de todos tipos y colores, desde menús desplegables a la quake (guake, yakuake), con aceleración de GPU (alacritty), etc. Nuestro favorito es URxvt por el bajo consumo de memoria, alto grado de personalización, demonización (modo "servicio"), soporte para unicode (sobre esto más adelante) y lo mejor de todo es que es rápido, muy rápido.

Para instalar URxvt en Ubuntu / Debian.

sudo apt install rxvt-unicode 

Fedora / RHEL.

dnf install rxvt-unicode-256color

En OSX las opciones se reducen a Terminal, la aplicación por defecto, o iTerm2, que es la utilizamos nosotros.

Fuentes.

Casi igual de importante que la elección del emulador de terminal es la selección de fuentes. Hace unas semanas publicamos un post con las 11 mejores fuentes para la consola(según nuestro criterio). Acá hay un punto importante a tener en cuenta, según la fuente y terminal que elijas puede que tenga o no soporte para los glifos del prompt o barra de status. ¿Y qué es un glifo?

En tipografía, cualquiera de las formas concretas que en una fuente se da a los símbolos individuales que la componen. En ese sentido, un glifo es una realización concreta de un carácter, de un número, de un símbolo decorativo o matemático, etc...

Para no tener problemas más adelante, sugerimos cualquiera de las fuentes para Powerline que ya tienen estos símbolos integrados.

zsh + oh-my-zsh.

¿Qué es el shell?. El shell o intérprete de comandos es donde uno ingresa las instrucciones y este se encarga de ejecutarlas. Nosotros nos vamos a centrar en Z shell, más conocido como zsh, es un potente intérprete de comandos que toma muchas de las características de otros shells como bash (por defecto en casi toda distro), tcsh o ksh y le agrega otras nuevas.

Para instalar URxvt en Ubuntu / Debian.

sudo apt install zsh

Fedora / RHEL.

dnf install zsh

Mac OSX (necesita de Homebrew.

brew install zsh

Una vez instalado, a simple vista no tiene mucha diferencia con los otros shells que mencionamos... Hace su aparición Oh My Zsh, un framework para administrar facilmente la configuración y plugins de zsh. Lo primero y más evidente son los themes, que son personalizaciones del prompt, donde los hay para todos los gustos.

Algunas bondades del combo Zsh x Oh My Zsh

asciicast

También por defecto se agregan algunos aliases para hacernos la vida más fácil al movernos entre directorios


Alias       Comando
------------------------------------
alias 	    Muestra todos los alias
.. 	    cd ..
... 	    cd ../..
.... 	    cd ../../..
..... 	    cd ../../../..
/ 	    cd /
~ 	    cd ~
cd +n 	    Cambia a directorio n
1 	    cd -
2 	    cd -2
3 	    cd -3
4 	    cd -4
5 	    cd -5
6 	    cd -6
7 	    cd -7
8 	    cd -8
9 	    cd -9
md 	    mkdir -p
rd 	    rmdir
d 	    dirs -v (muestra los últimos directorios usados)

Autojump.

Una vez que sabemos movernos por la terminal cómodamente, nos damos cuenta que desplazarnos por los directorios con cd puede ser poco eficiente. No me malentiendan, cd ~/Descargas/directorio/subdirectorio/otro_subdir/y-otro-mas es muchísimo más eficiente que ir clickeando carpeta por carpeta en GUI. Con el autocompletado con TAB podemos hacer la operación más rápida, pero hay un método aún más eficiente. Autojump recuerda los directorios que visitaste y con un comando podemos saltar (por eso auto_jump_) automáticamente a ese directorio. Por ejemplo, si ya visitamos el directorio anterior con cd la próxima vez escribimos desde cualquier ubicación:

j y-otro-mas

Y listo, autojump nos movió a ~/Descargas/directorio/subdirectorio/otro_subdir/y-otro-mas automagicamente. Realmente una herramienta imprescindible.

Tmux.

La primera pregunta que aparece en todo novato... ¿Qué pasa si tengo un proceso largo y quiero hacer otra cosa mientras tanto?. La primera respuesta sería: abrís otra terminal u otra pestaña si el emulador lo permito. Pero cuando estamos conectados a una máquina sin GUI esto no es posible. La respuesta a esta interrogante la tiene tmux. Tmux es un multiplexor de terminal (un emulador de terminal dentro de otro) que nos permite crear paneles y pestañas donde se pueden ejecutar aplicaciones independientes. En el siguiente screenshot tenemos ejecutando htop (monitor de sistema), el editor vim, reloj y otra terminal.

Tmux

Imagen

Lo maravilloso de tmux es que uno puede "despegar" (minimizar, enviar al fondo) la sesión, y volver a recuperarla más tarde. Esto es especialmente útil cuando nos conectamos por ssh a servidores remotos, si se corta la conexión tmux sigue ejecutándose y cuando nos reconectamos podemos continuar donde habíamos dejado.

Algunos atajos de teclado básicos de tmux


ctrl + b  c  crear ventana
ctrl + b  w  lista ventana
ctrl + b  n  ir a la ventana siguiente
ctrl + b  p  ir a la ventana anterior
ctrl + b  f  buscar ventana
ctrl + b  ,  darle nombre a ventana
ctrl + b  &  cerrar ventana
ctrl + b  %  partir el panel verticalmente
ctrl + b  "  partir el panel horizontalmente
ctrl + b  flechas direccionales moverse entre paneles

TL;DR

URxvt en conjunto con zsh, oh-my-zsh + plugins y tmux pueden hacer que tu relación con la terminal sea de una eterna luna de miel.
Este post es una visión muy por encima de las capacidades que se le pueden sacar a la consola. Esperamos que les despierte curiosidad, porque en próximas entradas vamos a ver más en detalle cada uno de los componentes, configuraciones, personalizaciones, temas y una larga lista de etcéteras.

Portada

unsplash-logoGoran Ivos



Comentarios