Ah, grep. Ce vénérable outil Unix qui a survécu à des décennies de révolutions technologiques, comme un vieux pull en laine troué mais toujours confortable. Sauf que, soyons honnêtes, il est lent, verbeux, et ses options ressemblent à un inventaire de magasin de bricolage des années 80. Heureusement, ripgrep (ou rg pour les intimes) est là pour lui botter les fesses, avec élégance et une rapidité qui donne envie de danser la salsa devant son terminal.
Pourquoi grep mérite une retraite anticipée
Commençons par un aveu : grep est utile. Il fait ce qu’on lui demande, et il le fait bien… quand on a le temps. Mais dans un monde où les projets gonflent comme des ballons de baudruche (merci, node_modules), attendre que grep termine sa recherche, c’est comme regarder de la peinture sécher en écoutant du Mozart. Lent et prétentieux.
Prenons un exemple classique : chercher une chaîne dans un dossier. Avec grep, c’est la loterie. Par défaut, il ignore les fichiers cachés, les binaires, et les dossiers comme .git. Il faut lui tenir la main comme à un enfant de cinq ans : grep -r --exclude-dir={.git,node_modules} "ma_recherche" .. Et encore, si vous voulez ignorer les fichiers binaires, il faut ajouter -I. Bref, un vrai casse-tête.
ripgrep, lui, a tout compris. Par défaut, il ignore les fichiers cachés, les binaires, et les dossiers inutiles (.git, node_modules, etc.). Il est rapide, intelligent, et il ne vous force pas à réciter des incantations pour obtenir un résultat. Un vrai bonheur.
La vitesse, cette drogue douce
Si ripgrep était une voiture, ce serait une Tesla en mode ludicrous. La différence de vitesse avec grep est tellement flagrante qu’on se demande si ce dernier ne traîne pas des pieds par pure jalousie. ripgrep est écrit en Rust (oui, encore un outil en Rust, mais celui-là le mérite), et il exploite toutes les optimisations possibles : parallélisation, recherche SIMD, et une gestion mémoire qui ferait pâlir d’envie un C++ puriste.
Pour vous donner une idée, voici un petit benchmark maison (oui, c’est du back-of-the-envelope, mais l’ordre de grandeur est là) :
# Avec grep (GNU grep 3.7) time grep -r "function main" /usr/share/ real 0m1,234s user 0m0,987s sys 0m0,246s # Avec ripgrep (13.0.0) time rg "function main" /usr/share/ real 0m0,123s user 0m0,098s sys 0m0,025s
On parle d’un facteur 10, voire plus selon la taille du dossier. Et encore, ce benchmark est gentil : dans un projet avec des milliers de fichiers, grep peut mettre une éternité, tandis que ripgrep répond avant même que vous ayez fini de cligner des yeux.
L’UX, ou comment rendre le terminal moins hostile
Un bon outil ne se contente pas d’être rapide : il doit aussi être agréable à utiliser. Et là encore, ripgrep brille. Ses sorties sont colorées (par défaut, sans avoir à ajouter --color=always comme un sauvage), les numéros de ligne sont affichés, et les résultats sont groupés par fichier. Pas besoin de squinter pour comprendre où se trouve votre chaîne.
Quelques pépites qui font la différence :
- Recherche intelligente :
rgcomprend les expressions régulières, mais il est aussi capable de faire des recherches littérales sans que vous ayez à échapper chaque caractère spécial. Un gain de temps énorme. - Filtrage intégré : Vous voulez chercher dans les fichiers
.jsuniquement ?rg "ma_recherche" --type js. Dans les fichiers modifiés il y a moins d’une semaine ?rg "ma_recherche" --changed-within 7d. C’est simple, intuitif, et ça évite de devoir combinergrepavecfindouxargs. - Sortie JSON : Besoin de parser les résultats dans un script ?
rg --json "ma_recherche"vous donne une sortie structurée, prête à être consommée parjqou votre langage préféré.greppeut aller se rhabiller.
Et si jamais vous avez besoin de revenir aux vieilles habitudes, ripgrep propose des options pour désactiver ses comportements par défaut. Mais franchement, une fois que vous aurez goûté à son confort, vous ne voudrez plus revenir en arrière.
Installation : plus simple qu’une recette de pâtes
Pas de drama ici : ripgrep est disponible dans les dépôts de la plupart des distributions Linux. Sous Ubuntu/Debian : sudo apt install ripgrep. Sous Fedora : sudo dnf install ripgrep. Sous Arch : sudo pacman -S ripgrep. Et si vous êtes un puriste, vous pouvez toujours le compiler depuis les sources (merci, Rust, pour les binaires statiques).
Une fois installé, lancez rg --version pour vérifier que tout est en ordre. Et voilà, vous êtes prêt à dire adieu à grep.
Conclusion : grep est mort, vive rg !
Il est temps de tourner la page. grep a rendu de fiers services, mais comme un vieux téléphone à clapet, il est temps de passer à quelque chose de plus moderne, plus rapide, et surtout, plus agréable à utiliser. ripgrep n’est pas parfait (aucun outil ne l’est), mais il coche toutes les cases pour devenir votre nouveau meilleur ami dans le terminal.
Alors, la prochaine fois que vous chercherez une chaîne dans vos fichiers, résistez à l’envie de taper grep. Tapez rg, et savourez cette douce sensation de vitesse et d’efficacité. Votre futur vous remerciera.