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

Echo to stderr и tee в файл журнала?

В bash script,

echo "error" 1 > & 2 | tee -a log

будет печатать stderr на экране, но не записывать в файл, как это сделать в одно и то же время?

4b9b3361

Ответ 1

Чтобы повторить текст как для файла журнала, так и для stderr, но не для stdout, попробуйте следующее:

echo "error" | tee -a log 1>&2

Ответ 2

echo "error" 1>&2 | tee -a log

С первой частью 1>&2 вы говорите: "Перенаправить stdout в stderr" . Таким образом, эхо-выход "error" переходит в stderr.

Труба (|) читается только с stdout, а не stderr. Так что tee вообще не получает никаких stdin из канала. Следовательно, он ничего не добавляет к файлу журнала.

Ответ 3

Чтобы просмотреть как stdout, так и stderr на консоли и отправить оба потока в журнал, перенаправьте stderr на stdout, как показано ниже:

progam.sh 2>&1 | tee -a log

Ответ 4

Но по умолчанию только stdout передается в трубах, так что в

$ echo "error" | tee 

tee видит только stout из echo, а не stderr. stderr будет отображаться на терминале.