我正在尝试使用cURL从GitHub下载tarball,但它似乎没有重定向:
$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2
<html><body>You are being <a href="https://nodeload.github.com/pinard/Pymacs/tarball/v0.24-beta2">redirected</a>.</body></html>
注意:wget适合我:
$ wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2
但是我想使用cURL,因为最终我想用以下内容解压缩它:
$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
我发现重定向后的网址为https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz,但我希望cURL足够聪明,可以解决这个问题。
答案 0 :(得分:124)
使用-L
选项关注重定向:
curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
答案 1 :(得分:38)
现代化的做法是:
curl -sL https://github.com/user-or-org/repo/archive/sha1-or-ref.tar.gz | tar xz
相应地替换user-or-org
,repo
和sha1-or-ref
。
如果您想要一个zip文件而不是tarball,请指定.zip
而不是.tar.gz
后缀。
您还可以通过指定curl的-u token:x-oauth-basic
选项来检索私人仓库的归档。将token
替换为personal access token.
答案 2 :(得分:14)
您也可以使用wget»解压缩内联«。只需将stdout指定为输出文件(-O -
):
wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2 -O - | tar xz
答案 3 :(得分:2)
所有其他解决方案都需要指定发行/版本号,这显然会破坏自动化。
此解决方案-已通过当前测试,并且已知可与 Github API v3 一起使用-但是可用于以编程方式获取 LATEST 版本,而无需指定任何标签或发行版号,并将二进制文件解压缩为您在开关--one-top-level="pi-ap"
中指定的任意名称。只需换出用户 f1linux 并在以下示例中回购 pi-ap 并输入您自己的详细信息,而Bob是您的叔叔:
curl -L https://api.github.com/repos/f1linux/pi-ap/tarball | tar xzvf - --one-top-level="pi-ap" --strip-components 1
答案 4 :(得分:1)
带有特定的目录
cat test | grep -i alw| awk '{print $0",steve"}'
always-a-constant:::pete,steve