stderr 만 리디렉션하는 방법은 무엇입니까?


13

이 작업을 수행하는 데 약간의 문제가 있습니다. 컴파일 된 .java 파일을 실행하고 stderr 만 error라는 파일로 리디렉션해야합니다. 따라서 .java 파일의 이름은 javaProgram.java입니다.

이것이 내가 시도한 것입니다.

java javaProgram 2> error

그러나 내가

cat error

특정 .java 파일에 오류가 없다는 사실을 알고 있더라도 거기에 물건이있는 것처럼 보입니다. 내가 뭔가 잘못하고 있습니까? 이 오류 파일이 표시하고 싶은 것은 다른 것이 아니라 오류입니다.

답변:


16

첫 번째 시도는 정확했습니다. 2>filenamestderr을 리디렉션하는 방법입니다. 프로그램이 stderr에 오류가 아닌 일부 오류를 작성하거나 java 프로그램이 stderr에 출력하는 다른 프로그램을 실행중인 경우 일 수 있습니다.


1

간단한 대답은 불가능하다는 것입니다. 표준 오류는 진단 출력을 작성하는 데 사용되며 진단 / 오류 출력을 정의하는 것은 응용 프로그램에 달려 있습니다. POSIX 표준따릅니다 .


2
POSIX 사양을 인용하려는 경우 전체 문서가 아닌 특정 섹션을 인용하십시오. 거대합니다.
jordanm

POSIX에서 stderr를 파일로 리디렉션 할 수없는 때는 언제입니까? 이에 대한 실제 견적을 제공해야합니다.
l0b0

1
Jeight이 말하는 것이 아닌 @ l0b0. STDOUT에 무엇이 들어가고 STDERR에 무엇이 들어가는 지 결정하는 것은 애플리케이션에 달려 있습니다. 예를 들어 STDOUT에 모든 것을 넣을 수 있으며 STDERR을 리디렉션해도 아무런 효과가 없습니다. 또는이 경우와 마찬가지로 엄격하게 오류가 아닌 일부를 STDERR에 넣는 것이 가능합니다 (표준 표준). 오류가 'ERROR :'또는 다른 것으로 표시된 경우 다른 진단에서 오류를 구문 분석 할 수있는 유일한 방법입니다. 도움이 될 수있는 상세 스위치가있을 수 있지만 프로그램마다 다릅니다.
evilsoup

OP는 의미 적으로 다른 두 가지 문제를 제기했습니다. "stderr 만 error라는 파일로 리디렉션"및 "이 오류 파일을 표시하려면 오류가 없습니다." 그것의 첫 번째 부분은 확실히 불가능하지 않습니다. 내 요점입니다.
l0b0

@ l0b0 거꾸로 있습니다. OP는 분명히 stderr을 error라는 파일로 리디렉션 할 수 있습니다. stderr의 내용이 사용자가 아닌 응용 프로그램에 의해 제어되기 때문에 Java 출력을 stderr로 선택할 수 없습니다. 그가 할 수있는 일은 실제 오류 메시지를 위해 stderr이 전달 된 파일을 grep하는 것입니다.
Jeight
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.