bash – 管道vs重定向到进程

前端之家收集整理的这篇文章主要介绍了bash – 管道vs重定向到进程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
寻找一些bash专家的解释.下一个之间的确切区别是什么
command1 | command2

例如经典管道,其中command1的stdout被重定向到command2的stdin,例如,

> bash分叉两次
>更改文件描述符
>执行comman1和command2

command1 > >(command2)

结果(和bash动作)是一样的……

至少我得到了相同的

find . -print0 | xargs -0 -n1 -I% echo =%=

find . -print0 > >(xargs -0 -n1 -I% echo =%=)

是> >(命令)只有更长的路说|?或者不是,我错过了什么?

实施
command1 | command2

shell在父进程中创建一个管道,并将其一端附加到command1的输出(fd 1;它使用dup或dup2),另一端连接到command2的输入(fd 0).

实施

command1 > >(command 2)

,shell创建一个FIFO.它将command2的stdin附加到FIFO(通常使用O_WRONLY标志打开),并将FIFO的名称作为command1的位置参数传递.您可以使用echo>(true)轻松地看到这一点.

如果你使用

> >(foo)

这些形式确实非常相似.但是,流程替代机制更加强大.例如,你做了这样的事情:

diff -u  <(curl 'http://www.a.example.com/')  <(curl 'http://www.b.example.com/')

你不能用管道做到这一点 – 你不能有两个标准输入.

原文链接:https://www.f2er.com/bash/384113.html

猜你在找的Bash相关文章