这可能是一个非常简单的问题,但我不明白这里究竟发生了什么,尽管我分别理解了yes
,nl
和head
这些命令。 / 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
感谢任何解释。
答案 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)
左命令的输出将作为|
右侧命令的输入传递。
对于您的示例,是输出无限数量的y
,nl
将rownumber添加到y
。然后head命令返回它们的前1000行。
>
不是管道的一部分。它用于将输出从STDOUT
重定向到文件。