Description
Découverte de l’outil bat qui est un clone “amélioré” de l’outil cat, qui
apporte la mise en évidence de la syntaxe, de la couleur, gère plusieurs languages
informatique et s’intégre à Git !
Il est même possible d’utiliser un thème sombre…
C’est un outil qui existe depuis plusieurs années (4 ans au moment de l’écriture de cet article), sous une licence Open Source, au choix de la MIT ou de l’Apache 2.0.
Note : Il vaut mieux utiliser un terminal capable de gérer correctement une palette 24 bit.
Le dépôt officiel explique beaucoup de choses, en anglais,
- Dépôt officiel : https://github.com/sharkdp/bat
Installation
Généralement, quelque soit l’OS Linux ou BSD, le paquet à installer s’appelle
bat.
- Sous Debian, le binaire s’appelle
batcat - Sous OpenBSD :
battout simplement
Configuration
Un fichier de configuration peut être généré ainsi :
:$ bat --generate-config-file
Relativement à l’usage des couleurs en 24 bit dans le terminal, ajouter la
variable d’environnement COLORTERM, tel que :
if [ -x $(command -v bat) ]; then
export COLORTERM="truecolor" # or "24bit"
fi
(Si Debian/*Buntu, pensez à changer le nom du binaire !)
Utilisation
Un des usages de l’outil est de le combiner avec certains outils, tel git,
find, man, par exemple parmi d’autres.
find
Pour utiliser bat avec find, il suffit d’appeler le binaire par le biais de
l’option -exec, tel que :
find … -exec bat {} +
où ‘…’ représente l’expression de votre recherche.
git
Pour ceux qui font du developpement logiciel et utilise git, bat peut montrer
les modifications en les metant en évidence, tout en respectant l’indentation.
Créer une fonction nommée batdiff puis appelez-la :
batdiff() {
git diff --name-only --relative --diff-filter=d -z | xargs -0 bat --diff
}
man
Ajouter la variable d’environnement MANPAGER tel que :
export MANPAGER="bat -pl man"
bien sûr, il est possible d’y implémenter toute option que gère l’outil bat.
Puis appeler simplement le binaire man avec le manpage désiré, dans un terminal,
tel par exemple :
- Sous Debian :
man batcat
- Sous OpenBSD :
man pf.conf
Astuce
Vous remarquerez que la sortie produit aussi des signes ou symboles d’échappement ANSI, incompréhensibles pour l’être humain que nous sommes.
L’astuce est de mettre en pipe, l’outil col suivi de bat, tel que :
man() {
sh -c "man '$@' | col -bx | bat -l man"
}
Et d’appeler tout simplement man.
Documentation
En langue anglaise :
- A cat(1) clone with syntax highlighting and Git integration: https://github.com/sharkdp/bat
- Bash scripts that integrate bat with various command line tools: https://github.com/eth-p/bat-extras
- Pipe man into col -b to get rid of ^H
- Anatomy of a Terminal Emulator
Remerciements
- Wesley: @obj@bsd.cafe
- Justine Smithies: @justine@snac.smithies.me.uk