CSH 및 모든 출력(오류 포함)을 파일로

CSH 및 모든 출력(오류 포함)을 파일로

모든 컴파일 결과를 파일로 저장해야 합니다. 오타가 너무 많아서 undefined reference다 보고 싶어요. 시도해 보았지만 파일에 오류가 makeall >& out없습니다 .outundefined reference

csh를 사용하여 실행 해야 합니다 makeall.

답변1

시도해 보셨나요 makeall |& tee out? 이렇게 하면 화면과 파일의 모든 내용이 인쇄됩니다 out.

답변2

귀하의 의견에 따르면 명백한 해결책이 작동하지 않는 것 같습니다. 시도해 보십시오 sh -c 'makeall >out 2>&1'. 전체 경로를 포함하도록 해당 섹션을 수정 makeall하거나 다양한 플래그를 추가해야 할 수도 있습니다. 모두 작은따옴표로 묶여 있는지 확인하세요.

오류가 발생하는 경우 여기에 제공해 주세요.

오류는 없지만 출력 파일에서 여전히 컴파일 오류가 발생하지 않는다면 makeall스크립트가 매우 이상한 작업을 수행하고 있는 것이 거의 확실합니다.표준 출력그리고표준 에러파일 설명자.

답변3

makeall스크립트 자체가 stderr을 터미널 장치 또는 로 리디렉션하는 경우 stderr을 /dev/tty리디렉션해도 도움이 되지 않습니다 makeall.

csh의 리디렉션 지원은 Bourne 또는 rc와 같은 셸에 비해 매우 제한적이므로 다음을 보는 것이 일반적입니다.

cmd >& /dev/null > /dev/tty

stderr만 리디렉션합니다(그리고 stdout이전과 같다고 가정하면 tty로도).

또는:

(cmd1; cmd2 >& /dev/tty; cmd3) >& file.log

cmd2로그 파일로 리디렉션 하지 마세요 .

이제 리디렉션이 명시적으로 지정되었으므로 /dev/tty유일한 옵션은 파일 /dev/tty로 이동하는 것입니다 out.

이를 위해 makeall명령의 표준 출력 및 표준 오류 역할을 하는 의사 터미널을 사용할 수 있습니다.

이를 위해 최소한 다음 구현에서 를 사용할 수 있습니다 script.util-linux

script -qec 'stty raw -echo; exec makeall' out >& /dev/null

출력 + 오류(파일에 기록되는 것 외에도)를 보려면 (호스트 터미널을 원시 모드로 전환하지 않기 위해 ) >& /dev/null로 바꾸십시오 .< /dev/nullscriptout

관련 정보