使用curl从stdout下载到stdout,然后创建一个目录

时间:2018-01-19 20:44:52

标签: bash curl tar

在Bash中,我可以使用curl将文件下载到stdout,然后解压缩内容:

curl -L http://wordpress.org/latest.tar.gz | tar -zx

我希望将untar设置为目录,并且如果该目录尚未创建,则将创建该目录(从而保存mkdir操作)。

我尝试了这个失败,将其解压缩到一个立即创建的目录,例如example.com

curl -L http://wordpress.org/latest.tar.gz | tar -zx -C ${domain}/

命令失败,错误为curl: (23) Failed writing body (303 != 1369)

注意:这不是权限问题,因为这是我在root中工作的测试环境。

该命令出了什么问题?

1 个答案:

答案 0 :(得分:1)

问题是该目录不存在(请参阅此处: https://unix.stackexchange.com/questions/25311/create-target-directory-when-extracting-tarball)。

请注意,如果您首先创建目录,它可以正常工作:

$ domain=example.com
$ mkdir -p ${domain} && curl -L http://wordpress.org/latest.tar.gz | tar -zx -C ${domain}/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   178  100   178    0     0   2902      0 --:--:-- --:--:-- --:--:--  2918 
100 8601k  100 8601k    0     0  4241k      0  0:00:02  0:00:02 --:--:-- 4472k
$ echo $?
0