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)我的原始脚本会根据 github 存储库的名称为每次下载提供一个唯一的下载 zip 文件名,这通常是大多数人真正想要的,而不是调用所有内容,master之后必须手动重命名它们以保持唯一性。在该版本的脚本中,您可以使用 $out_file 的值来唯一命名解压缩树的根目录。
# 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
似乎是您想要的最短方式是
git clone https://github.com/user/repository --depth 1 --branch=master ~/dir-name
. 这只会复制 master 分支,它会复制尽可能少的额外信息,并将其存储在~/dir-name
.这会将文件克隆到它创建的新目录中:
让我们从我个人使用的 bash 函数开始:
您希望该文件始终称为 master.zip 并始终下载到您的主目录中,因此:
但是,您需要考虑以下几点:
1)我的原始脚本会根据 github 存储库的名称为每次下载提供一个唯一的下载 zip 文件名,这通常是大多数人真正想要的,而不是调用所有内容,
master
之后必须手动重命名它们以保持唯一性。在该版本的脚本中,您可以使用 $out_file 的值来唯一命名解压缩树的根目录。2) 如果你真的希望所有下载
zip
的文件都被命名~/master.zip
,你想在解压后删除它们吗?3)既然您似乎总是希望将所有内容都放在目录中
~/myAddons
,为什么不在那里执行所有操作,而不必移动解压缩的目录?以下是在oneliner 命令中下载 + 解压缩的几种方法: