如何理解进程替换

如何理解进程替换

引用:
命令替换的模版
用圆括号扩起来的命令
>(command)
<(command)
启动进程替换.
它使用/dev/fd/<n>文件将圆括号中的进程处理结果发送给另一个进程.
复制内容到剪贴板
代码:
apple@apple:~$ cat <(echo 'hello')
hello
我是这样理解的 <(echo 'hello') 这个句子产生一个文件描述符 cat从这个文件描述符中读出,文件的内容就是echo ‘hello‘的输出。
这里使用了linux的管道。

这样理解是否正确。

能否给几个 >(command) 的例子?这个不好理解

      
<( cmd ) 我觉得可以按简单的输入重定向
和  <<, <<< 没多大区别
复制内容到剪贴板
代码:
> cat <<<"here string"
here string
没用过 >(  )      
引用:
我觉得可以按简单的输入重定向
我觉得区别很大的,进程替换是通过一个中间文件。      
引用:
> cat <<<"here string"
here string
这个herestring直接输入到cat的标准输入。      
引用:
它使用/dev/fd/<n>文件将圆括号中的进程处理结果发送给另一个进程.
BS很在意这个中间文件?

内核处理文件时, 都是通过FD的读写来实现的
而这个FD也就是/dev/fd/<n>
复制内容到剪贴板
代码:
$ ll /dev/fd/1
lrwx------ 1 huan users 64 11-08 11:44 /dev/fd/1 -> /dev/pts/0
$ ll /dev/fd/1 | cat
l-wx------ 1 huan users 64 11-08 11:44 /dev/fd/1 -> pipe:[26948]
看来管道也是用了"中间文件"

另一个例子
复制内容到剪贴板
代码:
$ ls -l /dev/fd/0 <<<herestring
lr-x------ 1 huan users 64 11-08 11:46 /dev/fd/0 -> /tmp/sh-thd-1226122225 (deleted)
$ ls -l /dev/fd/0 <<<herestring
lr-x------ 1 huan users 64 11-08 11:47 /dev/fd/0 -> /tmp/sh-thd-1226145246 (deleted)
看来不是那么"直接"

      
引用:
我是这样理解的 <(echo 'hello') 这个句子产生一个文件描述符 cat从这个文件描述符中读出,文件的内容就是echo ‘hello‘的输出。这里使用了linux的管道。
基本正确, 不过没看见有管道
引用:
能否给几个 >(command) 的例子?这个不好理解
man2pdf.sh 245 行