У меня есть script, который будет запускаться интерактивно нетехническими пользователями. script записывает обновления состояния в STDOUT, чтобы пользователь мог убедиться, что script работает нормально.
Я хочу, чтобы оба STDOUT и STDERR перенаправлялись на терминал (чтобы пользователь мог видеть, что работает script, и посмотреть, была ли проблема). Я также хочу, чтобы оба потока были перенаправлены на файл журнала.
Я видел множество решений в сети. Некоторые не работают, а другие ужасно сложны. Я разработал работоспособное решение (которое я введу в качестве ответа), но это kludgy.
Идеальное решение - это одна строка кода, которая может быть включена в начало любого script, который отправляет оба потока как на терминал, так и на файл журнала.
РЕДАКТИРОВАТЬ: Перенаправление STDERR в STDOUT и соединение результата с типом работы, но это зависит от того, как пользователи запоминают перенаправление и вывод на выход. Я хочу, чтобы журнал был безупречным и автоматическим (вот почему я хотел бы встроить решение в сам script.)