No te pierdas este crédito gratuito de 200 USD (Válido durante 60 días) en DO, lanza tu proyecto ahora

Utiliza este crédito gratuito para lanzar tus proyectos ahora en Digital Ocean, eres libre de gastarlo cuando quieras en los siguientes 60 días.

Índice del contenido

Conoce bat en linux, el cat con resaltado de sintaxis

Conoce bat en linux, el cat con resaltado de sintaxis

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 te hago un resumen de los comandos más básicos de GNU Linux

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(<App/>, 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.

Eduardo Zepeda
Desarrollador web, entusiasta de los sistemas GNU/Linux y el Software Libre. Py, Ts y Go, pero abierto a otras opciones como el Rustaceanismo. Creo en las bondades de las criptodivisas más allá de la especulación monetaria.
Leer más