你可以试试 stdbuf
$ stdbuf -o 0 ./a | tee output.txt
手册页的(大)部分:
-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.
您没有在stdbuf
上运行tee
,而是在上运行a
,因此这不会影响您,除非您a
在a
的源中设置的流的缓冲。
另外,stdbuf
它不是 POSIX,而是GNU-coreutils的一部分。
expect
自己作为unbuffer
似乎并不在OS X中默认包含