С любым приложением Unix или командой, можно подавить весь вывод с
cmd >/dev/null 2>&1
Первый бит перенаправляет стандартный вывод (единица номер 1) к/dev/null. Но Вам нужна вторая часть, чтобы также перенаправить вывод ошибок (единица номер 2) к тому же месту как номер 1.
В UNIX, STDIN=0, STDOUT=1 и STDERR=2
Я думаю, что это имеет некоторое отношение к yacc, который имеет файлы, заканчивающиеся в .y
, и требует вызванной функции yylex
.
Как указывали другие здесь и на StackOverflow , это может быть просто удвоение y
от имя утилиты yacc
, используемой для создания уникального пространства имен.
Стандарт POSIX резервирует пространства имен, начинающиеся с yy
и YY
для yacc
с следующим абзацем :
Имена имеют произвольную длину, состоят из букв, точек (
.
), подчеркивания (_
) и неначальных цифр. Прописные и строчные буквы различны. Соответствующие приложения не должны использовать имена, начинающиеся сyy
илиYY
, поскольку синтаксический анализаторyacc
использует такие имена . Многие из имен появляются в окончательном выводеyacc
, и поэтому они должны быть выбраны в соответствии с любыми дополнительными правилами, созданными компилятором C, которые будут использоваться. В частности, они появляются в операторах#define
.
К сожалению, документы POSIX очень плохо отражают любую форму истории, объясняющую, почему все стало так, как есть в настоящее время.