3

Я хочу написать stdout в файл, но также печатает stdout и stderr. Я попытался использовать тройник:

prog | tee stdout.txt

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

OUT1 ERR1
OUT2 ERR2
OUT3 ERR3
OUT4 ERR4

использование tee может распечатать их не по порядку, например:

ERR1 ERR2
OUT1
OUT2 
OUT3 ERR3 
OUT4
ERR4

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

1 ответ1

1

Я бы направил стандартный вывод в файл, а затем использовал хвост, чтобы увидеть содержимое файла в том виде, в котором оно написано. Это означает, что вам нужно открыть два терминала.

Терминал один:

prog > stdout.txt

Терминал два:

tail -f stdout.txt

Итак, во втором терминале вы увидите содержимое stdout, как оно написано в stdout.txt, а в первом терминале вы увидите stderr. Вы также можете переслать как stdout, так и stderr в файл и сделать то же самое. В этом случае вам нужно использовать prog >& outerr.txt . (Это будет работать на tcsh, но вы можете сделать это и в bash.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .