DEV Community

Cover image for Conoce bat en linux, el cat con resaltado de sintaxis
Eduardo Zepeda
Eduardo Zepeda

Posted on • Originally published at coffeebytes.dev

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 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

¿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'))
Enter fullscreen mode Exit fullscreen mode

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'))
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

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);
  }
...
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Para cargarlo permanentemente debes agregarlo a tu archivo .bash_rc

# ~/.bashrc
...
export BAT_THEME="Monokai Extended"
...
Enter fullscreen mode Exit fullscreen mode

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
:
Enter fullscreen mode Exit fullscreen mode

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 %}
Enter fullscreen mode Exit fullscreen mode

¿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.

Sígueme en twitter publico un tweet cada que tengo una nueva entrada. Además Twitteo frecuentemente información interesante sobre tecnología que puede servirte.

Top comments (0)