了解linux中的管道

时间:2013-07-09 06:24:38

标签: linux pipe head

这可能是一个非常简单的问题,但我不明白这里究竟发生了什么,尽管我分别理解了yesnlhead这些命令。 / p>

yes | nl | head -1000 > data1.txt     

我不明白管道是如何通过所有这些进行交互的,以便在不同的行上创建一个数字为1-1000的数据文件,每个行旁边都有y

 1  y
 2  y
 3  y
 4  y
 5  y
 6  y
 7  y
 8  y
 9  y
10  y
11  y
12  y
13  y
14  y
15  y
16  y
17  y
18  y
19  y
20  y
21  y
22  y
23  y
24  y

等..高达1000

感谢任何解释。

2 个答案:

答案 0 :(得分:2)

|用于管道,即用于多个进程之间的通信,简单来说,您可以将一个进程的输出传递给另一个进程的输入。

现在“是”手册页说:

"Repeatedly output a line with all specified STRING(s), or `y'."

由于你没有传递任何STRING(S),它输出'y'并将其传递给“nl”,它给每一行提供一个数字。 “nl”手册页说:

"Write each FILE to standard output, with line numbers added.  With no FILE,
 or when FILE is -, read standard input."

稍后head -1000将输出限制为1000行,>将输出写入data.txt。希望这会澄清。

答案 1 :(得分:2)

左命令的输出将作为|右侧命令的输入传递。

对于您的示例,是输出无限数量的ynl将rownumber添加到y。然后head命令返回它们的前1000行。

>不是管道的一部分。它用于将输出从STDOUT重定向到文件。