【发布时间】:2012-04-05 13:42:10
【问题描述】:
cal April 2012 | cat > t | cat < t | more
为什么什么都不显示?为什么不显示
April 2012
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
【问题讨论】:
-
|将第一个进程的 stdout (1) 与第二个进程的 stdin (0) 连接起来。将输出重定向到文件后,没有任何标准输出,因此没有任何东西可以通过管道传输。此外,cat | cat < file并没有什么意义,它有两个输入到标准输入 -
@knittl 那么你的意思是
cat < t根本没有被执行? -
那么,有没有其他方法可以做到这一点?
-
@PavanManjunath 键入 cat (仅)完美显示日历
-
@knittl 同意;为了概念清晰,我牺牲了技术精度。 :) 我想用 fd0 来描述它会有助于理解冲突 STDIN 的为什么。这实际上是一个有趣的问题:如果您使用 strace
cal April 2012 | cat > t | strace cat < t运行第二个 cat,您会看到它实际上从 fd0 读取 cal 文本,并将 cal 文本写入 fd1。 Bash 一定是在洗牌。