Wenn Sie ack keinen Dateinamen übergeben, wird ein integrierter Standardsatz von Dateien verarbeitet, der nicht erkannte Binärdateien ausschließt. Wenn Sie Dateinamen übergeben, werden alle übergebenen Dateien durchsucht. Dies erklärt den Unterschied zwischen ack foo
und ack foo **
.
ack 1
Verwenden Sie in ack 1.x das Flag -a
, um ack anzuweisen, keine Dateien zu überspringen, deren Typ nicht erkannt wird.
Sie können einen Alias erstellen, wenn Sie dieses Flag häufiger als gewünscht verwenden möchten: Fügen Sie die Zeile alias ack='ack -a'
in Ihr ~/.bashrc
oder ein ~/.zshrc
. Wenn Sie diesen Alias einrichten und ack
ohne die Option aufrufen möchten , rufen Sie auf \ack
(der umgekehrte Schrägstrich deaktiviert die Aliaserweiterung). Skripte sind nicht vom Alias betroffen, sondern nur interaktive Shells.
Alternativ können Sie die -a
Option zu Ihrer hinzufügen ~/.ackrc
.
Übereinstimmungen in Binärdateien werden als "Übereinstimmungen mit Binärdatei test1" aufgeführt. Es gibt keine Möglichkeit, dieses Verhalten zu deaktivieren, ohne Ack selbst zu ändern (zumindest ein Plugin hinzuzufügen).
ack 2
In ack 2.0 wurde die -a
Option entfernt. Sie können stattdessen einen Typ definieren, der allen Dateien entspricht, und die -k
Option verwenden, um sicherzustellen, dass alle Dateien dieses Typs mit einbezogen werden. Beachten Sie, dass Dateitypen in einer unvorhersehbaren Reihenfolge verarbeitet werden. Dies führt dazu, dass eine zufällige Menge von Binärtypen wie gewohnt und nicht wie gewohnt verarbeitet wird.
ack --type-set='all:match:.*' -k foo
Auf diese Weise werden die Übereinstimmungen auch für Dateien gedruckt, die ansonsten binär aussehen würden. Wie oben können Sie diese Optionen zu einem Alias oder zu Ihrem hinzufügen .ackrc
.