7 Outils du quotidien pour le terminal

Ah le terminal, quelle interface formidable pour tout développeur / administrateur souhaitant être efficace au quotidien.
Mais le plus important, ce n’est pas tellement le terminal, mais bien ce qu’on fait dedans !
C’est pour ça que je vous propose quelques exemples d’outils qui me rendent bien service au quotidien.

Travaillant avec Linux, les outils cités ciblent principalement ce système. Et si vous travaillez avec Windows ou Mac OSX, vous ne devriez avoir aucun problème à déployer ces outils à l’aide de WSL ou homebrew respectivement.

1. bat, un « meilleur cat »

Sources : https://github.com/sharkdp/bat

cat, sûrement une des commandes les plus simples et que l’on utilise très souvent dès que l’on doit manipuler des fichiers textes depuis le terminal.
Et bien désormais il en existe une version « améliorée » : bat, qui pourra aisément remplacer cat au quotidien en y ajoutant :

La coloration syntaxique pour une pléthore de formats de fichiers (avec pagination automatique)

Liste des formats visible avec bat -L ou bat --list-languages :

L’intégration de git pour afficher les différences de votre copie de travail :

Et plein d’autres choses à découvrir sur la page Github du projet, ainsi que les instructions d’installation en fonction de votre système d’exploitation.

2. tealdeer (ou tldr), quand la doc est trop longue

Sources : https://github.com/dbrgn/tealdeer

Fatigué de devoir faire défiler des pages et des pages de documentation juste pour trouver un exemple particulier d’utilisation d’une commande ? Et bien dîtes-le à votre terminal en lui répondant TL;DR ! ( = Too Long, Didn’t Read si jamais vous n’aviez pas croisé cette expression jusqu’ici).

tldr c’est votre accès direct à de la documentation simplifiée pour des centaines d’outils de la ligne de commande, et tealdeer c’est simplement la version Rust du client permettant d’accéder à toute cette documentation.

Encore un doute sur les arguments de la commande tar ? tldr à la rescousse :

Rendez-vous sur le manuel d’utilisation pour les instructions d’installation et d’utilisation.

3. du-dust, et ça n’a rien à voir avec Counter Strike®

Sources : https://github.com/bootandy/dust

Si vous avez déjà dû vérifier l’espace disque utilisé par une arborescence sur un système linux, il y a de fortes chances que vous ayez utilisé la commande du. C’est parfait quand on cherche à connaitre rapidement le total contenu dans un dossier, ou la taille que chaque fichier utilise dans un dossier.
Mais si on cherche à savoir ce qui prend de la place dans toute une arborescence, et de façon facile à lire ?
C’est là que dust (du + Rust) entre en scène :

Avec dust vous pourrez voir une répartition de l’espace occupé par les différents niveaux d’une arborescence de dossiers. Pratique quand on cherche à savoir ce qui viens remplir nos disques quand l’espace libre se fait rare.

Pour l’installation, rien de plus simple : un simple cargo install du-dust sous Linux, ou brew install dust sous OSX.

4. xsv, parce que le CSV n’est pas mort

Sources : https://github.com/BurntSushi/xsv

S’il vous arrive de traiter des fichiers CSV et de devoir extraire / formater les données qu’ils contiennent, cette petite boîte à outils est faite pour vous.

xsv met à votre disposition tout un tas d’opérations pour manipuler les données de vos fichier CSV, directement depuis la ligne de commande (pensez à un simili-jq mais pour .csv)

Comme pour jq avec les fichiers JSON, la maitrise de xsv demande un peu de pratique, mais dans certains cas ce sera beaucoup plus efficace que de télécharger le fichier sur votre machine pour le lancer dans un bon vieux (et lent) tableur.

C’est un outil écrit en Rust, donc l’installation pourra cette fois encore se faire à l’aide de cargo ou brew selon votre système.

5. xh, si jamais le curl-ing c’est pas votre truc.

Sources : https://github.com/ducaale/xh

cURL, le client Internet de référence qui a fêté ses 23 ans en mars dernier, est l’outil à connaître quand on travaille avec le web.
Il est le plus souvent utilisé pour des requêtes HTTP(s) même s’il supporte des tas d’autres protocoles.
Cette polyvalence fait que sont interface en ligne de commande peut s’avérer assez verbeuse et difficile à maîtriser (même si on peut toujours utiliser tldr pour se rafraîchir la mémoire 😉).

C’est là qu’intervient xh.

Cette commande est là pour faire une seule chose, mais le faire bien et de façon performante : lancer des requêtes HTTP(s).
Si vous connaissez l’outil Python httpie, vous ne serez pas perdu, xh est son équivalent en Rust.

Et si vous avez besoin de demander de faire une requête à un collègue ne disposant pas de xh : pas de problème, vous pouvez obtenir la commande curl équivalente avec l’option --curl ou --curl-long

Bien que plus jeune que httpie de l’écosystème python, xh est suffisant pour les besoins simples du quotidien, et son binaire unique permet de le rendre « facilement transportable ».

xh est aussi écrit en Rust, donc sans surprise l’installation passera par cargo ou brew.

Pour des besoins plus avancés, rien ne vaudra une bonne prise en main de curl (ou de HTTPie si vous voulez utiliser une interface plus accessible et éprouvée par rapport à xh)

Et si vous en avez marre du Rust, que vous préférez Go et que vous n’avez pas d’amis : prenez un curlie !

6. RipGrep, le grep moderne

Sources : https://github.com/BurntSushi/ripgrep

Difficile de présenter ripgrep autrement qu’en résumant par « grep, mais en mieux ». Mais s’il fallait détailler un minimum on pourrait faire cette description :

Recherche de texte par motif regex en récursif , excluant par défaut les dossiers et fichiers cachés, les binaires, ainsi que ceux contenu dans le .gitignore si vous êtes dans l’arborescence d’un dépôt git.

Le tout en multi-plateforme car il est disponible à la fois pour Linux, Mac OS et Windows (sans passer par WSL).

(Oui, ripgrep c’est long à écrire alors la commande se nomme rg pour que ce soit plus pratique)

Des binaires pré-compilés pour Linux et Windows sont disponibles dans les releases du projet.
Si vous préférez utiliser un gestionnaire de paquets, vous trouverez sûrement le paquet correspondant dans les dépôts principaux de votre système (Linux, Mac OS ou Windows).
Et comme ripgrep est également en Rust, cargo vous permettra de l’installer / compiler si les deux précédentes méthodes d’installation ne conviennent pas.

7. dotenv-linter : Finis les crash à cause d’un .env mal formatté

Sources : https://github.com/dotenv-linter/dotenv-linter

Avec la popularisation du principe de configuration par l’environnement issu de la méthodologie The Twelve-Factor App, nous avons tous vu fleurir des fichier .env à la racine de nos projets. Mais l’utilisation de ce format étant relativement jeune par rapport à d’autres (tel que XML par exemple), l’outillage autour du .env n’est pas aussi fourni.

dotenv-linter tente de remédier en partie à ce manque en fournissant un moyen simple de vérifier / comparer / corriger le formatage ces fameux fichiers .env :

Et si votre projet met à disposition un modèle de fichier .env (pour nos projets, nous utilisons en général un fichier .env.dist), vous pouvez comparer si vous êtes à jour par rapport au modèle de référence :

C’est typiquement le genre de fonctionnalité qu’il serait utile d’avoir dans un hook post-merge dans Git afin de ne manquer aucune nouvelle configuration lors de la mise à jour de votre copie locale avec un git pull / merge / rebase.

J’espère que ces exemples d’outils vous donneront des idées pour améliorer votre workflow quotidien avec la ligne de commande et je terminerai avec un bonus :
Une mention spéciale le framework Oh My ZSH! qui permet de prendre en main et d’appréhender la puissance du shell ZSH sans passer des jours à apprendre les arcanes de sa configuration.

Et vous ? Avez-vous des tips & tricks sur le terminal et la ligne de commande à partager ?
N’hésitez pas à nous faire part vos astuces sur Twitter : @SedonaArchitect.

You may also like...