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
$
我听说 Web 上某处有一个故事,这给出了实施这种分离的有趣原因。它涉及早期 Unix 用于(和 Unix 管道,我认为)的计算机化排版。我现在没找到。
有人愿意在此处链接该故事,将其与相关标签相关联并使其更容易找到吗?
有史蒂夫 C.约翰逊 2013 年对此的描述,作为用户,用户抱怨照片排版和 - 瞧!— 两天后问题得到解决。但道格拉斯麦克罗伊在四分之一个世纪前讲述的故事略有不同。
在 McIlroy 的版本中,标准错误是 Ken Thompson 著名的通宵介绍 Unix 命令管道的自然结果。在管道之前的 Unix 世界中,错误将被发送到标准输出被重定向到的文件的事实是“麻烦的”。但是在引入管道之后,这种行为“在将输出发送到毫无戒心的进程时变得无法容忍”。麦克罗伊回忆说丹尼斯·里奇在第六版之后“不久”引入了标准错误机制最终纠正了这个问题。
此外,麦克罗伊当然已经在 Unix 中研究管道的想法很长一段时间了,到目前为止,包括至少 2 年期间的一些提议;比那早了五年发明了花园软管的比喻。与管道流不同的单独流的概念并没有在短短几天内神奇地从无到有出现。
进一步阅读
维基百科摘录来源:https ://minnie.tuhs.org/pipermail/tuhs/2013-December/006113.html