Wie man im Linux-Terminal sucht und schnell alles findet - Machen Sie Technik einfacher

Index
  1. Text in Dateien mit grep suchen
    1. grep mit anderen Befehlen kombinieren
  2. grep vs ripgrep: Was ist der Unterschied und welchen sollten Sie verwenden
  3. Finden von Dateien und Verzeichnissen mit find
  4. Interaktive Suche mit fzf
  5. Intelligente Datei-Filterung mit ack
  6. Abschließende Gedanken

Entdecken Sie effektive Suchmethoden im Linux-Terminal, von der Nutzung des grep-Befehls über interaktive Tools bis hin zu spezialisierten Funktionen für Entwickler.

Das Terminal ist gut für das Ausführen von Aufgaben. Eine der Aufgaben, die ich meiner Meinung nach schneller im Terminal erledigen kann als in der grafischen Benutzeroberfläche, ist die terminalbasierte Suche. Mit verschiedenen Linux-Befehlen können Sie ganz einfach und schnell alles finden, ohne durch Dateien und Ordner in einem grafischen Dateimanager zu graben. Lassen Sie uns erkunden, wie Sie im Linux-Terminal suchen und alles finden können, wonach Sie suchen.

Text in Dateien mit grep suchen

Wenn Sie nur einen Suchbefehl lernen, dann lernen Sie grep. Der Name steht für Global Regular Expression Print, und seine Aufgabe ist einfach: Innerhalb von Dateien nach bestimmten Textmustern suchen. Es ist standardmäßig auf den meisten Linux- (und macOS-) Systemen installiert.

Die Syntax ist einfach; Sie müssen nur grep zusammen mit Ihrem gewünschten Suchmuster verwenden. Angenommen, Sie möchten jede Zeile finden, die das Wort Fehler in einer Datei erwähnt. Das können Sie so machen:

grep "error" fileserver.log

Es gibt jede Zeile aus, die das Wort Fehler enthält. Wenn Sie die Groß-/Kleinschreibung ignorieren möchten (so dass es auch Error, ERROR usw. erkennt), fügen Sie einfach die -i Flagge so hinzu:

grep -i "error" fileserver.log

Wenn Sie sich nicht sicher sind, wo sich die Datei befindet, und Sie in einem gesamten Verzeichnis suchen möchten, verwenden Sie die -r (rekursive) Option:

grep -r "TODO"

Dies durchsucht jede Datei im aktuellen Ordner und in allen Unterordnern nach dem Wort „TODO“.

Manchmal möchten Sie alles sehen, außer Ihrem Suchbegriff. Die -v Flagge kehrt die Suche um und zeigt nur die Zeilen an, die nicht übereinstimmen. Das ist fantastisch, um Rauschen aus Protokolldateien herauszufiltern.

grep -v "DEBUG" app.log

Das zeigt mir alles, was keine Debug-Nachricht ist.

grep mit anderen Befehlen kombinieren

Sie können grep auch mit anderen Befehlen kombinieren. Zum Beispiel können Sie die Ausgabe eines Befehls direkt in einen anderen pipen (mit dem | Symbol). Damit können Sie Befehle verketten. Angenommen, Sie möchten alle SSH-Prozesse sehen, die auf Ihrem System ausgeführt werden. Sie können alle Prozesse auflisten und dann diese große Liste in grep pipen:

ps aux | grep "ssh"

Der ps aux Befehl könnte 300 Prozesse auflisten, aber grep filtert es auf den einen oder zwei, die Sie tatsächlich interessieren. Sie können dies für alles verwenden.

grep unterstützt auch reguläre Ausdrücke für fortgeschrittenere Muster. Sie können nach Dingen suchen wie jede Zeile, die mit einer Zahl beginnt, oder E-Mail-Adressen oder Telefonnummern in einem bestimmten Format. Zum Beispiel, um Zeilen zu finden, die mit einer Zahl beginnen, verwenden Sie:

grep "^[0-9]" file.txt

Hier wird die Lernkurve steiler, aber der Gewinn ist enorm.

grep vs ripgrep: Was ist der Unterschied und welchen sollten Sie verwenden

Sie wissen bereits, wie nützlich grep für die Suche nach Text in Dateien ist, aber es gibt eine schnellere und modernere Alternative namens ripgrep (rg). Es funktioniert fast genauso wie grep, bietet jedoch eine viel bessere Leistung und angenehmere Standardeinstellungen.

Der Hauptunterschied ist die Geschwindigkeit. Während grep Dateien sequenziell verarbeitet, enthält ripgrep Optimierungen (einschließlich Multithreading und das Überspringen irrelevanter Dateien), die es oft viel schneller machen. Bei großen Projekten kann eine Suche, die grep 30 Sekunden kostet, in weniger als einer mit ripgrep erledigt werden. Es ist in Rust geschrieben und optimiert, um große Verzeichnisse effizient zu handhaben.

Im Gegensatz zu grep ist ripgrep nicht standardmäßig installiert. Sie müssen es mit Ihrem Paketmanager auf Ihrem System installieren. Zum Beispiel, auf Ubuntu/Debian, verwenden Sie:

sudo apt install ripgrep

Sobald es installiert ist, verwenden Sie es fast genau wie grep:

rg "TODO"

Dieser Befehl durchsucht alle Dateien im aktuellen Ordner und seinen Unterordnern. ripgrep überspringt automatisch versteckte Dateien, .git-Verzeichnisse und Binärdateien, so dass Sie nur relevante Ergebnisse sehen. Es zeigt auch standardmäßig Zeilennummern und farbige Hervorhebungen an.

Kurz gesagt, beide.

Tools erfüllen oft die gleiche Aufgabe, aber Ripgrep ist schneller und komfortabler für den täglichen Gebrauch, insbesondere bei der Durchsuchung großer Projekte. Grep bleibt jedoch nützlich, wenn Sie auf Systemen arbeiten, auf denen Sie keine neue Software installieren können, oder wenn Sie ein Tool benötigen, das standardmäßig überall verfügbar ist.

Finden von Dateien und Verzeichnissen mit find

Während grep Ihnen hilft, in Dateien zu suchen, unterstützt Sie der find-Befehl dabei, die Dateien und Ordner selbst zu lokalisieren. Dies ist das richtige Tool, wenn Sie den Namen oder Typ des Gesuchten kennen, aber nicht wissen, wo es gespeichert ist. Sie können nach Namen, Größe, Änderungszeit, Berechtigungen, Dateityp und nahezu jedem Attribut suchen, das Ihnen einfällt.

Die grundlegende Syntax sieht so aus:

find /path -name "dateiname"

Dieser Befehl weist find an, ab dem angegebenen Pfad zu suchen und nach Dateien zu suchen, die dem angegebenen Namen entsprechen. Zum Beispiel, wenn Sie eine fehlende Konfigurationsdatei aufspüren möchten, führen Sie Folgendes aus:

find /etc -name "config.json"

Standardmäßig ist -name groß-/kleinschreibungssensitiv. Wenn Sie sich über die Großschreibung nicht sicher sind, wechseln Sie zu -iname für eine groß-/kleinschreibungsunempfindliche Suche:

find . -iname "readme.md"

Der Punkt (.) bedeutet, im aktuellen Verzeichnis zu beginnen. find kann weit mehr als nur namensbasierte Suchen durchführen. Sie können Ergebnisse filtern, basierend darauf, wann Dateien zuletzt geändert wurden, was nützlich ist, wenn Sie Protokolle oder Backups aufräumen. Zum Beispiel listet dieser Befehl alle Protokolldateien auf, die in den letzten drei Tagen geändert wurden:

find /var/log -name "*.log" -mtime -3

Der Sternchen (*) wirkt als Platzhalter und stimmt mit beliebigen Zeichen überein. Sie können es auch verwenden, um große Dateien zu finden, die möglicherweise Ihren Speicherplatz füllen.

Interaktive Suche mit fzf

fzf steht für fuzzy finder und ist im Grunde ein interaktives Suchwerkzeug für Ihr Terminal. Es ist ein unscharfer Filter, in den Sie Dinge hineinpipe. Es bietet Ihnen eine superschnelle Ausgabe, eine Suchleiste, die während des Tippens Ergebnisse anzeigt. Sie müssen auch nicht präzise sein; wenn Sie nach „react_component.js“ suchen, können Sie einfach rctjs eingeben, und fzf versteht, was Sie meinen.

Um es zu verwenden, müssen Sie es mit Ihrem Paketmanager auf Ihrem System installieren. Auf Ubuntu/Debian führen Sie Folgendes aus:

sudo apt install fzf

Sobald es installiert ist, können Sie fzf ganz einfach verwenden, indem Sie einfach eintippen:

fzf

Sie erhalten sofort eine durchsuchbare Liste von Dateien in Ihrem aktuellen Ordner. Während Sie tippen, werden die Ergebnisse in Echtzeit gefiltert. Sie können mit den Pfeiltasten navigieren und die Eingabetaste drücken, um einen auszuwählen.

Sie können es auch mit find kombinieren. Zum Beispiel:

find . -type f | fzf

Das ermöglicht Ihnen, eine Datei interaktiv aus der Liste auszuwählen, die find erzeugt.

Sie können es sogar verwenden, um Ihre Befehls historie zu durchsuchen:

history | fzf

Damit können Sie interaktiv in Ihrer Befehls historie suchen. Sie finden schnell den Befehl, den Sie vor drei Tagen ausgeführt haben, sich aber nicht ganz erinnern können. Tippen Sie ein paar Buchstaben, finden Sie es, drücken Sie die Eingabetaste, und es ist bereit zur Ausführung.

Intelligente Datei-Filterung mit ack

ack ähnelt grep, ist aber speziell für die Durchsuchung von Code entwickelt. Es überspringt automatisch irrelevante Dateien (wie Binaries, Protokolle oder Versionskontrollordner), was es perfekt für Entwickler macht. Es ist nicht standardmäßig verfügbar, Sie müssen es auf Ihrem System installieren. Zum Beispiel, wenn Sie Ubuntu verwenden, führen Sie Folgendes aus:

sudo apt install ack

Sobald es installiert ist, können Sie es verwenden, um alles zu durchsuchen. Zum Beispiel, um eine Funktionsdefinition in Python-Dateien zu suchen, verwenden Sie:

ack --python "def my_function"

Wollen Sie jeden TODO-Kommentar in Ihrem Projekt finden? Führen Sie Folgendes aus:

ack "TODO"

Sie können es auch mit gängigen Flags verwenden, zum Beispiel, wenn Sie eine...

Fallunempfindliche Suche mit Zeilennummern, führen Sie aus:

ack -i -n "config"

Darüber hinaus kennt ack bereits gängige Dateitypen. Sie können nur in JavaScript-Dateien, Python-Dateien oder Markdown-Dateien suchen, indem Sie Flags wie --js oder --python verwenden.

Früher, bevor ripgrep auf den Plan trat, war ack das bevorzugte Werkzeug für Entwickler. Heute ist ripgrep schneller, aber ack hat immer noch seinen Reiz durch lesbare Ausgaben und entwicklerfreundliche Filterung.

Abschließende Gedanken

Das Linux-Terminal kann anfangs einschüchternd wirken, aber sobald Sie diese Suchwerkzeuge verwenden, wird es Teil Ihres täglichen Workflows. Wenn Sie sich damit wohlfühlen, können Sie auch Aliase in Ihrer Shell erstellen, damit Sie sich keine langen Befehle merken müssen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Go up