Эхо к stderr и тройник к лог-файлу?

В скрипте bash,

эхо "ошибка" 1>&2 | чайник

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

4 ответа

Решение

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

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

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

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

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

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

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

$ echo "error" | tee 

tee видит только толстый из echoа не стдерр. stderr по-прежнему будет отображаться в терминале.

Другие вопросы по тегам