GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo del comando ripgrep (rg) in Linux

ripgrep è un eccellente risultato dello sforzo RIIR (riscrivilo in Rust) in corso nella comunità open source. È pensato per essere un sostituto superiore per il classico comando grep.

La sintassi per utilizzare ripgrep è la seguente:

rg <pattern> [files/directories]

Con ripgrep, non è necessario menzionare un nome file. Quando non viene fornito un nome file, viene eseguita la ricerca in tutti i file. Questo è incredibilmente utile se non sai quale file contiene il modello che cerchi.

Puoi anche usare grep per cercare in tutti i file, ma ripgrep lo fa senza alcuno sforzo aggiuntivo.

Cos'è ripgrep?

ripgrep è uno strumento di corrispondenza dei modelli regex ricorsivo che considera il tuo gitignore. Se hai file, estensioni o directory specifici nel tuo gitignore, ripgrep li ignorerà, velocizzando i tempi di esecuzione.

Alcune caratteristiche che fanno risaltare ripgrep sono le seguenti:

  • Cerca i pattern in modo ricorsivo nelle directory
  • Evidenziazione del colore nell'output
  • Supporta un'ampia varietà di formati di codifica come UTF-8, SHIFT_JIS
  • Possibilità di cercare nei file zip compressi
  • Ignora i file nascosti per impostazione predefinita e utilizza il tuo file gitignore per una ricerca più rapida

Puoi pensarlo come grep, ma principalmente mirato alla ricerca di file/contenuto di file invece del flusso di byte non elaborato con cui si occupa grep.

Installa ripgrep

Sebbene grep sia preinstallato sulla maggior parte dei sistemi Linux, ripgrep non ha questo privilegio.

Tuttavia, è disponibile nei repository di tutte le principali distribuzioni Linux e puoi utilizzare il gestore di pacchetti per installarlo.

Se sei un utente di Arch Linux, sai già come installare i pacchetti :p, ma comunque, ecco il comando che dovresti usare:

pacman -S ripgrep

Gli utenti Gentoo possono installare ripgrep con il seguente comando:

emerge sys-apps/ripgrep

Se usi Fedora o Red Hat, inclina leggermente il cappello mentre digiti questo comando nel tuo terminale:

sudo dnf install ripgrep

Gli utenti di openSUSE (15.1 e versioni successive) dovrebbero utilizzare il seguente comando nel proprio terminale:

sudo zypper install ripgrep

Per gli utenti che utilizzano Debian Buster (v10) o versioni successive, utilizzare apt. Anche Ubuntu Cosmic Cuttlefish (18.10) o successivo può utilizzare i repository ufficiali della distribuzione.

sudo apt install ripgrep

Utilizzo del comando ripgrep

Se hai familiarità con l'utilizzo del comando grep, scoprirai che ripgrep funziona in modo simile. Fornisci una stringa di ricerca e un nome file, e cercherà nel file e ti mostrerà dove la stringa di input corrisponde al contenuto del file.

Per questo tutorial, ho clonato il repository del progetto dust ed eseguirò i comandi all'interno del repository clonato.

Ricerche di base

Una ricerca di esempio della descrizione della parola nel file Cargo.html:

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

Come previsto, lo strumento ripgrep ha cercato nel file che ho specificato e ha visualizzato i file con il testo corrispondente e il numero di riga.

Se specifichi più file da cercare (se non specifichi nessun file, cercherà tutti), ripgrep determinerà anche il nome del file il cui contenuto corrisponde.

In alternativa, puoi anche usare l'opzione '--file', che contiene il modello che vuoi abbinare. Quando cerchi regolarmente una serie di modelli da abbinare, puoi salvarli in un file e specificarli utilizzando l'opzione '--file'.

A volte, è bello avere un contesto della riga corrispondente, specialmente durante la ricerca in un repository di codice. L'opzione '-C' o '--context' aiuta qui. Questa opzione accetta un valore numerico e mostra le righe prima e dopo la corrispondenza.

Ci possono essere momenti in cui vuoi vedere solo poche righe sopra, inclusa la riga abbinata. A volte, vuoi solo le righe sottostanti, inclusa quella abbinata.

Puoi utilizzare l'opzione '-A', abbreviazione di '--after-context' e un valore numerico per mostrare le righe dopo ogni corrispondenza.

E per le righe prima di ogni corrispondenza, puoi utilizzare l'opzione '-B', abbreviazione di '--before-context', insieme a un valore numerico.

Colonne

Esistono diverse opzioni relative alle colonne fornite da ripgrep.

Apprezzerai il flag '--column' se sei un utente vim. Stampa la 'riga:colonna' del testo abbinato nel file.

Un'altra opzione relativa alle colonne è '-M' o '--max-columns', che accetta un valore numerico per il numero massimo di colonne. Se le colonne delle righe corrispondenti superano, ti informerà che una riga particolare è stata omessa dall'output sul terminale.

Varie

Ci sono diverse opzioni che puoi usare con ripgrep.

Puoi utilizzare l'opzione '-s' o '--case-sensitive' per abbinare il testo alla distinzione tra maiuscole e minuscole.

Se vuoi mantenere la distinzione tra maiuscole e minuscole, puoi utilizzare il flag '-i' o '--ignore-case'.

Se disponi di un'enorme base di codice, puoi utilizzare più thread per la corrispondenza dei modelli. Puoi specificare manualmente i thread usando l'opzione '-j' o '--threads'; accetta un valore numerico.

$ rg -j 4 TODO

Ci possono essere occasioni in cui desideri escludere un pattern dai risultati di ricerca. Per farlo, puoi utilizzare '-v' o '--invert-match' per escludere il pattern specificato.

ripgrep può cercare del testo in un archivio compresso (se il file compresso è un file di testo) usando il flag '-z' o '--search-zip'. Questo flag è solitamente accompagnato dal flag '-a' che tratta i file binari come file di testo.

Conclusione

ripgrep è uno strumento fantastico che puoi sfruttare, soprattutto come programmatore in un ambiente simile a UNIX.

ripgrep, anche se il nome potrebbe suggerire il contrario, non intende sostituire grep perché si comporta in modo diverso. Ma entrambi gli strumenti sono comunque utili; dipende dal tuo caso d'uso.


Linux
  1. Come riavviare Linux utilizzando la riga di comando

  2. Comando Linux mv

  3. Linux du comando

  4. Come uccidere un processo su Linux usando il comando?

  5. 5 Esempi pratici di comandi per il fusore Linux

Ripgrep – Lo strumento di ricerca da riga di comando più veloce per Linux

Tutorial sull'uso del comando Timeout su Linux

Pianifica i lavori in Linux con il comando 'at'

Utilizzo del comando Watch in Linux

Trova comando in Linux/UNIX

Utilizzo di cut su terminale Linux