“< <(...)”重定向是什么意思?

Sto*_*ain 35 shell bash io-redirection

我已经看到使用以下命令安装了 rvm(ruby 版本管理器):

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
Run Code Online (Sandbox Code Playgroud)

因此,据我所知,我们获取脚本内容并将其传递给 bash(我相信< <并且<<是同一件事?)我对这< <部分感兴趣,在网上找到了以下描述:

<< token 表示使用当前输入流作为程序的 STDIN,直到看到 token。

这对我来说有点不清楚,有人可以举个例子或用更简单的方式解释吗?

enz*_*tib 44

不,< <<<不是一回事。

第一个由通用<重定向字符与<(command)语法的第一个字符组合而成。这是一种ksh结构(也可在bash和 中找到zsh),称为进程替换,它获取 的输出command并将其提供在一个文件中,该文件的名称是指管道的另一端正command在写入的文件。

换句话说,您可以将其< <(command)视为< file,其中 file 包含command.

  • 几天前我了解了这个命令,这是一个非常有用的命令。你可以用它做的事情只受你的想象力的限制:例如这个命令给你一个只有隐藏文件的列表:`diff &lt;(ls) &lt;(ls -a)` (5认同)
  • 这种语法可能确实非常有用,但在 Stonerain 的特定情况下,与简单的管道相比,它似乎没有提供任何附加值。 (2认同)

jll*_*gre 19

这是一种更简单的复杂方法:

curl -s https://raw.github.com/... | bash
Run Code Online (Sandbox Code Playgroud)