Ack: Eine bessere Grep
Wenn Sie überhaupt Erfahrung mit der Linux-Befehlszeile haben, haben Sie zweifellos "grep" verwendet, um nach Textzeichenfolgen zu suchen, unabhängig davon, ob sie aus Dateien oder Befehlen stammen. Es gibt einen besseren Weg, und es heißt Ack.
Ack ist ein in Perl geschriebenes Programm, das den ehrwürdigen alten Grep ersetzen soll, der seit Anfang der 70er Jahre existiert. (Falls Sie sich fragen, steht grep für "Global Regular Expression Print".)
Acks Autor, Andy Lester, ist so zuversichtlich, dass Ack besser ist als Grep, dass die Website seines Projekts besserthreprep.com heißt.
Sie können es auf verschiedene Arten bekommen. Wenn Sie ein normaler Perl-Benutzer sind, können Sie ihn mit CPAN installieren, vielleicht mit Perlbrew, wie ich es in einem früheren Artikel beschrieben habe. Cpanminus ist ein beliebter leichter CPAN-Client. Um Ack damit zu installieren, benutze einfach diesen Befehl:
cpanm App :: Ack
Natürlich, wenn Sie Ubuntu verwenden und es über apt-get installieren möchten, können Sie das auch tun, obwohl Ubuntu normalerweise hinter der neuesten Version des Entwicklers steht. Verwenden Sie einfach diesen Befehl:
sudo apt-get installieren ack-grep
Sie können Ack so gut wie möglich mit grep verwenden. Um beispielsweise den Namen "maketecheasier" in der Datei mte.txt zu finden, verwenden Sie einfach diesen Befehl:
ack maktecheasier mte.txt
Oder Sie können die Ausgabe dorthin umleiten:
Katze | ack maketecheasier
Eine der wichtigsten Funktionen, die neue Benutzer bemerken werden, besteht darin, dass sie die Suchzeichenfolge in der Ausgabe optisch hervorhebt, sodass Sie genau sehen können, ob Sie tatsächlich mit dem übereinstimmen, was Sie suchen.
Wenn Sie mit einem komplizierten regulären Ausdruck suchen, können Sie sehen, was genau übereinstimmt, und auch falsche Positive erkennen.
Ein weiteres nützliches Feature ist, dass Ack automatisch rekursiv nach Dateien sucht. Das bedeutet, dass Ack nicht nur alle Dateien in einem Verzeichnis durchsucht, wenn Sie ihm eins geben, wenn dieses Verzeichnis andere Verzeichnisse enthält, sondern auch diese, bis Sie am Ende der Verzeichnisstruktur angelangt sind. Dies ist besonders nützlich für Programmierer (und wenn Sie eine sind, wissen Sie wahrscheinlich bereits, was rekursive bedeutet), aber es ist auch sehr nützlich, wenn Sie nach einem Muster in einer Reihe von einfachen Textdateien suchen.
Apropos Programmierung: Sie können Ihre Suche auf eine Vielzahl von gängigen Programmiersprachen eingrenzen. Hier ist ein Beispiel mit Perl:
ack --perl 'somepattern' / mein / Verzeichnis
Sie können noch mehr Beispiele im Abschnitt "Ack's Dateitypen" der Dokumentation finden.
Da Ack in Perl geschrieben ist, ist es automatisch mit den regulären Ausdrücken von Perl kompatibel. Reguläre Ausdrücke sind eine Art supergenaue Textsuche, mit der Sie sehr spezifische Textmuster finden können.
Das beste und lustigste Feature ist die Option " --thpppt
", die eine ASCII-Zeichnung von Bill the Cat aufruft:
_ / | \ 'oO' = (___) = U ack --thppt!
Da Unix und Linux es relativ einfach machen, Programme zu schreiben, ist es möglich, leicht Ersatz für gängige Systemprogramme zu erstellen. Ack ist einer von denen, die die Kreativität der Perl- und Unix / Linux-Communities zeigen.