如何通过命令行下载GitHub Issue的附件?
如何通过命令行下载GitHub Issue的附件?
嘿,我来帮你搞定这个问题!你遇到的是组织内仓库Issue附件的认证障碍,直接用curl -u或者普通wget确实会踩坑,下面给你几个亲测有效的解决办法:
首先先确认前提:你的GitHub个人访问令牌(PAT)必须开启repo权限,不然就算命令写对了也没权限访问组织内的私有仓库内容。
方法一:用curl带认证头下载
把你的PAT放到请求头里,这是GitHub现在最推荐的认证方式,比-u更可靠:
# 替换成你的PAT和目标文件URL curl -H "Authorization: token YOUR_GITHUB_PAT" -O "https://github.com/<org>/<repo>/files/<number>/<file>"
这里的-O参数会让curl把文件保存成原文件名,不用手动指定。
方法二:用wget实现同样效果
wget需要用--header参数传递认证信息,写法如下:
wget --header="Authorization: token YOUR_GITHUB_PAT" "https://github.com/<org>/<repo>/files/<number>/<file>"
如果你想用R来下载
用httr包可以轻松实现,代码示例如下:
library(httr) # 替换成你的目标URL和PAT target_url <- "https://github.com/<org>/<repo>/files/<number>/<file>" github_token <- "YOUR_GITHUB_PAT" # 发送带认证的请求并保存文件 response <- GET(target_url, add_headers(Authorization = paste("token", github_token))) writeBin(content(response, "raw"), basename(target_url))
额外安全提醒
千万不要把你的PAT直接硬写到脚本里!建议用环境变量来存储,比如在命令行里先执行:
export GITHUB_TOKEN="你的令牌内容"
之后curl/wget里就可以用$GITHUB_TOKEN代替明文令牌,比如:
curl -H "Authorization: token $GITHUB_TOKEN" -O "目标URL"
备注:内容来源于stack exchange,提问作者jiraffe
相关产品推荐
相关产品推荐

