0

这可能是一个非常简单的问题,但我不明白这里到底发生了什么,虽然我理解命令yesnlhead单独。

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

任何解释表示赞赏。

4

2 回答 2

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。希望这会澄清。

于 2013-07-09T06:41:39.447 回答
2

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

例如, yes 输出无限数量的ynl并将 rownumber 添加到这些y。然后 head 命令返回它们的前 1000 行。

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

于 2013-07-09T06:45:31.887 回答