SilverSearcher — Почему я могу использовать `—ignore=PATTERN`, когда в документации указано `-ignore PATTERN` без знака равенства?

#ag

#ag

Вопрос:

Мне пришлось игнорировать несколько каталогов, поэтому я попытался

 ag --hidden --ignore '.git' --ignore 'plugged' -g ""
  

Но этот процесс повествования --ignore каждый раз, когда я пытался игнорировать каталог, казался ненужным. Итак, я попробовал с завершением фигурной скобки bash, как показано ниже:

 ag --hidden --ignore {.git,plugged} -g ""
  

Но это не сработало, и это справедливо. Потому что материал внутри фигурных скобок после завершения будет выглядеть как

 ag --hidden --ignore .git plugged -g ""
  

Немного просмотрев, я попробовал:

 ag --hidden --ignore={.git,plugged} -g ""
  

И это сработало. Но почему использование --ignore=PATTERN дает тот же результат, что и --ignore PATTERN , когда в документации (man ag) четко указано, как быть --ignore PATTERN ?

Ответ №1:

Это известная проблема с разбором командной строки ag по сравнению с ее документацией. Смотрите:

  1. https://github.com/ggreer/the_silver_searcher/issues/778
  2. https://github.com/ggreer/the_silver_searcher/pull/707

В данном конкретном случае, поскольку ag шаблон игнорирования правильно считывается со знаком равенства и без него, это больше похоже на недокументированную функцию, чем на короткое замыкание.