为什么ditto会向stdout发送错误并输出到stderr?

时间:2010-07-01 17:29:39

标签: bash macos

也许我错过了什么,但是当我输入一个详细的ditto命令(ditto [-v] [-V] 2>>some.log)时,它会将常规输出发送到stderr。因此,我的some.log文件将填充copying file ...等条目。

这对我来说没有逻辑意义,但这也是手册所说的:

-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

1 个答案:

答案 0 :(得分:0)

实际上,ditto会向stderr发送错误消息和详细状态消息。原因是,如果它处于-c(创建存档)模式,并且目标文件指定为-,则会将存档写入stdout。将状态消息与存档混合在一起会非常糟糕。顺便说一下,tar -v做同样的事情也是出于同样的原因。