2
管道,数据如何在管道中流动?
我不了解数据在管道中的流动方式,希望有人可以澄清其中的情况。 我认为命令管道以逐行方式处理文件(文本,字符串数组)。(如果每个命令本身一行一行地工作。)文本的每一行都通过管道,命令不必等待前一个命令完成对整个输入的处理。 但似乎并非如此。 这是一个测试示例。有几行文字。我将它们大写,并重复每行两次。我这样做cat text | tr '[:lower:]' '[:upper:]' | sed 'p'。 要遵循此过程,我们可以“交互式”运行它-跳过中的输入文件名cat。管道的每一部分都逐行运行: $ cat | tr '[:lower:]' '[:upper:]' alkjsd ALKJSD sdkj SDKJ $ cat | sed 'p' line1 line1 line1 line 2 line 2 line 2 但是完整的管道确实在等我完成输入,EOF然后才打印结果: $ cat | tr '[:lower:]' '[:upper:]' | sed 'p' I am writing... …