因此,经过一段时间的Google和超级用户搜索(以及扫描手册页)后,我无法找到答案(我认为)应该很简单:

如果您在这里:

http://www.vim.org/scripts/script.php?script_id=2340


并尝试下载主题:

http://www.vim.org/scripts/download_script.php?src_id=9750


像这样:

wget http://www.vim.org/scripts/download_script.php?src_id=9750


您可能最终会得到一个名为download_script.php?src_id=9750的文件。

但是我希望将其命名为molokai.vim,如果我使用浏览器下载该文件,将会发生这种情况这个文件。

我需要为wget指定什么选项以达到预期的效果?

我也可以使用Curl等效命令。

#1 楼

-O file
--output-document=file



文档不会被写入适当的文件,但是所有文件将被串联在一起并写入文件。
如果将-用作文件,则将打印文件到标准输出,禁用链接转换。 (使用./-打印到字面上叫-.的文件)


所以,

wget -O somefile.extension http://www.vim.org/scripts/download_script.php?src_id=9750


或者您也许可以得到如果您的版本支持,请使用--content-disposition选项解决此问题。

wget --content-disposition http://www.vim.org/scripts/download_script.php?src_id=9750


根据手册页的说明

--content-disposition



如果将其设置为on,则启用对“ Content-Disposition”标头的实验性(非全功能)支持。当前,这可能会导致针对“ HEAD”请求的服务器额外往返,并且已知会遇到一些错误,这就是为什么默认情况下当前未启用它的原因。
此选项对于某些使用“ Content-Disposition”标头描述下载文件的名称的文件下载CGI程序很有用。


使用wget可以实现相同的自动化行为,使用

curl -JLO http://www.vim.org/scripts/download_script.php?src_id=9750
使用远程名称,并且curl强制-O从内容处置标头而非URL中获取该名称,并且-J遵循重定向如果需要。

评论


我应该指定这需要自动进行

–audio.zoom
2011年6月23日12:05

据我了解,wget依赖于网页正确通知它URL是否指向文件,并且需要使用内容配置标头以不同的方式保存它,而wget可能支持也可能不完全支持。因此,您无法使用wget自动执行此操作。根据网页的不同,Curl可能会或多或少地获得成功。

– EightBitTony
2011年6月23日在12:08

啊哈-我错了,请参阅最新答案。这就是为什么stackexchange网站运行良好的原因-每个人都学到一些东西,甚至有人回答问题!

– EightBitTony
2011年6月23日12:20



添加了使curl起作用的curl参数。

– EightBitTony
2011年6月23日12:46

这对我来说适合stackexchange播客,这困扰了我一段时间。谢谢。

–理查德·坎贝尔
2011年10月5日在20:41

#2 楼

使用wget,您可以执行以下操作:

wget --trust-server-names <url> 


,使用服务器为您提供的最后一个文件名保存文件。

评论


我想知道--trust-server-names和--content-disposition有什么区别

–JamesTheAwesomeDude
2015年6月10日15:43

看起来--trust-server-names跟随重定向到另一个文件,而--content-disposition使用响应标头中指定的名称来命名该文件,而无需任何重定向。

–阿斯范·卡兹
15年7月6日在10:26



为什么没有此默认功能?!?!

–hopeseekr
16年5月8日在17:16

@hopeseekr如果您没有仔细观察,服务器可能很顽皮,请调用文件.bashrc。 listing.gnu.org/archive/html/bug-wget/2012-04/msg00059.html

–帕特里克·康海蒂
16-10-26在23:46

非常有帮助我正在下载某些东西,它的名字是没有任何证明的下载。好烦

– avijit bhattacharjee
20 Sep 25'3:09

#3 楼

您也可以使用aria2c-与Content-Disposition标头一起使用似乎很好。

#4 楼

通过以下方法工作:

curl -o molokai.vim http://www.vim.org/scripts/download_script.php?src_id=9750

wget -O somefile。扩展名http://www.vim.org/scripts/download_script.php?src_id=9750

(将大小写更改为较小,即(wget -O)变为(wget -o)