Command line tee命令是否总是等待EOF?

Command line tee命令是否总是等待EOF?,command-line,cygwin,Command Line,Cygwin,我想将命令的输出记录到stdout以及日志文件中。我已经安装了Cygwin,我正在尝试使用tee命令来完成这项工作 devenv mysolution.sln /build myproject "Release|Win32" | tee build.log 问题在于tee似乎坚持在将任何内容输出到stdout或日志文件之前等待文件结束。这就省去了所有这一切的意义,那就是有一个日志文件供将来参考,还有一些stdout日志记录,这样我就可以很容易地看到构建进度 tee的选项似乎仅限于--追加,--

我想将命令的输出记录到
stdout
以及日志文件中。我已经安装了Cygwin,我正在尝试使用
tee
命令来完成这项工作

devenv mysolution.sln /build myproject "Release|Win32" | tee build.log
问题在于
tee
似乎坚持在将任何内容输出到
stdout
或日志文件之前等待文件结束。这就省去了所有这一切的意义,那就是有一个日志文件供将来参考,还有一些
stdout
日志记录,这样我就可以很容易地看到构建进度


tee
的选项似乎仅限于
--追加
--忽略中断
--帮助
,以及
--版本
。那么,有没有其他方法可以实现我要做的事情呢?

您可以输出到该文件并跟踪-f该文件

devenv mysolution.sln/build myproject“Release | Win32”>build.log&

tail-f build.log

自己编写!(这里的要点是自动刷新(
$|
)设置已打开,因此看到的每一行都会立即刷新。这可能是真正的
tee
命令所缺少的。)

#/usr/bin/perl-w
严格使用;
使用IO::文件;
$| = 1;
my@fhs=map IO::File->new(“>$”),@ARGV;
while(我的$line=){
打印$行;
$\->打印($line)用于@fhs;
}
$\关闭@fhs;
您可以根据需要调用脚本。我把它叫做perlmilktee-P

tee似乎坚持要等 在输出任何内容之前结束文件 到标准输出或日志文件

这绝对不应该发生——这将使tee几乎毫无用处。这是我写的一个简单的测试,它将测试这个,它肯定不会等待eof

$ cat test
#!/bin/sh
echo "hello"
sleep 5
echo "goodbye"

$ ./test | tee test.log
hello
<pause>
goodbye
$cat测试
#!/垃圾箱/垃圾箱
回音“你好”
睡眠5
回音“再见”
美元/测试| tee test.log
你好
再见

@jon:是的,我的问题似乎是devenv.exe在构建一个大的解决方案时不知何故阻塞了一些东西。我试着用我自己的球座替换品,它也有同样的问题。
$ cat test
#!/bin/sh
echo "hello"
sleep 5
echo "goodbye"

$ ./test | tee test.log
hello
<pause>
goodbye