管道与重定向

ton*_*sid 27 linux input

我已经使用管道和重定向很长时间了,只是意识到我不知道它们到底有什么不同。我只知道如果要将输出存储在文件中,则使用 >。否则大多数时候你只是使用 |。有人可以解释管道和重定向之间的区别吗?

Ign*_*ams 32

两者都做同样的基本事情;它们重定向执行的进程的文件描述符。区别在于如何。管道将一个进程的 stdout 连接到另一个进程的 stdin,而重定向从/重定向到文件(>从 stdout 到文件,<从文件到 stdin)。

  • Linux 和其他具有“/dev/fd”的系统中的区别有点模糊。例如,如果您运行 `echo foo &gt;&gt;(somecommand)`,它将扩展为 `echo foo &gt; /dev/fd/3`。它仍然是重定向,但是重定向到一个进程。 (2认同)