在shell脚本中,我想从一些URL下载一个文件,并将其保存到特定的文件夹。使用curl命令将文件下载到特定文件夹时,我应该使用哪个特定的CLI标志,或者如何获得该结果?
当前回答
使用wget
wget -P /your/absolut/path "https://jdbc.postgresql.org/download/postgresql-42.3.3.jar"
其他回答
我不认为你可以给curl一个路径,但你可以CD到位置,下载和CD回来。
cd target/path && { curl -O URL ; cd -; }
或者使用subshell。
(cd target/path && curl -O URL)
只有路径存在时,两种方法才会下载。-O保存远程文件名。下载后它将返回到原来的位置。
如果你需要显式地设置filename,你可以使用小的-o选项:
curl -o target/path/filename URL
Curl没有这样的选项(没有指定文件名),但wget有。目录可以是相对目录,也可以是绝对目录。此外,如果目录不存在,则会自动创建该目录。
wget -P relative/dir "$url"
wget -P /absolute/dir "$url"
对于Windows,在PowerShell中,curl是cmdlet Invoke-WebRequest的别名,这个语法是有效的:
curl "url" -OutFile file_name.ext
例如:
curl "https://airflow.apache.org/docs/apache-airflow/2.2.5/docker-compose.yaml" -OutFile docker-compose.yaml
来源:https://krypted.com/windows-server/its-not-wget-or-curl-its-iwr-in-windows/
下面是一个使用Batch从URL创建一个安全文件名的例子,并将其保存到名为tmp/的文件夹中。我确实认为奇怪的是,Windows或Linux的Curl版本没有这个选项。
@echo off
set url=%1%
for /r %%f in (%url%) do (
set url=%%~nxf.txt
curl --create-dirs -L -v -o tmp/%%~nxf.txt %url%
)
上面的批处理文件将接受一个输入,一个URL,并从URL创建一个文件名。如果没有指定文件名,它将被保存为tmp/.txt。这不是完全为你完成的但它在Windows中完成了。
对于Windows中的powershell,您可以在——output标志中添加相对路径+文件名:
curl -L http://github.com/GorvGoyl/Notion-Boost-browser-extension/archive/master.zip --output build_firefox/master-repo.zip
这里build_firefox是相对文件夹。
推荐文章
- 如何防止rm报告文件未找到?
- 如何检查shell脚本中是否存在命令?
- Bash:获取输出的第n列的最短方法
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何获得一个变量值,如果变量名存储为字符串?
- RVM不是一个函数,用' RVM use…’不会起作用
- 如何打破一个循环在Bash?
- 如何从终端机发送电子邮件?
- Linux Bash中双&和分号有什么区别?
- 如何合并2 JSON对象从2个文件使用jq?
- 在Bash中模拟do-while循环
- 在Bash中将输出赋给变量
- HTTPS和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA is OK
- 如何在Mac OS X 10.6中使硬件发出哔哔声
- 从Docker容器获取环境变量