La ligne de commande reste l’endroit le plus rapide pour chercher, filtrer et manipuler du code. Les outils Unix historiques — grep, find, cat — datent pourtant d’une époque sans .gitignore, sans node_modules de 400 Mo et sans sortie couleur. Une génération de remplaçants s’est imposée dans les environnements de développement web. Panorama de ceux qui tiennent réellement dans un $PATH.
brew install ou un paquet apt suffit, et aucun n’exige de configuration préalable — ils sont utiles dès la première commande.Chercher et filtrer
ripgrep — la recherche que grep aurait dû être
rg recherche récursivement une expression régulière en respectant automatiquement le .gitignore, ignore les fichiers binaires et colore sa sortie. Écrit en Rust par Andrew Gallant, il sert de moteur de recherche par défaut à Visual Studio Code, ce qui constitue une garantie d’exploitation à grande échelle.
# Chercher un appel de fonction dans tout le projet, sans polluer avec node_modules
rg "wp_enqueue_script" --type php
# Lister les fichiers correspondants
rg -l "TODO" src/
# Expression régulière avec capture, remplacement affiché sans écriture
rg "version: (\d+\.\d+)" --replace 'v$1'L’écart avec grep -r ne tient pas seulement à la vitesse brute, mais au respect du .gitignore : sur un monorepo, grep passe plusieurs secondes à parcourir vendor/ et node_modules/ que rg ignore par défaut. Le dépôt officiel détaille les filtres par type de fichier.
Le gain de ripgrep n’est pas un confort de frappe : c’est la vitesse à laquelle on comprend une base de code inconnue.
fd — trouver un fichier sans réciter la syntaxe de find
find est puissant, sa syntaxe est punitive. fd, écrit par David Peter, traite le cas courant simplement : syntaxe lisible, sortie couleur, respect du .gitignore.
# Tous les fichiers SCSS
fd -e scss
# Trouver et supprimer les .DS_Store résiduels
fd -H '^\.DS_Store$' -X rm
# Chercher un répertoire précis
fd -t d migrationsfzf — le filtre flou qui se compose
fzf, de Junegunn Choi, est un filtre flou interactif. Utile seul, il prend toute sa valeur combiné aux autres outils par des tubes : navigation dans l’historique, sélection de branche Git, ouverture de fichier.
# Ouvrir dans $EDITOR un fichier choisi au filtre flou
vim "$(fzf)"
# Changer de branche Git de façon interactive
git checkout "$(git branch | fzf | tr -d ' *')"
# Combiné avec fd et bat en prévisualisation
fd -t f | fzf --preview 'bat --color=always {}'Lire et comprendre
bat — cat avec coloration syntaxique
bat remplace cat pour la lecture humaine : coloration syntaxique, numéros de ligne, indications Git dans la marge. Pour le scripting, cat reste préférable ; pour lire un fichier de configuration, l’écart est net.
bat wp-config.php
bat -r 40:80 functions.php # seulement les lignes 40 à 80eza — un ls contemporain
exa n’étant plus maintenu, la communauté a repris le développement sous le nom eza : icônes, couleurs par type, affichage en arborescence, colonne d’état Git.
eza -la --git --icons
eza --tree --level=2 src/jq — manipuler du JSON
Dès qu’une API entre en jeu, jq devient difficilement contournable. Le projet, désormais maintenu sous l’organisation jqlang, a retrouvé un rythme de publication régulier.
# Extraire les titres d'articles depuis l'API REST de WordPress
curl -s https://exemple.com/wp-json/wp/v2/posts | jq '.[].title.rendered'
# Filtrer et reformater
curl -s https://exemple.com/wp-json/wp/v2/posts \
| jq '[.[] | {id, slug, titre: .title.rendered}]'gh — GitHub sans quitter le terminal
Le client officiel de GitHub couvre l’essentiel du flux de travail : création de pull request, revue, consultation des exécutions d’intégration continue, gestion des tickets. Il évite l’aller-retour permanent entre l’éditeur et le navigateur.
gh pr create --fill
gh pr checks
gh issue list --label bugRécapitulatif
| Outil | Remplace | Apport décisif |
|---|---|---|
rg | grep -r | Respect du .gitignore, vitesse sur monorepo |
fd | find | Syntaxe lisible pour le cas courant |
fzf | — | Filtre flou interactif, composable par tubes |
bat | cat (lecture) | Coloration syntaxique et repères Git |
eza | ls | Arborescence et état Git en colonne |
jq | — | Interrogation et reformatage de JSON |
gh | Interface web GitHub | Flux de revue sans quitter le terminal |
Ce qu’il faut retenir
Aucun de ces outils n’apporte de capacité inédite : ils réduisent le coût d’usage d’opérations effectuées des dizaines de fois par jour. C’est précisément ce qui les rend rentables — et ce qui explique leur adoption dans des chaînes d’outillage aussi répandues que celle de Visual Studio Code.
S’il ne devait en rester qu’un, ce serait ripgrep : c’est le premier binaire que j’installe sur une machine neuve, avant même mon éditeur. Les autres améliorent le confort ; celui-là change ma vitesse de compréhension d’une base de code que je découvre. — Simon Janvier
