Coffee bytes

Blog de desarrollo web con Python y Javascript

Eduardo Zepeda

Conoce bat en linux, el cat con resaltado de sintaxis

El martes, 25 de agosto de 2020

por Eduardo Zepeda

Tiempo de lectura: 3 minutos

El otro día estaba buscando herramientas de resaltado de sintaxis y me topé con una herramienta bastante interesante llamada bat (Sí, como murciélago en inglés), es básicamente el comando cat de linux, pero con colores y otras funciones bastante interesantes. Y, como cereza del pastel, está programado en Rust. En esta entrada te explico de forma corta como funciona y que es lo que puede hacer por ti.

Instalar bat desde los repositorios en linux

Puedes instalarlo directo desde los repositorios en las versiones más nuevas de Debian o sistemas derivados (Ubuntu).

sudo apt install bat

Como mi versión de Debian no es la más reciente tuve que instalarlo desde su version de paquete de software con terminacion .deb. Recuerda que si tienes problemas con los comandos de GNU/Linux entra a leer mis entradas donde hablo sobre los comandos básicos.

wget https://github.com/sharkdp/bat/releases/download/v0.15.4/bat-musl_0.15.4_amd64.deb
dpkg -i bat-musl_0.15.4_amd64.deb

¿Para qué sirve bat?

Bat nos va a mostrar el contenido de un archivo, justo como cat, pero con la sintaxis resaltada para la mayoría de los lenguajes de programación:

Cat, la herramienta predeterminada nos muestra el archivo que le indiquemos pero en un solo color.

cat index.js
import React from "react"
import ReactDOM from "react-dom"
import App from "./App"

ReactDOM.render(, document.getElementById('root'))

Si ahora usamos bat veremos la sintaxis del lenguaje resaltada y los números de linea en la salida estándar:

bat index.js
//File: index.js
import React from "react"
import ReactDOM from "react-dom"
import App from "./App"

ReactDOM.render(<App/>, document.getElementById('root'))

Puede resaltar los tabuladores, los espacios y los saltos de linea usando la opción -A

bat -A index.css
/*index.css*/
body{••margin: 0;••background-color: whitesmoke;••font-family: Lolita;••font-color: #bbb;}␊
␊
.checkBoxes{••font-size: 20px;••padding: 10px;}

Bat tiene muchos temas disponibles

Bat tiene temas para todos los gustos, hippies, sobrios, formales, psicodélicos, etc. Usa –list-themes para verlos.

bat --list-themes
...
Theme: Monokai Extended

  // Output the square of a number.
  fn print_square(num: f64) {
      let result = f64::powf(num, 2.0);
      println!("The square of {:.2} is {:.2}.", num, result);
  }
...

Si te gusta un tema en particular puedes usarlo de manera temporal para visualizar un archivo usando la opción –theme

bat --theme='Monokai Extended' index.css

Para cargarlo permanentemente debes agregarlo a tu archivo .bash_rc

# ~/.bashrc
...
export BAT_THEME="Monokai Extended"
...

Bat viene con un paginador automático

Esto significa que si el archivo es muy grande, no lo mostrará completo, sino que mostrará una parte y podremos ir avanzando por el contenido con las flechas en nuestro teclado. El paginador que usa por defecto es less.

#
# This file is autogenerated by pip-compile
# To update, run:
#
#    pip-compile --output-file requirements.txt requirements.in
#
amqp==2.2.2
asn1crypto==0.24.0
attrs==17.4.0
Babel==2.5.3
BabelDjango==0.2.2
:

Bat tiene integración con git

Bat se integra con git y te muestra los horribles bugs cambios que has implementado en tu código. Agrega un símbolo + para lineas añadidas y un ~ para lineas modificadas.

{% block content %}
  <header class="navbar" role="navigation">
    ~ <p>Parrafo modificado</p>
    + <p>Parrafo nuevo</p>
  </header>
{% endblock %}

¿Qué opinas? ¿Lo usarías? A mi me parece una herramienta bastante útil, sobre todo para entornos donde no se tiene una interfaz gráfica o si eres como yo y no te gusta esperar a que cargue el IDE.

Presume lo que aprendiste en redes

Únete a mi comunidad de lectores

Recibe contenido como este por correo electrónico, una vez por semana, de manera totalmente gratuita.

* Campo obligatorio