GilLabs notes, conférences et expériences

Outils CLI personnels

17 Sep 2026

De nombreuses routines en ligne de commande commencent par quelques commandes récupérées dans l'historique du terminal. Après avoir répété la même séquence suffisamment de fois, j'en fais un alias, une fonction shell ou une petite application. Ces outils personnels occupent une place importante dans mon expérience de développement, car ils reflètent ma façon de travailler.

Le coût de création de ces petits utilitaires a changé. Un agent de programmation peut transformer la description d'une tâche répétitive en une première version fonctionnelle en quelques minutes. Je dois toujours expliquer le comportement attendu, examiner le code généré et tester les chemins dangereux, mais l'implémentation initiale est rarement l'obstacle qu'elle était auparavant. Des outils très spécifiques deviennent ainsi intéressants, même lorsque leur public se limite à une seule personne.

La productivité des développeurs est largement abordée dans la littérature. Le framework SPACE, par exemple, la décrit selon plusieurs dimensions plutôt qu'à travers une seule métrique d'activité. Un framework pratique consacré à l'expérience développeur étudie également les facteurs qui façonnent la manière dont le travail de développement est vécu. L'expérience développeur, ou DevX, décrit la façon dont les développeurs vivent les outils, les flux de travail et les systèmes qu'ils utilisent pour travailler.

Améliorer Votre Expérience en Ligne de Commande avec fzf

fzf est un outil de recherche approximative interactif pour le terminal. Il reçoit une liste de lignes, ouvre un sélecteur et renvoie la ligne choisie. Il suffit de saisir quelques fragments pour filtrer progressivement les candidats, sans devoir se souvenir ou taper un nom exact.

Le principe de base est simple :

bash
selection=$(command-that-produces-options | fzf)command-that-uses "$selection"

Ce principe divise une application CLI en trois parties :

  1. Produire les options possibles.
  2. Permettre à l'utilisateur de rechercher et sélectionner une option.
  3. Exécuter une action avec la sélection.

Le sélecteur peut proposer une invite descriptive, la sélection multiple, des raccourcis clavier et une fenêtre d'aperçu. La commande qui produit les options peut associer des chemins, des descriptions, des dates ou des métadonnées Git à chaque élément. L'action finale doit valider la valeur sélectionnée et traiter la touche Échap comme une annulation normale.

Ce principe me permet de fournir rapidement des entrées à mes scripts CLI sans devoir mémoriser les valeurs valides ou la syntaxe exacte de chaque script. Il apporte aussi de la cohérence : une fois le fonctionnement d'une commande à sélection approximative appris, je comprends déjà une grande partie de la suivante.

Exemples Tirés de Mes Propres Outils

config-fz

À mesure que ma configuration shell grandissait, retenir le nom de toutes mes commandes personnalisées est devenu un problème en soi. J'ai commencé à annoter les commandes avec un nom et une brève description. config-fz rassemble ces annotations et les transmet à fzf, ce qui me permet de parcourir le catalogue par fonction et d'exécuter la commande sélectionnée.

Les annotations rendent la collection auto-documentée. L'interface de recherche approximative me permet de profiter d'un utilitaire rarement utilisé sans devoir d'abord me souvenir de son nom exact. Une seule ligne de commentaire à côté de son implémentation suffit pour ajouter un nouvel outil au catalogue.

gflog

Ma commande gflog formate le reflog Git avec le hash du commit, sa position dans le reflog, sa date et son sujet. Git contient déjà ces informations ; cette application personnelle choisit la représentation compacte dont j'ai besoin pour examiner un état antérieur.

gz

gz applique le principe de sélection approximative aux branches et aux références distantes. La commande affiche chaque référence avec son hash, son auteur, sa date et son sujet, transmet la liste à fzf, puis réinitialise le dépôt vers la cible sélectionnée.

Repérez le Script que Vous Êtes Déjà en train d'Exécuter

Soyez attentif aux moments où vous copiez les mêmes commandes, reconstituez les mêmes arguments, parcourez les mêmes répertoires ou suivez les mêmes instructions de récupération. Décrivez l'une de ces routines à un agent de programmation et demandez-lui une petite application CLI. Une fois qu'elle fonctionne, améliorez son interface avec une sélection approximative, des aperçus utiles, des invites claires, une annulation sûre et une confirmation lorsque l'enjeu le justifie.

Les outils personnels les plus utiles commencent souvent par une séquence trop spécifique pour intéresser quelqu'un d'autre. C'est précisément pour cette raison qu'ils nous correspondent si bien. Sans script pour une procédure répétitive, vous êtes condamné à vous comporter comme tel : recevoir les mêmes entrées, suivre les mêmes étapes et produire sans cesse le même résultat.