8 faits qui rendent la commande Linux bat meilleure que cat
Le programme des chauves-souris se décrit comme « un clone de chat avec des ailes », ce qui est une analogie amusante, mais légèrement trompeuse. bat est un outil avec deux objectifs principaux : mettre en évidence la syntaxe et marquer les différences git.
Pour comprendre exactement comment utiliser au mieux bat, ces exemples vous montreront comment fonctionne la commande et ce que ses différentes options vous permettent de faire.
Sommaire
bat fait la mise en évidence de la syntaxe par défaut
Pour illustrer la fonction principale de bat, exécutez-le simplement sur un fichier de code source dans le langage de votre choix, par exemple :
bat tile.js
Pour un fichier court, bat enverra une sortie et vous ramènera à votre invite :
La principale chose que fait bat dans ce cas est d'ajouter une coloration syntaxique à votre fichier en utilisant les couleurs ANSI. Il peut le faire pour de nombreux langages différents, couvrant tout, du C au HTML et Markdown :
Pour répertorier l'ensemble complet des syntaxes de langage prises en charge par bat, utilisez le –list-langues option.
Vous pouvez utiliser l'option –theme pour modifier les couleurs spécifiques utilisées par la chauve-souris. Par exemple, voici le début du fichier précédent mis en évidence à l'aide du thème gruvbox-dark :
Même si la chauve-souris se décrit comme un « clone de chat », ce n’est pas vraiment le cas. Vous pouvez utiliser la commande cat de plusieurs manières, mais son intention initiale était de combiner (concaténer) des fichiers. cat reste le meilleur outil à cet effet, mais bat améliore son utilisation en tant que visionneuse de fichiers.
Si un fichier est trop long pour tenir dans votre terminal, bat utilisera un pager pour afficher une version interactive. Cela fonctionnera exactement de la même manière que le pager que vous utilisez pour afficher les pages de manuel, à condition qu'il s'agisse du même pager. Par défaut, bat en utilisera moins, mais vous disposez de plusieurs options pour utiliser une alternative :
-
Modifiez la variable PAGER ou utilisez BAT_PAGER si vous souhaitez que Bat utilise un pager différent d'un autre logiciel.
-
Utilisez l'option –pager pour spécifier une commande (ou un chemin d'accès à un programme). Vous pouvez le faire sur la ligne de commande ou dans le fichier de configuration de bat.
Vous pourriez trouver déroutant ou distrayant que Bat utilise parfois un téléavertisseur et parfois non. Si tel est le cas, vous pouvez utiliser l'option –paging pour modifier ce comportement :
bat
Il existe plusieurs manières différentes de configurer votre téléavertisseur en utilisant bat et les options –paging et –pager. Voir la documentation sur les chauves-souris (man bat) pour plus de détails.
bat Numérote également les lignes par défaut
Par défaut, bat affiche également les numéros de ligne à côté de votre fichier. Je les ai désactivés dans les captures d'écran précédentes pour les garder simples ; voici un exemple du véritable comportement par défaut :
Les numéros de ligne sont utiles pour suivre votre emplacement dans un fichier. Le pager less n'affiche pas ces informations par défaut, bien que des alternatives comme la plupart le fassent. La numérotation des lignes est particulièrement utile si vous inspectez le code source et essayez de détecter un bogue sur une ligne spécifique. Vous pouvez utiliser l'option -p pour désactiver les numéros de ligne ou l'option -n pour afficher les numéros de ligne et rien d'autre.
bat peut mettre en évidence des lignes ou des plages
La numérotation des lignes de bat est encore plus efficace lorsque vous la combinez avec la mise en surbrillance des lignes, que vous pouvez utiliser sur une seule ligne ou sur un ensemble de plages. L'option –highlight-line a quelques variantes ; voici un exemple :
bat
Cela mettra en évidence la ligne 7 et les lignes 14-15 en utilisant une couleur d'arrière-plan alternative :
Une option similaire, –ligne-plagepermet d'afficher uniquement certaines lignes ou plages :
Bien entendu, vous pouvez combiner les deux pour afficher une partie d’un fichier et mettre en évidence des lignes spécifiques en même temps :
bat fonctionne bien avec Git
Si vous utilisez bat pour afficher le code source, vous serez heureux de savoir qu'il prend en charge git. bat affichera les modifications apportées à un fichier s'il détecte qu'il se trouve dans un référentiel git :
bat affichera des symboles familiers dans la marge gauche de chaque ligne modifiée pour indiquer si elle est nouvelle (+), supprimée (-) ou modifiée (~). Vous pouvez utiliser l'indicateur –diff (-d) pour indiquer à bat d'afficher uniquement les lignes avec des modifications, ainsi que quelques lignes de contexte qui les entourent. Il s'agit d'une fonctionnalité intéressante pour réviser les modifications de code ou pour vous remettre au courant d'un projet sur lequel vous revenez.
bat se comporte judicieusement s'il est dans un pipeline
Nous avons déjà vu comment Bat fait preuve de bon sens pour décider d'utiliser ou non un téléavertisseur, mais l'outil possède d'autres fonctionnalités intelligentes. En particulier, le plus utile est sa capacité à détecter quel type de résultat est le plus approprié.
bat fait cela en vérifiant si sa sortie est envoyée à un terminal non interactif : si elle est redirigée vers un autre processus ou vers un fichier, par exemple. Dans ces cas-là, vous ne souhaiterez probablement pas que la coloration syntaxique de bat soit supprimée, elle supprimera donc les codes de couleur spéciaux qu'elle génère habituellement. Dans ce mode, il agit essentiellement comme un chat, désactivant toutes les décorations, y compris les numéros de ligne et les surlignages de plage.
Vous pouvez toujours forcer bat à produire une sortie formatée, même si elle est dans un pipeline. Ceci est utile si vous savez que la commande vers laquelle vous envoyez peut gérer les codes de couleur ANSI, comme la plupart des téléavertisseurs, par exemple :
bat -f README.md | most
L'option –force-colorization (-f) indique à bat de conserver toutes les colorisations et décorations, c'est donc l'opposé de –plain (-p).
La chauve-souris fonctionne aussi bien avec l'homme
Étant donné que vous pouvez configurer le pager que man utilise pour afficher l'aide sur les commandes Linux, vous pouvez également le configurer pour qu'il utilise bat pour un résultat plus agréable :
Pour ce faire, lancez man et configurez MANPAGER comme ceci :
MANPAGER="sh -c 'col -bx | bat -l man -p'" man ls
Cette commande pourrait nécessiter quelques explications car elle fait beaucoup de choses. Tout d'abord, il définit la variable MANPAGER, puis exécute « man ls » à la toute fin. Cette syntaxe (« commande NAME=VALUE ») est un moyen pratique de définir une variable d'environnement pour la commande spécifique qui suit.
La valeur de MANPAGER est un appel à sh (votre shell par défaut) avec l'option -c pour exécuter une commande. À son tour, cette commande exécute deux programmes, col et bat, acheminant la sortie du premier vers l’entrée du second. Le programme col aide à nettoyer certains caractères de formatage, et bat est exécuté avec l'option « -l man » pour utiliser la syntaxe man pour la colorisation. Le -p utilise un style simple, qui convient aux pages de manuel.
bat a des options de configuration vraiment utiles
À présent, vous avez peut-être remarqué que bat est hautement configurable. Certaines de ses options sont informatives, comme –list-langues. Vous pouvez utiliser –config-file pour imprimer l'emplacement de votre fichier de configuration bat, par exemple.
Si vous recherchez une palette de couleurs différente (nous avons tous nos favoris), consultez les options –list-themes. Fait intéressant, cette sortie utilise des décorations et une colorisation, et vous pouvez les désactiver à l'aide des options standard :
L'outil prend également en charge quelques options simples pour contrôler des détails de formatage spécifiques, afin que vous puissiez contrôler sa sortie avec précision. Utilisez « –tabs n » pour définir la largeur des tabulations dans les espaces, –chop-long-lines pour tronquer toutes les lignes plus longues que la largeur de l'écran et –squeeze-blank pour compresser des séries de lignes vides en une seule ligne.
bat fait partie d'un nombre croissant d'outils de ligne de commande Linux écrits en Rust. Cet écosystème encourage une génération d'applications TUI visuellement riches et interactives qui reprennent des commandes établies, et bat est un excellent ajout à votre suite d'outils Linux.
