![根据 cURL 响应保存每小时文件](https://linux22.com/image/1037698/%E6%A0%B9%E6%8D%AE%20cURL%20%E5%93%8D%E5%BA%94%E4%BF%9D%E5%AD%98%E6%AF%8F%E5%B0%8F%E6%97%B6%E6%96%87%E4%BB%B6.png)
我正在关注 Twitter 的开发人员,并希望对他们的过滤器实时 API 进行非常基本的调用。下面的代码几乎可以让我做到这一点:
curl -s -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile.txt"
我希望动态命名文件,以便捕获每小时的数据日志。
编辑:我希望此命令保持打开状态,并且我收到的数据是连续的,这一点毫无意义。我希望每小时将输出重定向到不同的文件。
我对命令行和 ubuntu 完全陌生,所以我甚至不知道从哪里开始。任何帮助都将不胜感激。
答案1
curl -s -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile $(date + format).txt"
其中,format
可以是下列任意之一:
%a : Abbreviated weekday name (Sun..Sat)
%b : Abbreviated month name (Jan..Dec)
%B : Full month name, variable length (January..December)
%d : Day of month (01..31)
%e : Day of month, blank padded ( 1..31)
%m : Month (01..12)
%Y : Year
%d : Day of month (e.g, 01)
%H : 24 hour format (00..23)
%I : 12 hour format (01..12)
%M : Minutes of the current time (00...59)
%j : day of year (001..366)
%D : date; same as %m/%d/%y
%F : full date; same as %Y-%m-%d
因此,这将保存文件并动态添加当前时间的小时(%H)和分钟(%M)
curl -s -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile $(date +\"%H:%M\").txt"
因为您想要curl
获取 1 小时的数据并将该数据保存到文件中,然后再次恢复操作,您至少需要使用一个小脚本,这将完成这项工作:
#! /bin/bash
while true; do
curl -s -m 3600 -u twitterusername:twitterpassword https://stream.twitter.com/1/statuses/sample.json -o "somefile $(date +%H:%M).txt"
done
当您让脚本运行时,它会执行命令,每 3600 秒(1 小时,参数-m 3600
)curl 将关闭并重新执行命令。
请注意,这不仅会切断流,它实际上会关闭 curl 并重新打开它,不要认为在 curl 运行时可以切断流。
您需要将脚本放在某个地方,即在终端上使用它之前~/curl_script.sh
使其可执行,要使用它,请移动保存脚本的文件夹并输入。chmod 755 ~/curl_script.sh
./curl_script.sh
要中断脚本,请按Ctrl+ c。
如果您中断脚本并在同一分钟恢复它,它将默认覆盖以前收集的数据,所以要小心。
如果您想对脚本进行其他修改,请告诉我。有关更多 curl 参数,我建议阅读 curl 手册页(man curl
在终端上)。
玩得开心。