在shell脚本中,我想从某个URL下载一个文件并将其保存到特定的文件夹。使用curl命令将文件下载到特定文件夹时,我应该使用什么特定的CLI标志,或者我还可以如何获得该结果?
curl
xuo3flqw1#
我不认为你可以给予curl一个路径,但是你可以CD到这个位置,下载和CD回来。
cd target/path && { curl -O URL ; cd -; }
或者使用子shell。
(cd target/path && curl -O URL)
如果路径存在,两种方式都将只下载-O保留远程文件名下载后,它将返回到原始位置如果需要显式设置文件名,可以使用小-o选项:
-O
-o
curl -o target/path/filename URL
wvmv3b1j2#
--output-dir选项自curl 7.73.0起可用:
--output-dir
curl --create-dirs -O --output-dir /tmp/receipes https://example.com/pancakes.jpg
oxosxuxt3#
curl没有这个选项(没有指定文件名),但是wget有。目录可以是相对的,也可以是绝对的。同样,如果目录不存在,系统会自动创建它。
wget
wget -P relative/dir "$url" wget -P /absolute/dir "$url"
vddsk6oq4#
这对我很有效:
curl http://centos.mirror.constant.com/8-stream/isos/aarch64/CentOS-Stream-8-aarch64-20210916-boot.iso --output ~/Downloads/centos.iso
其中:--output允许我设置要放置的文件和扩展名文件的路径和命名。
--output
afdcj2ne5#
这可以将curl下载的文件放到指定的路径中:
curl https://download.test.com/test.zip > /tmp/test.zip
显然,“* test.zip *”是您想要用来标记重定向文件的任意名称-可以是相同的名称或不同的名称。我实际上更喜欢@oderibas解决方案,但这会让您绕过这个问题,直到您的发行版支持curl 7.73.0或更高版本-
esbemjvw6#
对于Windows中的powershell,您可以将 * 相对路径 * + * 文件名 * 添加到--output标志:
curl -L http://github.com/GorvGoyl/Notion-Boost-browser-extension/archive/master.zip --output build_firefox/master-repo.zip
这里 build_firefox 是相对文件夹。
zxlwwiss7#
使用wget
wget -P /your/absolut/path "https://jdbc.postgresql.org/download/postgresql-42.3.3.jar"
r1wp621o8#
下面是一个使用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中完成工作。
8条答案
按热度按时间xuo3flqw1#
我不认为你可以给予curl一个路径,但是你可以CD到这个位置,下载和CD回来。
或者使用子shell。
如果路径存在,两种方式都将只下载
-O
保留远程文件名下载后,它将返回到原始位置如果需要显式设置文件名,可以使用小
-o
选项:wvmv3b1j2#
--output-dir
选项自curl 7.73.0起可用:oxosxuxt3#
curl
没有这个选项(没有指定文件名),但是wget
有。目录可以是相对的,也可以是绝对的。同样,如果目录不存在,系统会自动创建它。vddsk6oq4#
这对我很有效:
其中:
--output
允许我设置要放置的文件和扩展名文件的路径和命名。afdcj2ne5#
使用重定向:
这可以将
curl
下载的文件放到指定的路径中:显然,“* test.zip *”是您想要用来标记重定向文件的任意名称-可以是相同的名称或不同的名称。
我实际上更喜欢@oderibas解决方案,但这会让您绕过这个问题,直到您的发行版支持curl 7.73.0或更高版本-
esbemjvw6#
对于Windows中的powershell,您可以将 * 相对路径 * + * 文件名 * 添加到
--output
标志:这里 build_firefox 是相对文件夹。
zxlwwiss7#
使用wget
r1wp621o8#
下面是一个使用Batch从URL创建一个安全文件名并将其保存到名为**tmp/**的文件夹中的示例。我确实认为这很奇怪,Windows或Linux Curl版本上没有这个选项。
上面的批处理文件只需要输入一个URL,然后从URL转换为文件名。如果没有指定文件名,它将被保存为tmp/.txt。所以这不是为你做的,但是它可以在Windows中完成工作。