当我curl
创建文件并将其通过管道传输到文件或其他命令时,我会在终端中看到输出。我不确定这是怎么发生的,因为管道应该从 curl 中获取所有输出,对吧?
例如:
$ curl http://www.archive.org/stream/Pi_to_100000000_places/pi.txt > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 129M 0 129M 0 0 22.5M 0 --:--:-- 0:00:05 --:--:-- 24.7M
编辑
我像这样使用卷曲:
curl http://www.archive.org/stream/Pi_to_100000000_places/pi.txt | some_other_command > some_file
我不想将状态传递给 some_other_command,我只是想知道它是如何显示状态的。但是,显示如何重定向添加到答案的两个流,所以不要删除它。
通常有两种输出流可用:标准输出和标准错误。实际上,在终端中运行时,都向终端发送数据。
>
仅重定向标准输出,curl 将进度数据打印到标准错误。要抑制两者,请使用以下之一:要将两者都发送到管道:
除非您使用
|&
or&>
运算符,否则所有流都将独立重定向。另见:
当你
curl
用来打开一个 URL 时,你会得到两个输出:curl
。Curl 应该使用一种方法来分别显示这两个,否则处理实际输出(URL 的内容)会很困难,我最终会得到不必要的内容(curl 的状态)。
所以它
stderr
用于它的状态和stdout
内容。使用
>
您将 URL 的内容(标准输出)重定向到/dev/null
,您实际上应该使用:2> /dev/null
代替。此外,如果您想将它们都添加到下一个命令:
如果您只想将内容通过管道传送到下一个命令而不查看状态: