进一步阅读

进一步阅读

Unix提供了标准输出和标准错误,可以独立重定向。

$ ls /not-exist
ls: cannot access '/not-exist': No such file or directory

$ ls /not-exist > redirect.out
ls: cannot access '/not-exist': No such file or directory

$ ls /not-exist 2> redirect.err
$

我听说网络上有一个故事,其中给出了实施这种分离的一个有趣的理由。它涉及早期 Unix 所使用的计算机排版(我认为还有 Unix 管道)。我现在没能找到它。

有人愿意在此处链接该故事,将其与相关标签关联起来并使其更容易找到吗?

答案1

Steve C. Johnson 在 2013 年以用户身份对此进行了描述,其中用户抱怨照相排版——瞧! — 两天后问题得到解决。但道格拉斯·麦克罗伊在四分之一世纪前讲述的故事略有不同。

在 McIlroy 的版本中,标准错误是 Ken Thompson 著名的通宵介绍 Unix 命令管道的自然结果。在管道出现之前的 Unix 世界中,错误将被发送到标准输出已重定向到的文件这一事实是“麻烦”。但引入管道后,“当输出被发送到毫无戒心的进程时,这种行为就变得无法容忍”。麦克罗伊回忆道,丹尼斯·里奇引入了标准错误机制,最终在第六版之后“不久”纠正了这个问题。

此外,McIlroy 当然已经在 Unix 中研究管道的想法相当长一段时间了,到目前为止,包括在至少两年的时间里提出的许多提案;比这早五年发明了花园软管的比喻。与管道流不同的单独流的概念并不是在短短几天内神奇地从无到有地出现的。

进一步阅读

相关内容