$ nginx -V 2>&1 | grep -- '--with-debug'
Не совсем понятно что означает такой синтаксис команды grep. А именно первые два тире --. Может опечатка?
Кажется врубился, это хак чтобы защитить шаблон начинающийся на -. Вот нормальная человеческая версия:
$ nginx -V 2>&1 | grep -e '--with-debug'
Ответ
это синтаксическая конструкция, описанная в стандарте posix для всех программ, следующих этому стандарту (а не только для конкретной программы grep):
Guideline 10
The first -- argument that is not an option-argument should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character.
мой вольный перевод:
первый аргумент --, не являющийся аргументом-опцией (т.е., насколько я понимаю, частью синтаксиса опции: -опция аргумент-этой-опции), должен быть воспринят как разделитель, обозначающий конец списка опций. любой последующий аргумент следует рассматривать как операнд, даже если он начинается с символа '-'
в вашем примере -- используется для того, чтобы программа grep не пыталась интерпретировать строку '--with-debug' как опцию, а считала её аргументом, т.е., в данном случае, регулярным выражением для поиска.
кстати: два аргумента -e --with-debug будут восприняты программой grep абсолютно точно так же, потому что опция -e подразумевает наличие следующего аргумента — регулярного выражения
Комментариев нет:
Отправить комментарий