TypeError: Супервыражение должно быть нулевым или функцией, а не неопределенным с Babeljs

$ program [arguments...] 2>&1 | tee outfile

2>&1 сбрасывает потоки stderr и stdout. tee outfile берет поток, который он получает, и записывает его на экран и в файл «outfile».

Вероятно, это то, что большинство людей ищут. Вероятная ситуация - это некоторая программа или сценарий, который долгое время работает и производит много выходных данных.

Проблема (особенно при смешивании потоков stdout и stderr) заключается в том, что существует зависимость от потоков, программа. Если, например, все записи в stdout являются , а не красными, но все записи в stderr сброшены , тогда они выйдут из хронологического порядка на выходе файл и на экране.

Это также плохо, если программа выводит только 1 или 2 строки каждые несколько минут, чтобы сообщить о прогрессе. В таком случае, если выход не был сброшен программой, пользователь не будет даже видеть какой-либо вывод на экране в течение нескольких часов, потому что ни один из них не будет проталкиваться через трубу в течение нескольких часов.

Обновление: программа unbuffer, часть пакета expect, решит проблему буферизации. Это заставит stdout и stderr немедленно записывать на экран и файл и синхронизировать их при объединении и перенаправлении на tee. Например ::

$ unbuffer program [arguments...] 2>&1 | tee outfile
16
задан Aethyn 3 March 2016 в 16:42
поделиться