Просто чтобы уточнить ответ Даррона, вы можете использовать команду script
, чтобы захватить весь вывод.Вот пример, который пишет в stdout, stderr и / dev / tty, используя скрипт python, и захватывает все три вывода:
brent@battlecruiser:~$ cat test.py
import sys
sys.stdout.write('o\n')
sys.stderr.write('e\n')
with open('/dev/tty', 'w') as tty:
tty.write('t\n')
brent@battlecruiser:~$ script testout
Script started, file is testout
brent@battlecruiser:~$ python test.py
o
e
t
brent@battlecruiser:~$ exit
Script done, file is testout
brent@battlecruiser:~$ head -n -3 testout | tail -n +3
o
e
t
Сравните это с тем, что происходит при использовании 2>1&
и tee
:
brent@battlecruiser:~$ python test.py 2>&1 | tee testout
e
t
o
brent@battlecruiser:~$ cat testout
e
o
Как видите, запись в /dev/tty
не фиксируется.Попробуйте выполнить команду в команде script
, как показано, и посмотрите, захватывает ли она все результаты.