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