为什么在管道打击时使用-Lo-卷曲?

时间:2015-10-02 01:07:14

标签: bash curl

在janus项目中,他们使用curl下载并将引导脚本传递给bash。 https://github.com/carlhuda/janus

看起来像这样:

$ curl -Lo- https://bit.ly/janus-bootstrap | bash

为什么要使用args -Lo-

-o应该用于输出,但不管怎么说都不会发生(即到stdout)?

2 个答案:

答案 0 :(得分:3)

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

$ curl --silent example.com | sha256sum
3587cb776ce0e4e8237f215800b7dffba0f25865cb84550e87ea8bbac838c423 *-

$ curl --silent --output - example.com | sha256sum
3587cb776ce0e4e8237f215800b7dffba0f25865cb84550e87ea8bbac838c423 *-

他们使用了这种语法,因为2011年该行是first introduced。 你可能会问Wael Nasreddine(GitHub上的@kalbasit)他为什么这样做。他 仍然活跃在那个回购上。

答案 1 :(得分:2)

全部在man pages

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

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