什么是`< <()`语法?

时间:2011-05-19 20:32:22

标签: bash shell

我已经使用RVM一段时间了,每次我只是复制并粘贴以下命令来进行设置:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

让我觉得我不完全理解语法,以及为什么我们需要double&lt;和括号。有人可以解释这个或指出我正确的参考吗?

2 个答案:

答案 0 :(得分:13)

第一个是输入重定向。它将文件的内容作为输入提供给程序。第二个结构是<(),它是进程重定向:它将进程的输出视为文件。在这种情况下,效果是您将运行该URL的内容,就好像它是一个bash脚本 - 非常危险!如果您不相信完全来源,请不要这样做。攻击者可以使用此方法让您运行会危及系统的命令。

答案 1 :(得分:2)

只需2美分。 Bashs结构<(),因为@Daenyth声明“处理像文件一样的进程的输出”。这种结构可能非常有用。请考虑以下事项:

 diff <(ls dir1) <(ls dir2)

这将使用vimdiff显示 dir1 dir2 的内容之间的差异。使用vimdiff代替diff甚至会更酷。

相关问题