使用 cURL 下载文件解压到特定目录

使用 cURL 下载文件解压到特定目录

我希望下载的文件~/downloads保持相同的文件名。然后我希望将该文件(内容)提取到目录~/downloads/ok~/downloads/ok目录存在。

curl -Lo ~/downloads https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz | tar zxf -C ~/downloads/ok

我收到错误:tar (child): -C: Cannot open: No such file or directory

答案1

如果您将文件保存到 curl 中的某个位置,则管道到tar是没有意义的:管道上没有传输数据。并且f选项 intar用于从文件中读取(文件名必须是下一个参数),因此在管道中也没有用。要保存到文件并发送到管道,请使用tee

curl -L https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz |
  tee ~/downloads/0.1.1.tar.gz |
  tar zx -C ~/downloads/ok

答案2

你可能想要

(cd ~/downloads && curl -L https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz && cd ok && tar zxf ../0.1.1.tar.gz)

或更易读

(
    f='https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz'
    cd ~/downloads && 
    curl -L $f && 
    cd ok && 
    tar zxf ../${f##*/}
)

我使用括号在子 shell 中运行命令,因此当前 shell 中的当前目录不会改变

答案3

您需要将文件本身重定向到目标目录:

curl -LOk https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz > ~/downloads/0.1.1.tar.gz

并继续进行档案提取。

答案4

curl -SL https://download.example.org/abc.tar.gz | tar -zxC /opt

将产生/opt/abc文件夹。

提取-x-z目标目录.gz-C目标目录,

相关内容