Echo> & 2 "some text", что это означает в сценариях оболочки
Я видел, что echo используется во многих местах:
echo >&2 message text ...
Что это значит?
Я понимаю 2>&1, однако я не уверен, как интерпретировать использование выше.
Может кто-нибудь объяснить?
Ответ 1
Чтобы быстро объяснить, что пропустили остальные:
echo "hey" >&2
> перенаправить стандартный вывод (неявный 1>)
& то, что будет дальше, это файловый дескриптор, а не файл (только для правой стороны >)
2 Номер дескриптора файла stderr
Перенаправить stdout из echo на stderr. (Если бы вы использовали echo "hey" >2, вы выводили бы hey в файл с именем 2)
Ответ 2
Использование >&2 здесь отправляет вывод в стандартную ошибку вместо стандартного. Это, как правило, лучшее место для отправки вывода журнала, который не является фактическим результатом вычисления, особенно если результат печатается в стандартном формате (возможно, перенаправлен на файл), а не на какой-либо другой файл (например, отправка журнала в стандартная ошибка гарантирует, что она не будет включена в реальный вывод, который был перенаправлен на выходной файл).
Ответ 3
Перенаправление >&2 является ярлыком для 1>& 2.
Вы понимаете 2>& 1, чтобы понять, что это связывает команду stdout с текущим stderr
Ответ 4
В то время как другие ответы дают хорошие объяснения, им не хватает точного вопроса, который здесь задают. Лучший ответ - в виде комментария непосредственно к вопросу, но, увы, переполнение стека не считает меня достойным добавления комментариев.
Преобладающая [sic] позиция перенаправления в командной строке не важна. Все >&2 echo message и >&2 echo messageecho >&2 message и echo message >&2 эквивалентны.
Это именно тот вопрос, который я искал, и ни один из текущих ответов на него не отвечает; они просто объясняют то, что я уже знал. С другой стороны, вопрос мог бы выиграть от лучшей формулировки, но, опять же, мне запрещено комментировать, так что...