Quando você não passa nenhum nome de arquivo para ack, ele opera em um conjunto de arquivos padrão que exclui arquivos binários não reconhecidos. Se você passar nomes de arquivos, ele procurará em todos os arquivos que você passar. Isso explica a diferença entre ack foo
e ack foo **
.
ack 1
No ack 1.x, use o sinalizador -a
para informar à ack para não ignorar arquivos cujo tipo não reconhece.
Você pode criar um alias se desejar esse sinalizador com mais frequência: adicione a linha alias ack='ack -a'
em ~/.bashrc
ou ~/.zshrc
. Se você configurar esse alias e quiser chamar ack
sem a opção, chame \ack
(a barra invertida desativa a expansão de alias). Os scripts não são afetados pelo alias, apenas shells interativos.
Como alternativa, você pode adicionar a opção -a
ao seu ~/.ackrc
.
As correspondências nos arquivos binários serão listadas como “Correspondências do test1 do arquivo binário”. Não há como desabilitar esse comportamento sem modificar o próprio Ack (pelo menos adicionando um plugin).
ack 2
No ack 2.0, a opção -a
foi removida. O que você pode fazer é definir um tipo que corresponda a todos os arquivos e usar a opção -k
para fazer com que o ack inclua todos os arquivos desse tipo. Observe que os tipos de arquivo são processados em uma ordem imprevisível, fazendo com que um conjunto aleatório de tipos binários seja processado como normal, em vez de como o tipo usual.
ack --type-set='all:match:.*' -k foo
Dessa forma, as correspondências são impressas até mesmo para arquivos que, de outra forma, pareceriam binários. Como acima, você pode adicionar essas opções a um alias ou ao seu .ackrc
.