Lorsque vous ne transmettez aucun nom de fichier à ack, il fonctionne sur un ensemble de fichiers par défaut intégré qui exclut les fichiers binaires non reconnus. Si vous transmettez des noms de fichiers, il recherche tous les fichiers que vous transmettez. Cela explique la différence entre ack foo
et ack foo **
.
ack 1
Dans ack 1.x, utilisez l'indicateur -a
pour dire à ack de ne pas ignorer les fichiers dont il ne reconnaît pas le type.
Vous pouvez faire un alias si vous voulez ce drapeau le plus souvent: ajoutez la ligne alias ack='ack -a'
dans votre ~/.bashrc
ou ~/.zshrc
. Si vous configurez cet alias et souhaitez appeler ack
sans l'option, appelez \ack
(la barre oblique inverse désactive l'expansion d'alias). Les scripts ne sont pas affectés par l'alias, uniquement les shells interactifs.
Alternativement, vous pouvez ajouter l' -a
option à votre ~/.ackrc
.
Les correspondances dans les fichiers binaires seront répertoriées comme «correspondances de test1 du fichier binaire». Il n'y a aucun moyen de désactiver ce comportement sans modifier Ack lui-même (au moins en ajoutant un plugin).
ack 2
Dans ack 2.0, l' -a
option a été supprimée. Ce que vous pouvez faire à la place est de définir un type qui correspond à tous les fichiers et d'utiliser l' -k
option pour que ack inclue tous les fichiers de ce type. Notez que les types de fichiers sont traités dans un ordre imprévisible, ce qui entraînera un ensemble aléatoire de types binaires à traiter comme ordinaire plutôt que comme le type habituel.
ack --type-set='all:match:.*' -k foo
De cette façon, les correspondances sont imprimées même pour les fichiers qui auraient autrement l'air binaires. Comme ci-dessus, vous pouvez ajouter ces options à un alias ou à votre .ackrc
.