【问题标题】:Using terminal to record/save a data stream使用终端记录/保存数据流
【发布时间】:2011-03-02 10:49:05
【问题描述】:

我希望能够保存使用 curl 命令返回的数据流。我尝试使用 cat 命令,并将 curl 命令传递给它,但是我做错了。 我目前使用的代码是:

cat > file.txt | curl http://datastream.com/data

任何帮助将不胜感激。

【问题讨论】:

  • 作为记录,您使用的语法会将cat 的输出发送到file.txt,然后它还会尝试将该输出发送到curl 的标准输入(但是它不能,因为该输出已经进入文件)。问题 1:cat 除了从自己的标准输入中读取的内容之外,不会产生任何输出,因此它只会坐在那里等您输入内容。问题 2:curl 不读取进入其标准输入的内容。问题 3:您没有将curl 的输出重定向到任何地方,所以它只是打印到屏幕上。
  • 下面的答案很好。不过,我建议您阅读一些有关 I/O 重定向的内容。下次可能会对你有很大帮助:en.wikipedia.org/wiki/Redirection_%28computing%29
  • @David:很好的解释+1。我认为会发生的情况是外壳会解析到管道,并设置管道,并将“cat”进程的输出连接到它。 'cat' shell 进程然后会执行输出重定向(关闭进程中的管道),因此 'curl' 不会在其输入中获得任何数据。 “猫”会坐在那里等待 EOF 的输入;同时,'curl' 会将其输出生成到标准输出,而不是文件。与您所描述的差异很小-这是“开管”的顺序;叉;关闭管道;打开文件'这与我在您的文件中读到的不太一样。
  • @Jonathan:我可以相信...我并不是 I/O 重定向如何工作的内部专家。

标签: bash save data-stream


【解决方案1】:

那么,您正在使用 'curl' 收集数据,并希望捕获其输出?

curl http://example.com/data > file.txt

或者,确实(来自man page):

curl -o file.txt http://example.com/data

【讨论】:

  • 干杯:D都有效。应该读过卷曲的人。非常感谢您的帮助:D
【解决方案2】:

试试:

curl http://datastream.com/data > output_file.txt

【讨论】:

  • 太棒了!愚蠢的我把事情复杂化了,应该阅读 curl 的手册页:p 谢谢:D
猜你喜欢
  • 2012-09-11
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多