Когда вы не передаете имя файла в ack, он работает со встроенным набором файлов по умолчанию, который исключает нераспознанные двоичные файлы. Если вы передаете имена файлов, он ищет все файлы, которые вы передаете. Это объясняет разницу между ack foo
и ack foo **
.
кв 1
В ack 1.x используйте флаг, -a
чтобы ack не пропускал файлы, тип которых он не распознает.
Вы можете сделать псевдоним, если вы хотите, чтобы этот флаг чаще, чем нет: добавьте строку alias ack='ack -a'
в ваш ~/.bashrc
или ~/.zshrc
. Если вы установили этот псевдоним и хотите позвонить ack
без опции, вызовите \ack
(обратная косая черта отключает расширение псевдонима). На псевдонимы скрипты не влияют, только интерактивные оболочки.
Кроме того, вы можете добавить -a
опцию к вашему ~/.ackrc
.
Совпадения в двоичных файлах будут перечислены как «совпадения двоичного файла test1». Нет способа отключить это поведение без изменения самого Ack (по крайней мере, добавления плагина).
кв 2
В ack 2.0 -a
опция была удалена. Вместо этого вы можете определить тип, соответствующий всем файлам, и использовать -k
опцию, чтобы ack включал все файлы этого типа. Обратите внимание, что типы файлов обрабатываются в непредсказуемом порядке, поэтому случайный набор двоичных типов будет обрабатываться как обычный, а не как обычный тип.
ack --type-set='all:match:.*' -k foo
Таким образом, совпадения печатаются даже для файлов, которые в противном случае выглядели бы двоичными. Как и выше, вы можете добавить эти параметры к псевдониму или вашему .ackrc
.