Quando você não passa um nome de arquivo para confirmação, ele opera em um conjunto de arquivos padrão interno 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 ao ack para não ignorar arquivos cujo tipo ele não reconhece.
Você pode criar um alias se desejar que o sinalizador seja mais frequente: adicione a linha alias ack='ack -a'
no seu ~/.bashrc
ou ~/.zshrc
. Se você configurar esse alias e quiser chamar ack
sem a opção, ligue \ack
(a barra invertida desativa a expansão do alias). Os scripts não são afetados pelo alias, apenas shells interativos.
Como alternativa, você pode adicionar a -a
opção ao seu ~/.ackrc
.
As correspondências nos arquivos binários serão listadas como "Correspondências nos arquivos binários test1". Não há como desativar esse comportamento sem modificar o próprio Ack (pelo menos adicionar um plug-in).
ack 2
No ack 2.0, a -a
opção foi removida. O que você pode fazer é definir um tipo que corresponda a todos os arquivos e usar a -k
opção 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, pois isso fará com que um conjunto aleatório de tipos binários seja processado como normal, em vez do tipo usual.
ack --type-set='all:match:.*' -k foo
Dessa forma, as correspondências são impressas 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
.