Esta pagina se ve mejor con JavaScript habilitado

exa: Un ls mejorado con colores

 ·  🎃 kr0m

La utilidad exa nos permitirá listar de una forma más visual y colorida los archivos del sistema, esta actuará como reemplazo del conocido comando ls.

Para que exa muestre los iconos de los ficheros debemos instalar fuentes compatibles, algunas de ellas son las nerd-fonts y las powerline-fonts:

pkg install nerd-fonts powerline-fonts exa

Elegimos alguna fuente de la lista:
https://github.com/ryanoasis/nerd-fonts
https://github.com/powerline/fonts

Dejo un script para probar de forma sencilla todas las fuentes modificando el fichero Xresources, tan solo debemos tener en cuenta que las 3 últimas líneas del fichero Xresources deben ser una línea en blanco y dos con la configuración de la tipografía. Para pasar a la siguiente configuración presionaremos Ctrl+d.

vi testFonts.sh

#!/usr/local/bin/bash

clear
IFS=$'\n'
total=$(fc-list | grep -e nerd-fonts -e powerline-fonts|wc -l|awk '{print$1}')
counter=1
for font_style in $(fc-list | grep -e nerd-fonts -e powerline-fonts | awk -F ":" '{print$2":"$3}'); do
	echo =========== Testing font: $counter/$total ===========
	let counter=$counter+1
	echo FONT_STYLE: $font_style
	fonts=$(echo $font_style|awk -F ":" '{print$1}')
	#echo FONTS: $fonts
	styles=$(echo $font_style|awk -F ":style=" '{print$2}')
	#echo STYLES: $styles
	for font in $(echo $fonts | tr "," "\n"); do
		#echo FONT: $font
		style_counter=0
		for style in $(echo $styles | tr "," "\n"); do
			#echo STYLE: $style
			N=$(wc -l .Xresources|awk '{print$1}')
			let N=$N-3

			if [ $style_counter -eq 0 ]; then
				# WITHOUT STYLE:
				let style_counter=$style_counter+1
				head -n $N ~/.Xresources > /tmp/.Xresources
				echo ----------------------------
				echo $font
				echo "" >> /tmp/.Xresources
				echo "URxvt.font: xft:$font:pixelsize=14:antialias=true" >> /tmp/.Xresources
				echo "URxvt.boldFont: xft:$font:pixelsize=14:antialias=true:style=bold" >> /tmp/.Xresources
				mv /tmp/.Xresources ~/.Xresources
				xrdb .Xresources
				urxvt -e bash -i -c "ls -la;bash"
			fi

			# WITH EACH STYLE:
			head -n $N ~/.Xresources > /tmp/.Xresources
			echo ----------------------------
			echo $font - $style
			echo "" >> /tmp/.Xresources
			echo "URxvt.font: xft:$font:pixelsize=14:antialias=true:style=$style" >> /tmp/.Xresources
			echo "URxvt.boldFont: xft:$font:pixelsize=14:antialias=true:style=bold" >> /tmp/.Xresources
			mv /tmp/.Xresources ~/.Xresources
			xrdb .Xresources
			urxvt -e bash -i -c "ls -la;bash"
		done
	done
done

Mis fuentes preferidas son:

FiraCode Nerd Font Mono
FuraCode Nerd Font Mono
VictorMono Nerd Font Mono
CaskaydiaCove Nerd Font Mono
mononoki Nerd Font Mono
Inconsolata Nerd Font Mono
LiterationMono Nerd Font Mono
FantasqueSansMono Nerd Font Mono
BitstreamVeraSansMono Nerd Font Mono
Cousine Nerd Font Mono
JetBrainsMono Nerd Font Mono
NotoMono Nerd Font Mono
BlexMono Nerd Font Mono
MesloLGS Nerd Font Mono
Hasklug Nerd Font Mono
DroidSansMono Nerd Font Mono
InconsolataLGC Nerd Font Mono
DejaVuSansMono Nerd Font Mono
Hack Nerd Font Mono
CodeNewRoman Nerd Font Mono
agave Nerd Font Mono
GoMono Nerd Font Mono
InconsolataGo Nerd Font Mono
SauceCodePro Nerd Font Mono
MesloLGSDZ Nerd Font Mono
JetBrainsMonoMedium Nerd Font Mono
AurulentSansMono Nerd Font Mono
Anonymice Nerd Font Mono

Por otro lado si queremos fuentes un poco mas raras podemos probar con las siguientes:

VictorMono Nerd Font Mono - Italic
Monofurbold Nerd Font Mono
Iosevka - Oblique

Mediante este sencillo script podemos probar tan solo un grupo reducido:

vi checkFonts.sh

#!/usr/local/bin/bash

clear
IFS=$'\n'

for font in $(<fonts.txt); do
    N=$(wc -l .Xresources|awk '{print$1}')
    let N=$N-3

    head -n $N ~/.Xresources > /tmp/.Xresources
    echo ----------------------------
    echo FONT: $font
    echo "" >> /tmp/.Xresources
    echo "URxvt.font: xft:$font:pixelsize=14:antialias=true" >> /tmp/.Xresources
    echo "URxvt.boldFont: xft:$font:pixelsize=14:antialias=true:style=bold" >> /tmp/.Xresources
    mv /tmp/.Xresources ~/.Xresources
    xrdb .Xresources
    urxvt -e bash -i -c "ls -la;bash"
done

Modificamos nuestro fichero de configuración Xresources para que utilice las fuentes correctas:

vi .Xresources

URxvt.font: xft: FiraCode Nerd Font Mono:pixelsize=14:antialias=true:style=Regular
URxvt.boldFont: xft: FiraCode Nerd Font Mono:pixelsize=14:antialias=true:style=bold
xrdb .Xresources

Definimos que colores queremos utilizar siguiendo la documentación de exa:
https://the.exa.website/docs/colour-themes

Además definimos un alias para sustituir ls por exa:

vi .bashrc
export EXA_COLORS="\
da=38;5;245:\
di=38;5;14:\
sn=38;5;28:\
sb=38;5;28:\
uu=38;5;40:\
un=38;5;160:\
gu=38;5;40:\
gn=38:5:160:\
bl=38;5;220:\
ur=37:\
uw=37:\
ux=37:\
ue=37:\
gr=37:\
gw=37:\
gx=37:\
tr=37:\
tw=37:\
tx=37:\
su=37:\
sf=37:\
xa=37"

alias ls='exa --icons'

Ahora en otro terminal ejecutamos un ls y veremos el siguiente resultado:

Si te ha gustado el artículo puedes invitarme a un RedBull aquí