Bash进程替换:`echo>(ls)`做什么?

时间:2012-08-16 05:10:37

标签: bash echo ls process-substitution

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

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

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

/dev/fd/63不存在。我想会发生的是:

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

    这是对的吗?为什么有光标等待输入?

1 个答案:

答案 0 :(得分:5)

当您执行echo >(ls)时,bash会将其替换为echo /dev/fd/63并运行ls并将/dev/fd/63连接到其标准输入。 echo不将其参数用作文件名,ls不使用标准输入。 Bash会写出你的标准提示,但ls的输出会在它之后。你可以在那里输入任何Bash命令,你刚从屏幕上方的提示中丢失了视觉提示。

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