为什么curl给我的是html而不是文件?

为什么curl给我的是html而不是文件?

我正在尝试(学习)使用curl来下载文件http://cscope.sourceforge.net/cscope_maps.vim。我尝试过的命令是:

curl -o cscope_maps.vim cscope.sourceforce.net/cscope_maps.vim
curl -O cscope.sourceforce.net/cscope_maps.vim
curl -LO cscope.sourceforce.net/cscope_maps.vim
curl -L cscope.sourceforce.net/cscope_maps.vim > cscope_maps.vim

上述所有命令都会导致我得到一个包含以下内容的文件:

<html><head><script type="text/javascript">location.replace("https://malware.opendns.com/?url=cscope.sourceforce.net%2Fcscope_maps.vim&server=lax20&prefs=&tagging=&nref");</script></head></html>

...而不是实际的文件。我做错了什么,下载文件的正确语法是什么curl

(如果我在图形浏览器中输入注明的 URL,我会看到预期的文件内容,因此我确信该 URL 是正确的)

PS:我想学习如何用curl而不是解决这个问题wget

我还尝试过什么

我读https://stackoverflow.com/questions/27458797/curl-command-doesnt-download-the-file-linux-mint这促使我尝试这些-L选项,但如上所述,这并没有改变观察到的行为。

答案1

您的开场白表明您正在尝试从以下位置下载sourceforge.net

“我正在尝试(学习)使用它curl来下载文件http://cscope.sourceforge.net/cscope_maps.vim...”

但是,您的尝试正在使用 sourcefor ce.net

卷曲手册页描述你正在尝试做的事情:

卷曲 [选项] [URL...]

-o选项就是您正在寻找的:

-o/--输出

将输出写入而不是标准输出。如果您使用 {} 或 [] 来获取多个文档,则可以在说明符中使用“#”后跟数字。该变量将替换为正在获取的 URL 的当前字符串。像:

卷曲 http://{one,two}.site.com -o "file_#1.txt"

或使用多个变量,例如:

卷曲 http://{site,host}.host[1-5].com -o "#1_#2"

您可以根据 URL 的数量多次使用此选项。

一旦拼写正确,您的第一次尝试应该会成功sourceforge

curl -o cscope_maps.vim cscope.sourceforge.net/cscope_maps.vim  

这对我有用。

相关内容