什么是“<” <()` 语法?
我已经使用 RVM 一段时间了,每次我只是复制并粘贴以下命令来进行设置:
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
令我烦恼的是,我不完全理解语法,以及为什么我们需要双 < 和括号。有人可以解释一下这一点或指出我正确的参考文献吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一个是输入重定向。它将文件的内容作为输入提供给程序。第二个构造是
<()
,它是进程重定向:它将进程的输出视为文件。在这种情况下,效果是您将运行该 url 的内容,就好像它是 bash 脚本一样——非常危险!如果您不完全信任来源,请不要这样做。攻击者可以使用此方法让您运行危害您系统的命令。The first one is input redirection. It feeds the contents of a file into the program as input. The second construct is
<()
and it's process redirection: it treats output of a process like a file. In this case, the effect is that you will run the contents of that url as though it was a bash script -- very dangerous! If you don't trust to source completely, don't do that. An attacker could use this method to have you run commands that would compromise your system.只是我的2分钱。 Bash 结构
<()
正如 @Daenyth 所说“将进程的输出视为文件”。这个结构可能非常有用。只需考虑以下内容:这将使用 vimdiff 显示 dir1 和 dir2 内容之间的差异。使用
vimdiff
代替diff
会更酷。Just my 2 cents. Bashs structure
<()
as @Daenyth stated "treats output of a process like a file". This structure may be very useful. Just consider following:This will use vimdiff to show differences between contents of dir1 and dir2. Using
vimdiff
insteaddiff
will even cooler.