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

发布于 2024-11-08 20:46:03 字数 205 浏览 0 评论 0 原文

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

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

令我烦恼的是,我不完全理解语法,以及为什么我们需要双 < 和括号。有人可以解释一下这一点或指出我正确的参考文献吗?

I've been using RVM for a while, and every time I just copied and pasted the following command to get it setup:

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

It bugs me that I don't fully understand the syntax, and why we need the double <, and the parentheses. Can some one explain this or point me to the right reference?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不知所踪 2024-11-15 20:46:03

第一个是输入重定向。它将文件的内容作为输入提供给程序。第二个构造是<(),它是进程重定向:它将进程的输出视为文件。在这种情况下,效果是您将运行该 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.

傲娇萝莉攻 2024-11-15 20:46:03

只是我的2分钱。 Bash 结构 <() 正如 @Daenyth 所说“将进程的输出视为文件”。这个结构可能非常有用。只需考虑以下内容:

 diff <(ls dir1) <(ls dir2)

这将使用 vimdiff 显示 dir1dir2 内容之间的差异。使用 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:

 diff <(ls dir1) <(ls dir2)

This will use vimdiff to show differences between contents of dir1 and dir2. Using vimdiff instead diff will even cooler.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文