GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden des Befehls ripgrep (rg) unter Linux

ripgrep ist ein hervorragendes Ergebnis der RIIR-Bemühungen (re-write it in Rust), die in der Open-Source-Community vorangetrieben werden. Es soll ein besserer Ersatz für den klassischen grep-Befehl sein.

Die Syntax zur Verwendung von ripgrep lautet wie folgt:

rg <pattern> [files/directories]

Mit ripgrep muss kein Dateiname angegeben werden. Wenn kein Dateiname angegeben wird, werden alle Dateien durchsucht. Dies ist unglaublich hilfreich, wenn Sie nicht wissen, welche Datei das gesuchte Muster enthält.

Sie können auch grep verwenden, um in allen Dateien zu suchen, aber ripgrep erledigt dies ohne zusätzlichen Aufwand.

Was ist ripgrep?

ripgrep ist ein rekursives Tool zum Abgleich von Regex-Mustern, das Ihre Gitignore berücksichtigt. Wenn Sie bestimmte Dateien, Erweiterungen oder Verzeichnisse in Ihrem Gitignore haben, wird ripgrep diese ignorieren und die Ausführungszeit beschleunigen.

Einige Merkmale, die ripgrep hervorheben, sind die folgenden:

  • Sucht rekursiv in Verzeichnissen nach Mustern
  • Farbige Hervorhebung in der Ausgabe
  • Unterstützt eine Vielzahl von Kodierungsformaten wie UTF-8, SHIFT_JIS
  • Möglichkeit, in komprimierten ZIP-Dateien zu suchen
  • Ignoriert standardmäßig versteckte Dateien und verwendet Ihre Gitignore-Datei für eine schnellere Suche

Sie können es sich als grep vorstellen, aber in erster Linie darauf ausgerichtet, nach Dateien/Inhalten von Dateien zu suchen, anstatt nach dem rohen Bytestrom, mit dem sich grep befasst.

Installieren Sie ripgrep

Während grep auf den meisten Linux-Systemen vorinstalliert ist, hat ripgrep dieses Privileg nicht.

Es ist jedoch in den Repositories aller wichtigen Linux-Distributionen verfügbar, und Sie können den Paketmanager verwenden, um es zu installieren.

Wenn Sie ein Benutzer von Arch Linux sind, wissen Sie bereits, wie man Pakete installiert :p, aber dennoch sollten Sie diesen Befehl verwenden:

pacman -S ripgrep

Gentoo-Benutzer können ripgrep mit dem folgenden Befehl installieren:

emerge sys-apps/ripgrep

Wenn Sie Fedora oder Red Hat verwenden, kippen Sie Ihren Hut ein wenig, während Sie diesen Befehl in Ihr Terminal eingeben:

sudo dnf install ripgrep

Benutzer von openSUSE (15.1 und höher) sollten den folgenden Befehl in ihrem Terminal verwenden:

sudo zypper install ripgrep

Für Benutzer, die Debian Buster (v10) oder höher verwenden, verwenden Sie apt. Ubuntu Cosmic Cuttlefish (18.10) oder höher kann auch die offiziellen Repositories der Distribution verwenden.

sudo apt install ripgrep

Ripgrep-Befehl verwenden

Wenn Sie mit der Verwendung von grep-Befehlen vertraut sind, werden Sie feststellen, dass ripgrep ähnlich funktioniert. Sie geben ihm einen Suchstring und einen Dateinamen, und er durchsucht die Datei und zeigt Ihnen, wo der Eingabestring mit dem Dateiinhalt übereinstimmt.

Für dieses Tutorial habe ich das Repository des Dust-Projekts geklont und werde die Befehle im geklonten Repository ausführen.

Grundlegende Suchen

Eine Beispielsuche nach der Wortbeschreibung in der Datei Cargo.html:

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

Wie erwartet hat das ripgrep-Tool in der von mir angegebenen Datei gesucht und die Dateien mit übereinstimmendem Text und der Zeilennummer angezeigt.

Wenn Sie mehrere Dateien angeben, nach denen gesucht werden soll (wenn Sie keine Dateien angeben, wird nach allen gesucht), ermittelt ripgrep auch den Dateinamen, dessen Inhalt übereinstimmt.

Alternativ können Sie auch die Option '--file' verwenden, die das Muster enthält, das Sie abgleichen möchten. Wenn Sie regelmäßig nach übereinstimmenden Mustern suchen, können Sie diese in einer Datei speichern und mit der Option „--file“ angeben.

Manchmal ist es schön, einen Kontext der übereinstimmenden Zeile zu haben, besonders bei der Suche in einem Code-Repository. Hier hilft die Option '-C' oder '--context'. Diese Option akzeptiert einen numerischen Wert und zeigt Zeilen vor und nach dem Spiel an.

Es kann vorkommen, dass Sie nur ein paar Zeilen darüber sehen möchten, einschließlich der übereinstimmenden Zeile. Manchmal möchten Sie nur die Zeilen darunter, einschließlich der übereinstimmenden.

Sie können die Option '-A', kurz für '--after-context', und einen numerischen Wert verwenden, um Zeilen nach jedem Treffer anzuzeigen.

Und für Zeilen vor jedem Treffer können Sie die Option '-B', kurz für '--before-context', zusammen mit einem numerischen Wert verwenden.

Spalten

Es gibt mehrere Optionen bezüglich Spalten, die ripgrep bereitstellt.

Sie werden das '--column'-Flag zu schätzen wissen, wenn Sie ein vim-Benutzer sind. Es gibt die 'Zeile:Spalte' des übereinstimmenden Textes in der Datei aus.

Eine weitere Option in Bezug auf Spalten ist '-M' oder '--max-columns', die einen numerischen Wert für die maximale Anzahl von Spalten akzeptiert. Wenn die Anzahl der übereinstimmenden Zeilen überschritten wird, werden Sie darüber informiert, dass eine bestimmte Zeile bei der Ausgabe an das Terminal ausgelassen wurde.

Verschiedenes

Es gibt mehrere Optionen, die Sie mit ripgrep verwenden können.

Sie können die Option '-s' oder '--case-sensitive' verwenden, um Text mit Groß-/Kleinschreibung abzugleichen.

Wenn Sie die Groß-/Kleinschreibung nicht berücksichtigen möchten, können Sie das '-i'- oder '--ignore-case'-Flag verwenden.

Wenn Sie über eine große Codebasis verfügen, können Sie mehrere Threads für den Musterabgleich verwenden. Sie können Threads mit der Option „-j“ oder „--threads“ manuell angeben; es akzeptiert einen numerischen Wert.

$ rg -j 4 TODO

Es kann vorkommen, dass Sie ein Muster aus den Suchergebnissen ausschließen möchten. Dazu können Sie '-v' oder '--invert-match' verwenden, um das angegebene Muster auszuschließen.

ripgrep kann in einem komprimierten Archiv (wenn die komprimierte Datei eine Textdatei ist) nach Text suchen, indem es das Flag „-z“ oder „--search-zip“ verwendet. Dieses Flag wird normalerweise von dem Flag '-a' begleitet, das Binärdateien als Textdateien behandelt.

Schlussfolgerung

ripgrep ist ein fantastisches Tool, das Sie nutzen können, insbesondere als Programmierer in einer UNIX-ähnlichen Umgebung.

ripgrep, auch wenn der Name etwas anderes vermuten lässt, soll grep nicht ersetzen, da es sich anders verhält. Aber beide Tools sind trotzdem hilfreich; es hängt von Ihrem Anwendungsfall ab.


Linux
  1. Linux-mv-Befehl

  2. Linux-Du-Befehl

  3. Wie beendet man einen Prozess unter Linux mit dem Befehl?

  4. 5 praktische Linux-Fuser-Befehlsbeispiele

  5. Beispiele für die Verwendung des Befehls dmsetup unter Linux

Ripgrep – Das schnellste Kommandozeilen-Suchtool für Linux

Tutorial zur Verwendung des Timeout-Befehls unter Linux

Planen Sie Jobs in Linux mit dem Befehl 'at'

Verwenden des Watch-Befehls unter Linux

Finden Sie Befehl in Linux/UNIX

Cut auf Linux Terminal verwenden