Это означает, говоря поэтично: отправить поток ошибок в тот же «канал», что и нормальный вывод. 2
обозначает ошибку (и). 1
- это основная строка, или стандартный вывод . & 1
указывает путь, по которому идет стандартный вывод. По умолчанию он выводится на экран, и в этом контексте подстановки: $ ()
, он переходит к переменной, становится ее значением. А >
- это перенаправление. Все вместе 2> & 1
означает: перенаправить ошибки путем стандартного вывода.
После того, как я нашел пример без тегов (на русском языке!), мне удалось исправить это самостоятельно, используя упрощенную версию команды ngctl
в моем вопросе, которая просто возвращает несовпадающие пакеты обратно в ipfw
:
ngctl -f- <<-__END__
mkpeer ipfw: bpf $cookie filter
name ipfw:$cookie CLASSIFIER
mkpeer CLASSIFIER: tag matched tag_bad
name CLASSIFIER:matched TAGGER
msg CLASSIFIER: setprogram { thisHook="filter" ifNotMatch="filter" ifMatch="matched" $prog }
msg TAGGER: sethookin { thisHook="tag_bad" ifNotMatch="tag_bad" }
msg TAGGER: sethookout { thisHook="tag_bad" tag_cookie=$mtag_ipfw tag_id=$tag }
msg CLASSIFIER: setprogram { thisHook="matched" ifMatch="filter" ifNotMatch="filter" bpf_prog_len=1 bpf_prog=[ { code=6 k=65535 } ] }
__END__