使用 curl 下载到 stdout 并从 stdout untar --- 但也创建一个目录

Download to stdout with curl and untar from stdout --- but also create a directory

在 Bash 中,我可以使用 curl 下载文件到标准输出,然后解压内容:

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

我希望将解压文件放入 目录,如果该目录尚未创建(这样可以节省 mkdir 操作).

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

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

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

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

命令有什么问题?

问题是该目录不存在(参见此处: 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