2010-07-01 3 views
1

어쩌면 내가 누락되었지만 자세한 내용을 입력하면 (ditto [-v] [-V] 2>>some.log) stderr으로 정규 출력이 전송됩니다. 따라서 내 some.log 파일은 copying file ...과 같은 항목으로 채워집니다. ditto가 stdout에 오류를 보내고 stderr로 출력하는 이유는 무엇입니까?

나에게 논리적 이해가되지 않지만, 수동뿐만 아니라 말씀입니다 :

-V   Print a line of output to stderr for every file, symbolic 
       link, and device copied. 

내가이 문제를 확인하지 않은,하지만 난 실제 I/O 오류가 있다고 가정 stdout으로 전송됩니다. 내 원래 원한 출력을 표시하는 것이었지만 모든 오류를 기록하십시오. 따라서 오류가 stdout으로 전송된다고 가정하면이 문제는별로 문제가되지 않습니다. 의미가 제게 의미가 없다는 것입니다.

그래서,이 나에게 정확한 출력을 제공한다 :

ditto -V /some/path/ /some/other/path 1>>some.log 
+0

속임수 : –

답변

0

사실, ditto는 stderr에 오류 메시지와 자세한 상태 메시지를 모두 전송합니다. 이는 -c (아카이브 생성) 모드에 있고 대상 파일이 -으로 지정된 경우 stdout에 아카이브를 씁니다. 아카이브와 상태 메시지가 섞여 있으면 매우 나쁠 것입니다. BTW, tar -v도 같은 이유로 동일한 작업을 수행합니다.

+0

나는 'Ditto -V/some/path// some/other/path 2 >> some.log'라고했는데 내 터미널에서 다음과 같이 출력했다. I/O 오류 [...],하지만 내 로그에, 나는 모든 복사, 등등있어 그래서 오류 로그를 얻는 가장 좋은 방법은 - 그것은 전혀 가능합니까? –

+0

'ditto'를 사용하여 읽기 권한이없는 파일을 복사하려고 시도하면 stderr에 오류가 인쇄됩니다. I/O 오류 메시지가'ditto '에서 왔는지 확인 하시겠습니까? –

+0

아마도 그렇지 않습니까? 난 그냥 읽기 액세스를 제거한 후 시도하고 stderr 갔다; 그러나 이전에 나쁜 하드 드라이브가있는 시스템에서이 작업을 시도하고 I/O 오류를 stdout에 인쇄했습니다 (그렇지 않았을 수도 있음). –

관련 문제