Можно ли добавить параметр -G в ~/.ackrc

Когда я делаю

ack -G "^.*$" "foo"

Я получаю результаты... но когда я ставлю

-G "^.*$"

or

-G="^.*$"

or

-G
"^.*$"

в моем `~/.ackrc/ я не получаю результатов... Кто-нибудь знает, можно ли использовать -G в ackrc?


ack
person Aaron Gibralter    schedule 24.03.2011    source источник
comment
Просто для проверки работоспособности вы не используете --noenv, не так ли? Работают ли другие параметры при размещении в ~/.ackrc?   -  person Greg Hewgill    schedule 25.03.2011
comment
Да, я удалил все из ~/.ackrc, кроме -G="^.*$", и запустил ack "foo" из командной строки. Ничего не появилось... но затем, когда я удаляю строку из ~/.ackrc, я получаю результаты для foo.   -  person Aaron Gibralter    schedule 25.03.2011


Ответы (2)


Это проблема цитирования. При выполнении в командной строке:

$ ack -G="^.*$"

ack фактически видит следующую опцию командной строки (после обработки кавычек оболочкой)

-G=^.*$

без кавычек. Поскольку файл ~/.ackrc читается без обработки кавычек оболочки, поместите приведенную выше строку без кавычек в ~/.ackrc.

Обновление: это только половина дела. Похоже, вам нужно использовать следующую строку в ~/.ackrc:

-G^.*$

Я не совсем уверен, почему = там не разрешено, но включение его делает его частью шаблона, что, очевидно, не то, что вам нужно.

person Greg Hewgill    schedule 24.03.2011
comment
К сожалению, похоже, это не имеет значения. Когда у меня есть -G=^.*$ как единственная строка в ~/.ackrc, я все равно не получаю результатов... - person Aaron Gibralter; 25.03.2011
comment
Что вы на самом деле пытаетесь сделать с этим? Подойдет ли вам вариант -a? - person Greg Hewgill; 25.03.2011
comment
Я пытаюсь игнорировать каталоги с небольшим интеллектом. Я пытаюсь сделать что-то вроде этого: -name" title="ack, исключая только один каталог, но сохраняя все остальные с тем же именем"> stackoverflow.com/questions/2799570/. Я хочу --ignore-dir vendor, но не app/javascripts/vendor... - person Aaron Gibralter; 25.03.2011
comment
БИНГО! Вы исправили это обновление. Я в основном хотел этого: -G^(?!vendor|log|tmp|doc|coverage|public/app).*$ чтобы иметь более тонкий контроль над тем, как каталоги игнорируются. - person Aaron Gibralter; 25.03.2011

Вы могли бы использовать псевдоним ack для ack -G ?

person Paul Creasey    schedule 24.03.2011