문제

명령의 출력을 다음에 기록하고 싶습니다. stdout 로그 파일에도 저장됩니다.Cygwin을 설치했고 다음을 사용하려고 합니다. tee 이를 수행하기 위한 명령입니다.

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

문제는 그게 tee 둘 중 하나에 아무것도 출력하기 전에 파일의 끝을 기다려야 한다고 주장하는 것 같습니다. stdout 또는 로그 파일.이는 나중에 참조할 수 있도록 로그 파일을 저장하는 것의 요점을 없애지만 일부도 포함됩니다. stdout 로깅을 통해 빌드 진행 상황을 쉽게 확인할 수 있습니다.

tee님의 옵션은 다음으로 제한되어 있는 것 같습니다. --append, --ignore-interrupts, --help, 그리고 --version.그렇다면 내가 하려는 작업을 수행할 수 있는 다른 방법이 있나요?

도움이 되었습니까?

해결책

Tee는 stdout 또는 로그 파일에 무엇이든 출력하기 전에 파일 끝을 기다리는 것을 고집하는 것 같습니다.

이런 일은 확실히 일어나서는 안 됩니다. 티를 거의 쓸모 없게 만들 것입니다.다음은 이를 테스트하기 위해 제가 작성한 간단한 테스트입니다. 확실히 eof를 기다리지 않습니다.

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

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

다른 팁

파일로 출력하고 파일을 tail -f할 수 있습니다.

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

꼬리 -f build.log

직접 작성해 보세요!(여기서 중요한 점은 자동 플러시($|) 설정이 켜져 있으므로 보이는 모든 줄이 즉시 플러시됩니다.아마도 이것이 진짜일지도 모른다. 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!:-피

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top