3

以下是 Bash 进程替换的示例:

zjhui@ubuntu:~/Desktop$ echo >(ls)
/dev/fd/63
zjhui@ubuntu:~/Desktop$ abs-guide.pdf

然后我得到一个等待命令的光标。

/dev/fd/63不存在。我认为发生的事情是:

  1. 输出使用的文件名/dev/fd
  2. 执行lsin>(ls)

这是正确的吗?为什么会有光标等待输入?

4

1 回答 1

5

当您执行 时echo >(ls),bash 将其替换为echo /dev/fd/63ls/dev/fd/63连接到其标准输入的方式运行。echo不使用其参数作为文件名,ls也不使用标准输入。Bash 将编写您的标准提示符,但输出ls紧随其后。您可以在此处键入任何 Bash 命令,但您只是从提示中丢失了视觉提示,该提示位于屏幕上方。

echo >(ls)不是可能永远有用的东西。

于 2012-08-16T05:22:03.117 回答