Подтвердить что ты не робот

Echo> & 2 "some text", что это означает в сценариях оболочки

Я видел, что echo используется во многих местах:

echo >&2 message text ...

Что это значит?

Я понимаю 2>&1, однако я не уверен, как интерпретировать использование выше.

Может кто-нибудь объяснить?

4b9b3361

Ответ 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 message echo >&2 message и echo message >&2 эквивалентны.

Это именно тот вопрос, который я искал, и ни один из текущих ответов на него не отвечает; они просто объясняют то, что я уже знал. С другой стороны, вопрос мог бы выиграть от лучшей формулировки, но, опять же, мне запрещено комментировать, так что...