如何让CURL保存到不同的目录?

Geu*_*uis 6 bash curl

我需要能够传递文件下载的URL,以及要保存到的文件的路径.

我认为它与CURL上的-O和-o有关,但我似乎无法弄明白.

例如,这就是我现在在bash脚本中使用的内容:

#!/bin/sh

getsrc(){
    curl -O $1
}

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz
Run Code Online (Sandbox Code Playgroud)

如何更改curl语句以便我可以这样做

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz /usr/local
Run Code Online (Sandbox Code Playgroud)

并将文件保存到/ usr/local?

lhu*_*ath 7

如果这是一个脚本,你应该确保你准备好应对任何意外情况:

getsrc() {
    ( cd "$2" && curl -O "$1" )
}
Run Code Online (Sandbox Code Playgroud)

这意味着引用您的参数,以防它们包含shell元字符,如问号,星号,空格,制表符,换行符等.

它还意味着在目标目录不存在的情况下在命令和命令&&之间使用运算符(如果你不使用它,curl仍会下载而不会出错但是将文件放在错误的位置!)cdcurl

该函数有两个参数:

  • 应下载数据的URL.
  • 应存储数据的本地PATH(使用基于URL的文件名)

要指定本地文件名而不是路径,请使用更简单的文件:

getsrc() {
    curl "$1" > "$2"
}
Run Code Online (Sandbox Code Playgroud)


Var*_*han 6

嗯......你可能想做的是

getsrc(){
    ( cd $2 > /dev/null ; curl -O $1 ; ) 
}
Run Code Online (Sandbox Code Playgroud)

-O(大写字母O)表示存储在名为远程文件的本地,但忽略远程路径组件.为了能够存储在特定目录中,最简单的方法是cd到它...我在子shell中这样做,所以dir更改不会传播