为什么在使用管道进行 bash 时将 -Lo- 与 curl 一起使用?

adz*_*ies 6 bash curl

在 janus 项目中,他们使用 curl 下载引导脚本并将其通过管道传输到 bash。 https://github.com/carlhuda/janus

它看起来像这样:

$ curl -Lo- https://bit.ly/janus-bootstrap | bash
Run Code Online (Sandbox Code Playgroud)

为什么要使用 args -Lo-

-o 应该用于输出,但无论如何不会发生(即到标准输出)?

alf*_*sin 10

这一切都在手册页中

-L 如果页面已移动(3xx 响应) curl 会将请求重定向到新地址

-o输出到文件而不是标准输出(通常是屏幕)。在您的情况下,该o标志是多余的,因为输出通过管道传输到 bash(用于执行) - 而不是文件。


小智 6

-o是多余的,它们产生完全相同的输出:

\n
$ curl --silent example.com | sha256sum\n3587cb776ce0e4e8237f215800b7dffba0f25865cb84550e87ea8bbac838c423 *-\n\n$ curl --silent --output - example.com | sha256sum\n3587cb776ce0e4e8237f215800b7dffba0f25865cb84550e87ea8bbac838c423 *-\n
Run Code Online (Sandbox Code Playgroud)\n

自 2011 年首次引入该行以来,他们就一直使用该语法。\n您可能会问 Wael\xc2\xa0Nasreddine ( @kalbasit)他为什么这样做。他仍然活跃于该仓库。

\n

  • 是的,这是多余的,可能是因为我在 2011 年写下这篇文章时缺乏 Curl 经验:https://github.com/carlhuda/janus/commit/8a93098005b7831049bba32a9cb0e5e86bdc53c3 这已在 https://github.com/ 中解决carlhuda/janus/pull/639 感谢史蒂文的公关。 (2认同)