如何在GitHub正确地使用 Curl 下载文件?

举报
wljslmz 发表于 2022/07/28 00:59:45 2022/07/28
【摘要】 Curl是在 Linux 终端中下载文件的绝佳工具。 下载与原始文件同名的文件的常用语法非常简单: curl -O URL_of_the_file 1 这在大多数情况下都有效,但是,您会注意到,有时...

Curl是在 Linux 终端中下载文件的绝佳工具。

下载与原始文件同名的文件的常用语法非常简单:

curl -O URL_of_the_file

  
 
  • 1

这在大多数情况下都有效,但是,您会注意到,有时当您从 GitHub 或 SourceForge 下载文件时,它不会获取正确的文件。

例如,我试图以 tar gz 格式下载 archinstall 脚本。这些文件位于发布页面上。

如果我在浏览器中打开这个源代码链接,它会得到 .tar.gz 格式的源代码。

但是,如果我使用终端使用 curl 命令下载相同的文件,我会得到一个不正确存档格式的小文件。

tar -zxvf v2.4.2.tar.gz 

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

当我运行 file 命令以了解确切的文件类型时,它告诉我它是一个 HTML 文档。

file v2.4.2.tar.gz 
v2.4.2.tar.gz: HTML document, ASCII text, with no line terminators

  
 
  • 1
  • 2

HTML 文档而不是存档 zip 或 tarball?问题出在哪里?让我告诉你快速修复。

使用 curl 正确下载存档文件

这里的问题是您拥有的 URL 重定向到实际的存档文件。为此,您需要使用其他选项。

curl -JLO URL_of_the_file

  
 
  • 1

选项可以按任何顺序排列。

这是基于 curl 命令手册页的选项的快速说明。

  • J:此选项告诉 -O, --remote-name 选项使用服务器指定的 Content-Disposition 文件名,而不是从 URL 中提取文件名。
  • L:如果服务器报告请求的页面已移动到不同的位置(用 Location: 标头和 3XX 响应代码指示),此选项将使 curl 在新位置重做请求。
  • O:使用此选项,您无需指定下载的输出文件名。

正如您在下面的屏幕截图中所见,这次我能够使用 curl -JLO 选项下载正确的文件。

额外提示:您需要登录吗?

这适用于公共文件,但是,如果您尝试从私有存储库或 GitLab 下载文件,那么您可能会看到有关重定向到登录页面的消息。

<html><body>You are being <a href="https://gitlab.com/users/sign_in">redirected</a>.</body></html>

  
 
  • 1

在这种情况下,请为 API 令牌提供 -H 选项。

文章来源: blog.csdn.net,作者:wljslmz,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43025343/article/details/124519562

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。