从 GitHub 下载的最短方法

从 GitHub 下载的最短方法

这就是我如何从 GitHub 下载各种主分支,我的目标是有一个更漂亮脚本(也许更可靠?)。

wget -P ~/ https://github.com/user/repository/archive/master.zip
unzip ~/master.zip
mv ~/*-master ~/dir-name

可以用焦油和管道以某种方式将其缩短为一行吗?

请解决直接下载到主目录~/并为目录指定特定名称的问题(mv真的需要吗?)。

答案1

似乎您想要的最短路线是git clone https://github.com/user/repository --depth 1 --branch=master ~/dir-name。这只会复制 master 分支,它会复制尽可能少的额外信息,并将其存储在~/dir-name.

答案2

这会将文件克隆到它创建的新目录中:

git clone [email protected]:whatever NonExistentNewFolderName

答案3

让我们从我个人使用的 bash 函数开始:

wget_github_zip() {
  if [[ $1 =~ ^-+h(elp)?$ ]] ; then
    printf "%s\n" "Downloads a github snapshot of a master branch.\nSupports input URLs of the forms */repo_name, *.git, and */master.zip"
    return
    fi
  if [[ ${1} =~ /archive/master.zip$ ]] ; then
    download=${1}
    out_file=${1/\/archive\/master.zip}
    out_file=${out_file##*/}.zip
  elif [[ ${1} =~ .git$ ]] ; then
    out_file=${1/%.git}
    download=${out_file}/archive/master.zip
    out_file=${out_file##*/}.zip
  else
    out_file=${1/%\/} # remove trailing '/'
    download=${out_file}/archive/master.zip
    out_file=${out_file##*/}.zip
    fi
  wget -c ${download} -O ${out_file}
  }

您希望该文件始终名为 master.zip 并始终下载到您的主目录中,因此:

wget_github_zip() {
  if [[ $1 =~ ^-+h(elp)?$ ]] ; then
    printf "%s\n" "Downloads a github snapshot of a master branch.\nSupports input URLs of the forms */repo_name, *.git, and */master.zip"
    return
    fi
  if [[ ${1} =~ /archive/master.zip$ ]] ; then
    download=${1}
  elif [[ ${1} =~ .git$ ]] ; then
    out_file=${1/%.git}
    download=${out_file}/archive/master.zip
  else
    out_file=${1/%\/} # remove trailing '/'
    download=${out_file}/archive/master.zip
    fi
  wget -c ${download} -O ~/master.zip && unzip ~/master.zip && mv ~/master.zip ~/myAddons
  }

但是,您需要考虑以下几点:

1) 我的原始脚本将为每个下载提供一个唯一的下载 zip 文件名,该文件名基于 github 存储库的名称,这通常是大多数人真正想要的,而不是调用所有内容master并随后手动重命名它们以确保唯一性。在该版本的脚本中,您可以使用 $out_file 的值来唯一命名解压缩树的根目录。

2)如果您确实希望所有下载的zip文件都被命名~/master.zip,您是否想在解压缩后删除每个文件?

3)既然您似乎总是希望将所有内容都放在目录中~/myAddons,为什么不在那里执行所有操作,并且省去移动解压目录的需要?

答案4

这里有几种下载+解压的方法单行命令:

# With WGET and JAR:
wget -O - https://github.com/user/repo/archive/master.zip | jar xv

# With WGET and TAR:
wget -O - https://github.com/user/repo/archive/master.tar.gz | tar xz

# With CURL and JAR:
curl -L https://github.com/user/repo/archive/master.zip | jar xv

# With CURL and TAR:
curl -L https://github.com/user/repo/archive/master.tar.gz | tar xz

相关内容