GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de la commande ripgrep (rg) sous Linux

ripgrep est un excellent résultat de l'effort RIIR (réécrire en Rust) en cours dans la communauté open source. Il est destiné à remplacer de manière supérieure la commande grep classique.

La syntaxe pour utiliser ripgrep est la suivante :

rg <pattern> [files/directories]

Avec ripgrep, il n'est pas nécessaire de mentionner un nom de fichier. Lorsqu'aucun nom de fichier n'est fourni, tous les fichiers sont recherchés. Ceci est extrêmement utile si vous ne savez pas quel fichier contient le modèle que vous recherchez.

Vous pouvez également utiliser grep pour rechercher dans tous les fichiers, mais ripgrep le fait sans aucun effort supplémentaire.

Qu'est-ce que ripgrep ?

ripgrep est un outil récursif de correspondance de modèles regex qui considère votre gitignore. Si vous avez des fichiers, des extensions ou des répertoires spécifiques dans votre gitignore, ripgrep les ignorera, ce qui accélérera le temps d'exécution.

Voici quelques fonctionnalités qui distinguent ripgrep :

  • Recherche des modèles de manière récursive dans les répertoires
  • Surbrillance des couleurs dans la sortie
  • Prend en charge une grande variété de formats d'encodage comme UTF-8, SHIFT_JIS
  • Possibilité de rechercher dans des fichiers zip compressés
  • Ignore les fichiers cachés par défaut et utilise votre fichier gitignore pour une recherche plus rapide

Vous pouvez le considérer comme grep, mais visant principalement à rechercher des fichiers/contenus de fichiers au lieu du flux d'octets bruts traité par grep.

Installer ripgrep

Alors que grep est préinstallé sur la plupart des systèmes Linux, ripgrep n'a pas ce privilège.

Cependant, il est disponible dans les référentiels de toutes les principales distributions Linux et vous pouvez utiliser le gestionnaire de packages pour l'installer.

Si vous êtes un utilisateur d'Arch Linux, vous savez déjà comment installer des packages :p, mais tout de même, voici la commande à utiliser :

pacman -S ripgrep

Les utilisateurs de Gentoo peuvent installer ripgrep avec la commande suivante :

emerge sys-apps/ripgrep

Si vous utilisez Fedora ou Red Hat, inclinez un peu votre chapeau en tapant cette commande dans votre terminal :

sudo dnf install ripgrep

Les utilisateurs d'openSUSE (15.1 et versions ultérieures) doivent utiliser la commande suivante dans leur terminal :

sudo zypper install ripgrep

Pour les utilisateurs utilisant Debian Buster (v10) ou version ultérieure, utilisez apt. Ubuntu Cosmic Cuttlefish (18.10) ou version ultérieure peut également utiliser les dépôts officiels de la distribution.

sudo apt install ripgrep

Utilisation de la commande ripgrep

Si vous êtes familier avec l'utilisation de la commande grep, vous constaterez que ripgrep fonctionne de la même manière. Vous lui fournissez une chaîne de recherche et un nom de fichier, et il recherchera le fichier et vous montrera où la chaîne d'entrée correspond au contenu du fichier.

Pour ce tutoriel, j'ai cloné le dépôt du projet Dust et j'exécuterai les commandes à l'intérieur du dépôt cloné.

Recherches de base

Exemple de recherche du mot description dans le fichier Cargo.html :

$ rg description Cargo.toml
3:description = "A more intuitive version of du"
53:extended-description = """\

Comme prévu, l'outil ripgrep a cherché dans le fichier que j'ai spécifié et a affiché les fichiers avec le texte correspondant et le numéro de ligne.

Si vous spécifiez plusieurs fichiers à rechercher (si vous ne spécifiez aucun fichier, il recherchera tous), ripgrep déterminera également le nom de fichier dont le contenu correspond.

Alternativement, vous pouvez également utiliser l'option '--file', qui contient le modèle que vous souhaitez faire correspondre. Lorsque vous recherchez régulièrement un ensemble de modèles à faire correspondre, vous pouvez le stocker dans un fichier et le spécifier à l'aide de l'option '--file'.

Parfois, il est agréable d'avoir un contexte de la ligne correspondante, en particulier lors de la recherche dans un référentiel de code. L'option '-C' ou '--context' aide ici. Cette option accepte une valeur numérique et affiche les lignes avant et après la correspondance.

Il peut arriver que vous ne vouliez voir que quelques lignes au-dessus, y compris la ligne correspondante. Parfois, vous ne voulez que les lignes ci-dessous, y compris celle qui correspond.

Vous pouvez utiliser l'option "-A", abréviation de "--after-context", et une valeur numérique pour afficher les lignes après chaque correspondance.

Et pour les lignes avant chaque correspondance, vous pouvez utiliser l'option '-B', abréviation de '--before-context', avec une valeur numérique.

Colonnes

Il existe plusieurs options concernant les colonnes fournies par ripgrep.

Vous apprécierez le drapeau '--column' si vous êtes un utilisateur vim. Il imprime la 'ligne:colonne' du texte correspondant dans le fichier.

Une autre option liée aux colonnes est '-M' ou '--max-columns', qui prend une valeur numérique pour le nombre maximum de colonnes. Si les colonnes de lignes correspondantes dépassent, cela vous indiquera qu'une ligne particulière a été omise lors de la sortie vers le terminal.

Divers

Il existe plusieurs options que vous pouvez utiliser avec ripgrep.

Vous pouvez utiliser l'option '-s' ou '--case-sensible' pour faire correspondre le texte avec la sensibilité à la casse.

Si vous souhaitez que la casse reste insensible, vous pouvez utiliser le drapeau '-i' ou '--ignore-case'.

Si vous avez une énorme base de code, vous pouvez utiliser plusieurs threads pour la correspondance de modèles. Vous pouvez spécifier manuellement les threads en utilisant l'option '-j' ou '--threads'; il accepte une valeur numérique.

$ rg -j 4 TODO

Il peut arriver que vous souhaitiez exclure un modèle des résultats de recherche. Pour ce faire, vous pouvez utiliser '-v' ou '--invert-match' pour exclure le modèle spécifié.

ripgrep peut rechercher du texte dans une archive compressée (si le fichier compressé est un fichier texte) en utilisant le drapeau '-z' ou '--search-zip'. Ce drapeau est généralement accompagné du drapeau '-a' qui traite les fichiers binaires comme des fichiers texte.

Conclusion

ripgrep est un outil fantastique que vous pouvez exploiter, en particulier en tant que programmeur dans un environnement de type UNIX.

ripgrep, même si son nom pourrait suggérer le contraire, n'est pas destiné à remplacer grep car il se comporte différemment. Mais les deux outils sont néanmoins utiles; cela dépend de votre cas d'utilisation.


Linux
  1. Utilisation de la commande Linux Sleep dans les scripts Bash

  2. Comment redémarrer Linux en utilisant la ligne de commande

  3. Commande Linux mv

  4. Comment tuer un processus sous Linux en utilisant la commande ?

  5. Déplacer un dossier sous Linux à l'aide de la commande mv

Ripgrep - L'outil de recherche de ligne de commande le plus rapide pour Linux

Tutoriel sur l'utilisation de la commande Timeout sous Linux

Planifier des travaux sous Linux avec la commande 'at'

Utilisation de la commande Watch sous Linux

Rechercher la commande sous Linux/UNIX

Utilisation de cut sur Linux Terminal