Trois outils. Chacun remplace un binaire POSIX vieux de 40 ans. Ensemble, ils transforment le terminal en interface plus rapide que n’importe quel explorateur graphique.
Alors oui, c’est dans les vieux pots qu’on fait les meilleures soupe et si un binaire qui a 40 ans est toujours utilisé, c’est qu’il y a une bonne raison, mais là, ce serait dommage de se privée d’une UX shell bien léchée.
fd remplace find. Même usage, syntaxe humaine :
fd "pattern" # find . -name "*pattern*"
fd -e py # find . -name "*.py"
fd pattern --exec cmd # find avec -exec, mais lisible
rg (ripgrep) remplace grep -r. Respecte .gitignore par défaut.
10× plus rapide que grep sur un gros arbre :
rg "TODO" # grep -r "TODO" .
rg -l "import" # grep -rl "import" . (fichiers uniquement)
rg --type py "class" # grep --include="*.py" -r "class" .
fzf ajoute du fuzzy finding partout. Le couteau suisse :
# Ouvrir un fichier (remplace Ctrl+P de VS Code dans le terminal)
fzf
# Historique shell interactif
# (Ctrl+R avec fzf au lieu du reverse-search bash par défaut)
# Tuer un processus (choisir visuellement)
kill -9 $(ps aux | fzf | awk '{print $2}')
Le combo
# Chercher un fichier par nom ET contenu, ouvrir dans vim
vim $(rg -l "TODO" | fzf)
# fd + fzf = explorateur de fichiers instantané
cd $(fd -t d | fzf)
Cheatsheet
| Outil | Remplace | Vitesse | Meilleure feature |
|---|---|---|---|
fd | find | ~5× plus rapide | Respecte .gitignore |
rg | grep -r | ~10× plus rapide | Respecte .gitignore |
fzf | find + sélection manuelle | — | Fuzzy matching interactif |
Le point commun : ils ignorent .gitignore par défaut. Plus besoin de
--exclude-dir node_modules à chaque commande. C’est le détail qui
fait que tu les adoptes en une journée.