在shell脚本中,我想从一些URL下载一个文件,并将其保存到特定的文件夹。用curl命令将文件下载到特定文件夹时,我应该使用什么特定的CLI标志,或者我如何得到这个结果?
curl
我不认为你可以给curl一个路径,但你可以CD到位置,下载和CD回来。
cd target/path && { curl -O URL ; cd -; }
或者使用subshell。
(cd target/path && curl -O URL)
只有路径存在时,两种方法才会下载。-O保存远程文件名。下载后它将返回到原来的位置。
-O
如果你需要显式设置filename,你可以使用小-o选项:
-o
curl -o target/path/filename URL
curl没有这样的选项(没有指定文件名),但wget有。目录可以是相对目录,也可以是绝对目录。此外,如果目录不存在,则会自动创建该目录。
wget
wget -P relative/dir "$url" wget -P /absolute/dir "$url"
--output-dir选项从旋度7.73.0开始可用:
--output-dir
curl --create-dirs -O --output-dir /tmp/receipes https://example.com/pancakes.jpg
对于Windows中的powershell,你可以将相对路径 + 文件名添加到--output标志:
--output
curl -L http://github.com/GorvGoyl/Notion-Boost-browser-extension/archive/master.zip --output build_firefox/master-repo.zip
这里build_firefox是相对文件夹。
这对我来说很管用:
curl http://centos.mirror.constant.com/8-stream/isos/aarch64/CentOS-Stream-8-aarch64-20210916-boot.iso --output ~/Downloads/centos.iso
地点:
--output允许我设置我想放置的文件和扩展名文件的路径和命名。
下面是一个使用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中完成了。
使用wget
wget -P /your/absolut/path "https://jdbc.postgresql.org/download/postgresql-42.3.3.jar"
将curl下载的文件放到指定的路径:
curl https://download.test.com/test.zip > /tmp/test.zip
显然“test.zip"是您想要标记重定向文件的任意名称-可以是相同的名称,也可以是不同的名称。
我实际上更喜欢@ oder解决方案,但这将让你绕过这个问题,直到你的发行版支持curl版本7.73.0或更高版本-