当使用管道传输时,使用 >/dev/null 2>&1 来静音 curl

当使用管道传输时,使用 >/dev/null 2>&1 来静音 curl

因此,我有一个curl通过管道连接到 agrep和 a 的sed。我应该在哪里应用>/dev/null 2>&1

curl www.site.com | grep stuff | sed "other stuff"

在最后还是卷曲之后?

答案1

请具体说明该命令的用途。我猜你想使用

curl -s www.site.com

以防止进度指示和其他内容。-s 将执行相同的操作,但会默默地

如果你必须使用 >/dev/null 2>&1 我想我可以将 curl 输出重定向到文件

curl www.site.com -o file.txt >/dev/null 2>&1
cat file.txt | grep stuff | sed "other stuff"   

答案2

刚才解释得更详细一些:>/dev/null将 SDTOUT(标准输出)重定向到“黑洞”,并将2>&1STDERR(标准错误输出)附加到 STDOUT,这样它也会进入 Nirvana。这样就什么都没有显示:正常输出和错误都消失了。所以你可能可能想要

curl -s www.site.com 2>/dev/null | grep stuff | sed "other stuff"

即不重定向 STDOUT,仅抑制 STDERR 并告诉 curl 仅显示缩进的内容,然后将其通过管道传输到 grep 并最终传输到 sed。

注意不是在“2>”之间引入空格,或者 2 将被解释为 curl 的附加参数;)

答案3

我最近遇到了类似的事情,需要计算加载特定页面所需的时间。我只是将/dev/null其用作输出文件,这样我就可以获得所有不错的统计数据,而无需打印任何 HTML。

curl www.google.com -o /dev/null

对于我自己,我还将其包装在time命令中以获取额外的数据

time (curl www.google.com -o /dev/null)

答案4

curl -sw '%{http_code}' www.example.com | tail -n 1

我更喜欢这样,因为页面有时会返回文本,例如在卷曲 MongoDB 驱动程序端口时。

相关内容