Chez YouOnline, on passe une bonne partie de nos journées dans un terminal, que ce soit pour déployer un site, débugger un build ou fouiller dans des logs. Et pendant longtemps, on s'est contenté des commandes Unix historiques : ls, cat, grep, cd... Des outils increvables, écrits dans les années 70-80, mais qui n'ont clairement pas été pensés pour le confort visuel ou la rapidité d'usage qu'on attend en 2024.

Bonne nouvelle : une nouvelle génération d'outils CLI, écrits pour la plupart en Rust ou en Go, viennent moderniser tout ça. Ils sont plus rapides, plus jolis, et surtout beaucoup plus agréables à utiliser au quotidien. On vous fait le tour du propriétaire.

1. eza (ex-exa) : le ls qui a fait un lifting

ls, c'est bien, mais c'est austère. eza reprend le concept en ajoutant des couleurs intelligentes, des icônes, l'intégration Git, et un affichage en arborescence natif.

# Installation (macOS)
brew install eza

# Utilisation basique avec icônes et infos git
eza -la --icons --git

# Affichage en arbre
eza --tree --level=2

Astuce : on alias direct ls vers eza dans son .zshrc pour ne plus jamais taper la commande native :

alias ls='eza --icons --group-directories-first'

2. bat : cat, mais avec la coloration syntaxique

bat fait exactement ce que fait cat, sauf qu'il ajoute la coloration syntaxique, les numéros de ligne, et l'intégration Git pour voir directement les lignes modifiées.

brew install bat

bat package.json
bat src/index.js

Concrètement, quand vous devez checker rapidement un fichier de config sans ouvrir votre éditeur, bat change vraiment la vie. Et si vous êtes du genre à faire cat par réflexe, un simple alias règle le problème :

alias cat='bat --paging=never'

3. ripgrep (rg) : grep sous stéroïdes

ripgrep est probablement l'outil le plus impressionnant de cette liste. Il fait ce que fait grep, mais en respectant automatiquement votre .gitignore, en étant multithreadé, et en étant... littéralement plusieurs fois plus rapide sur de gros projets.

brew install ripgrep

# Chercher "TODO" dans tout le projet, sans fouiller node_modules
rg "TODO"

# Chercher uniquement dans les fichiers .js
rg "useEffect" -t js

Sur un projet avec un node_modules bien gras, la différence de vitesse avec grep -r est immédiatement perceptible. C'est devenu l'outil par défaut de VS Code en interne, ce qui donne une idée de sa fiabilité.

4. fd : find, mais qui parle humain

La syntaxe de find a toujours été... particulière. fd propose une syntaxe simple et intuitive, tout en étant nettement plus rapide.

brew install fd

# Trouver tous les fichiers .test.js
fd ".test.js$"

# Trouver un dossier nommé "components"
fd components --type d

5. fzf : le fuzzy finder qui change tout

fzf est sans doute l'outil qui a le plus transformé notre façon de travailler dans le terminal. C'est un moteur de recherche floue interactif que vous pouvez brancher sur n'importe quoi : historique de commandes, liste de fichiers, branches Git...

brew install fzf

# Recherche interactive dans l'historique de commandes (Ctrl+R)
# Recherche interactive de fichiers (Ctrl+T)

Une fois installé et intégré à votre shell ($(fzf --zsh) ou équivalent pour bash), tapez Ctrl+R et regardez la magie se produire sur votre historique de commandes. On peut aussi le combiner avec Git pour checkout une branche en deux secondes :

alias gco='git checkout $(git branch | fzf | tr -d "[:space:]*")'

6. zoxide : cd avec de la mémoire

Combien de fois avez-vous tapé cd ../../../projets/site-client/src/components ? zoxide apprend vos habitudes de navigation et vous permet de sauter directement vers un dossier fréquemment visité, juste avec quelques lettres.

brew install zoxide

# Après config, un simple z suffit :
z components
# zoxide devine que vous voulez aller dans site-client/src/components

Après quelques jours d'utilisation, cd devient presque un vestige du passé pour les trajets répétitifs.

Comment tout mettre en place sans y passer sa soirée

La bonne nouvelle, c'est que tous ces outils sont disponibles via Homebrew sur macOS et Linux, ou via les gestionnaires de paquets classiques (apt, pacman, scoop pour Windows). L'installation groupée ne prend que quelques minutes :

brew install eza bat ripgrep fd fzf zoxide

Ensuite, il suffit d'ajouter les alias et initialisations dans son fichier de config shell (.zshrc, .bashrc ou config.fish) :

# Alias de base
alias ls='eza --icons --group-directories-first'
alias cat='bat --paging=never'

# Initialisation zoxide
eval "$(zoxide init zsh)"

# Initialisation fzf
source <(fzf --zsh)

Est-ce que ça vaut vraiment le coup de changer ses habitudes ?

On ne va pas se mentir : changer ses réflexes de terminal demande un petit temps d'adaptation, surtout si vous tapez des commandes Unix depuis dix ans sans y réfléchir. Mais le retour sur investissement est réel : moins de temps perdu à chercher un fichier, des logs plus lisibles d'un coup d'œil, et une navigation dans les projets qui devient presque instinctive.

Pour une agence comme la nôtre, qui jongle entre plusieurs projets clients, plusieurs stacks (WordPress, Next.js, Shopify...) et pas mal de déploiements, ce genre de gain de productivité cumulé sur l'année représente clairement plusieurs heures récupérées. Et honnêtement, un terminal qui affiche des jolies couleurs et des icônes, ça rend le travail un peu plus agréable aussi.

Si vous ne devez tester qu'un seul de ces outils cette semaine, on vous recommande fzf ou ripgrep : c'est probablement ceux qui auront l'impact le plus immédiat sur votre quotidien de dev.

Partager