Mit dem Linux-Betriebssystem können Sie sowohl Verzeichnisstrukturen als auch Verzeichnisdateien nach Übereinstimmungen mit bestimmten Textzeichenfolgen durchsuchen. Ein gängiges Tool, das uns bei der Durchführung dieser Verzeichnissuchen hilft, ist ein grep (globaler regulärer Ausdruck print ) Befehl. Die Verwendung von regulären Ausdrücken durch grep macht es möglich, eine Suche nach Zeichenfolgenmustern in Richtung einer übereinstimmenden Textausgabe auf der Befehlszeile zu initiieren.
[Das könnte Ihnen auch gefallen:Ripgrep – Das schnellste Kommandozeilen-Suchtool für Linux ]
Die Nachteile von grep sind in seiner Geschwindigkeit und nicht flexiblen Eigenschaften. Hier ist das ack Werkzeug übernimmt. Es bietet schnelle Suchvorgänge, die sich auf Quellcode-Verzeichnissuchen erstrecken, und gibt einem Linux-Benutzer die Flexibilität, bestimmte Ausgaben aus den Suchergebnissen auszuschließen.
So installieren Sie Ack unter Linux
Jede von Perl unterstützte Plattform kann den ack aufnehmen Suchwerkzeug. Wir installieren es, indem wir auf sein Hauptpaket ack-grep verweisen .
$ sudo apt-get install ack-grep [On Debian, Ubuntu and Mint] $ sudo yum install ack-grep [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/ack-grep [On Gentoo Linux] $ sudo pacman -S ack-grep [On Arch Linux] $ sudo zypper install ack-grep [On OpenSUSE]
Verzeichnissuche bestätigen
Seit ack als quellcodeorientiert bezeichnet wird, können wir seine Fähigkeit zur Suche nach Zeichenfolgenmustern anhand eines Quellcodeverzeichnisses demonstrieren. Github ist eine renommierte Ressource für Tausende von Quellcode-Verzeichnissen. Ein ideales Projekt-Quellcode-Verzeichnis für diesen Artikelleitfaden ist das neovim-Projekt.
Git unter Linux installieren
$ sudo apt-get install git [On Debian, Ubuntu and Mint] $ sudo yum install git [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/git [On Gentoo Linux] $ sudo pacman -S git [On Arch Linux] $ sudo zypper install git [On OpenSUSE]
Neovim-Projekt klonen
Die vielen verschiedenen Dateitypen in diesem neovim-Texteditor-Projekt sind für unseren Artikelleitfaden notwendig.
$ git clone https://github.com/neovim/neovim.git
Navigieren Sie zu neovim geklontes Verzeichnis, um mit unserem Tutorial zu beginnen.
$ cd neovim && ls
Das aufgelistete Verzeichnis der obersten Ebene macht Markdown-Dateien (.md)
verfügbar , Textdateien (.txt)
und eine YAML-Datei.
Einfache Ack-Suchbefehle implementieren
Da die meisten Suchanfragen aus dem Linux-Terminalfenster wegen unendlicher Ausgaben zu unkontrollierbarem Scrollen führen, können wir diese Suchergebnisse auf „weniger umleiten ” für Ergebnisinstanzen, die die normale Terminalfenstergröße überschreiten.
$ echo '--pager=less -RFX' >> ~/.ackrc
Die obige Bestätigung Konfigurationsbefehl handhabt überlaufende Ergebnisausgaben intelligent.
Ermitteln der Gesamtzahl der Dateien in einem Verzeichnis
Dieses erste Befehlsbeispiel hilft uns, die logische Effizienz von ack zu erkennen Suche von grep Suche. Durch grep , können wir die Gesamtzahl der Dateien auf dem geklonten neovim ermitteln Projekt durch den folgenden Befehl:
$ find . | wc -l
Bestätigen zählt nur Dateien, die seiner Meinung nach logisch relevant sind, daher wird seine Ausgabe anders sein.
$ ack -f | wc -l
Die oben genannten 7 % (2984-2772 ) ignorierte Dateien werden von allen ack ignoriert Suchanfragen.
Suchen einer bestimmten Zeichenfolgenmustervariation aus einem Verzeichnis
Versuchen wir, die momentanen Vorkommen des Zeichenkettenmusters „restrict“ abzufragen “.
$ ack restrict
Die obigen Ausgaben verweisen auf die genauen Zeilennummern in den Dateien, die die Zeichenfolgenmusterübereinstimmung enthalten. Das ausgegebene Rastermuster ergibt „Einschränken “ sind auch Bestandteile von Wörtern wie eingeschränkt und Einschränkung .
Ein bestimmtes Zeichenfolgenmusterwort aus einem Verzeichnis finden
Wenn Sie nicht daran interessiert sind, dass ein Suchergebnis als Variation, sondern als vollständiges Wort erscheint, müssen Sie Ihre Suchzeichenfolgenmuster anders implementieren.
$ ack -w restrict
Wie Sie sehen können, sucht das Suchzeichenfolgenmuster nach „Einschränken ” als vollständiges Wort und nicht als Teil eines anderen Wortvorkommens.
Suchen eines bestimmten Zeichenfolgenmusters aus einem bestimmten Dateityp
Vielleicht möchten Sie, dass Ihre Suche nach Zeichenfolgenmustern auf eine bestimmte Datei wie Python abzielt (--python)
Datei, c (--c)
Datei, vim (--vim)
Datei oder einen anderen Dateityp, sollte Ihre Zeichenfolgenmusterabfrage auf den gesuchten Dateityp verweisen.
$ ack -w --python restrict
Die obige Befehlsausgabe weist auf das Auftreten des Wortes „restrict ” auf der Linie 110 in der Python-Datei „src/clint.py “.
Ermitteln des Gesamtvorkommens einer Zeichenfolgenmustersuche in jeder Datei
Da die geklonten neovim Verzeichnis, das wir verwenden, unterschiedliche Dateitypen hat, zählt dieser Befehl das Auftreten einer bestimmten Zeichenfolgenmustersuche (restrict ) in jedem dieser Dateitypen.
$ ack -c restrict
Steuern der Ausgabe einer Zeichenfolgenmustersuche
Die obige Befehlsausgabe enthält Dateien mit Null-String-Musterübereinstimmungen für die angegebene String-Eingabe. Um sie zu vermeiden, gibt der folgende Befehl die Gesamtzahl der Dateizeilen aus, die mit einer angegebenen Zeichenfolgenmustereingabe übereinstimmen.
$ ack -ch restrict
Wir können die obige Ausgabe kleiner und genauer machen, indem wir die Suchausgabe anweisen, nur vollständige Wörter und keine Wortvarianten zu berücksichtigen.
$ ack -ch -w restrict
Wir können das obige Befehlsergebnis auch einschränken, um nur Python-Dateien zu berücksichtigen:
$ ack -ch -w --python restrict
Wir können auch die Zeit verwenden Befehl, um die Geschwindigkeit unserer Suchen zu überwachen:
$ time ack -ch restrict
Indem wir in unseren Suchmusterkriterien spezifischer sind, erhalten wir im Vergleich zu den obigen Ergebnissen eine schnellere Ausgabe, wie unten gezeigt.
$ time ack -ch -w --python restrict
Wir könnten auch die tatsächlichen Dateinamen ausgeben, die einem Suchmuster entsprechen.
$ ack -f --python
Das ack-Suchmuster könnte auch auf die Namenskonvention einer Datei abzielen. Irgendein C Datei mit der „log “ kann mit dem folgenden Befehl abgeglichen werden:
$ ack -g log --cc
Die Bestätigung Suchwerkzeug ist sehr flexibel, wenn es unter einem Quellcodeverzeichnis gehandhabt wird. Sie können seine Verwendung immer noch auf Dateien in Ihrer Linux-Umgebung anwenden. Es ist erweiterbar und schnell. Verwenden Sie den man ack
Befehl, um weitere Optionen zum Erkunden dieses schnellen und leichten Tools zu finden.