Website-Suche

Ack: Ein besserer Grep


Wenn Sie Erfahrung mit der Linux-Befehlszeile haben, haben Sie zweifellos „grep“ verwendet, um nach Textzeichenfolgen zu suchen, unabhängig davon, ob diese aus Dateien oder Befehlen stammen. Es gibt einen besseren Weg, und er heißt Ack.

Ack ist ein in Perl geschriebenes Programm, das als Ersatz für das ehrwürdige alte Grep dienen soll, das es seit den frühen 70er Jahren gibt. (Falls Sie sich fragen: grep steht für „Global Regular Expression Print“.)

Der Autor von Ack, Andy Lester, ist so überzeugt, dass Ack besser als grep ist, dass die Website seines Projekts den Namen betterthangrep.com trägt.

Sie können es auf verschiedene Arten erhalten. Wenn Sie ein regelmäßiger Perl-Benutzer sind, können Sie es mit CPAN installieren, vielleicht mit Perlbrew, wie ich in einem früheren Artikel beschrieben habe. Cpanminus ist ein beliebter, leichter CPAN-Client. Um Ack damit zu installieren, verwenden Sie einfach diesen Befehl:

cpanm App::Ack

Wenn Sie Ubuntu verwenden und es über apt-get installieren möchten, können Sie dies natürlich auch tun, obwohl Ubuntu tendenziell hinter der neuesten Version des Entwicklers zurückbleibt. Verwenden Sie einfach diesen Befehl:

sudo apt-get install ack-grep

Sie können Ack fast genauso verwenden wie grep. 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:

cat | ack maketecheasier

Eines der wichtigsten Features, die neuen Benutzern auffallen werden, ist die schöne visuelle Hervorhebung Ihrer Suchzeichenfolge in der Ausgabe, sodass Sie genau sehen können, ob Sie tatsächlich das finden, was Sie suchen.

Wenn Sie mit einem komplizierten regulären Ausdruck gesucht haben, können Sie sehen, was genau übereinstimmt, und gleichzeitig Fehlalarme erkennen.

Eine weitere nützliche Funktion ist, dass Ack Dateien automatisch rekursiv durchsucht. Das bedeutet, dass Ack nicht nur alle Dateien in einem Verzeichnis durchsucht, wenn Sie ihm eines geben, sondern auch, wenn dieses Verzeichnis andere Verzeichnisse enthält, diese durchsucht, bis Sie das Ende des Verzeichnisbaums erreichen. Dies ist besonders nützlich für Programmierer (und wenn Sie einer sind, wissen Sie wahrscheinlich bereits, was rekursiv bedeutet), aber es ist auch sehr nützlich, wenn Sie nach einem Muster in einer Reihe einfacher Textdateien suchen.

Apropos Programmieren: Sie können Ihre Suche auf eine Vielzahl beliebter Programmiersprachen eingrenzen. Hier ist ein Beispiel mit Perl:

ack --perl 'somepattern' /my/directory

Weitere Beispiele finden Sie im Abschnitt „Ack-Dateitypen“ der Dokumentation.

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 hochpräzise Textsuche, mit der Sie ganz bestimmte Textmuster finden können.

Das beste und lustigste Feature ist die Option „--thpppt“, die eine ASCII-Kunstzeichnung von Bill the Cat aufruft:

_   /|
\'o.O'
=(___)=
   U    ack --thppt!

Da Unix und Linux das Schreiben von Programmen relativ einfach machen, ist es möglich, problemlos Ersatz für gängige Systemprogramme zu erstellen. Ack ist einer von denen, die die Kreativität der Perl- und Unix/Linux-Communitys zeigen.