您可以尝试使用
stdbuf
。
$ stdbuf --output=L ./a | tee output.txt
(大部分) man 页面:
-i, --input=MODE adjust standard input stream buffering
-o, --output=MODE adjust standard output stream buffering
-e, --error=MODE adjust standard error stream buffering
If MODE is 'L' the corresponding stream will be line buffered.
This option is invalid with standard input.
If MODE is '0' the corresponding stream will be unbuffered.
Otherwise MODE is a number which may be followed by one of the following:
KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
In this case the corresponding stream will be fully buffered with the buffer
size set to MODE bytes.
记住,不过要牢记以下内容:
NOTE: If COMMAND adjusts the buffering of its standard streams ('tee' does
for e.g.) then that will override corresponding settings changed by 'stdbuf'.
Also some filters (like 'dd' and 'cat' etc.) dont use streams for I/O,
and are thus unaffected by 'stdbuf' settings.
你没有在tee
上运行stdbuf
,而是在a
上运行它,所以这不会影响你,除非你在a
的源中设置了流的缓冲。
此外,stdbuf
不是POSIX标准的一部分,而是GNU-coreutils的一部分。
stdbuf
,而没有unbuffer
,所以我点赞了这个答案。谢谢! - Huw Walterspython3 -u a.py | tee output.txt
- Honza