4

stdoutコマンドの出力をログ ファイルだけでなくログに記録したいと考えています。teeCygwin がインストールされており、コマンドを使用してこれを達成しようとしています。

devenv mysolution.sln /build myproject "Release|Win32" | tee build.log

問題は、ログファイルteeに何かを出力する前に、ファイルの終わりを待つことを主張しているように見えることです。stdoutこれにより、将来の参照用にログ ファイルを作成するというすべての要点が取り除かれますがstdout、ビルドの進行状況を簡単に確認できるようにログも記録されます。

teeのオプションは、、、、および に限定されているよう--appendです。私がやろうとしていることを達成する別の方法はありますか?--ignore-interrupts--help--version

4

3 に答える 3

4

ファイルに出力し、ファイルを tail -f することができます。

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

テール -f build.log

于 2008-09-20T00:35:05.683 に答える
2

teeは、stdoutまたはログファイルに何かを出力する前に、ファイルの終わりを待つことを主張しているようです。

これは絶対に起こらないはずです-それはティーをほとんど役に立たなくするでしょう。これをテストするために私が書いた簡単なテストを次に示します。これは間違いなくeofを待っていません。

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

$ ./test | tee test.log
hello
<pause>
goodbye
于 2008-09-20T14:49:49.027 に答える
2

自分で書いてください!(ここでのポイントは、 autoflush ( $|) 設定がオンになっているため、表示されたすべての行がすぐにフラッシュされることです。これはおそらく、実際のteeコマンドに欠けていたものです。)

#!/usr/bin/perl -w
use strict;
use IO::File;
$| = 1;
my @fhs = map IO::File->new(">$_"), @ARGV;
while (my $line = <STDIN>) {
    print $line;
    $_->print($line) for @fhs;
}
$_->close for @fhs;

スクリプトには、任意の名前を付けることができます。私はそれを呼びますperlmilktee!:-P

于 2008-09-20T00:37:18.157 に答える