これがGitHubからさまざまなマスターブランチをダウンロードする方法です。私の目標はもっと美しいスクリプト(おそらくより安定していますか?)
wget -P ~/ https://github.com/user/repository/archive/master.zip
unzip ~/master.zip
mv ~/*-master ~/dir-name
タールとパイピングを使用して何らかの方法で1行に減らすことはできますか?
ホームディレクトリに直接ダウンロード~/
し、ディレクトリに特定の名前を付ける問題を解決してください(mv
本当に必要ですか?)。
答え1
ほしい最短ルートはようですgit clone https://github.com/user/repository --depth 1 --branch=master ~/dir-name
。これにより、マスターブランチのみがコピーされ、追加情報をできるだけ少なくコピーできます~/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)私の元のスクリプトは、各ダウンロードにgithubリポジトリの名前に基づいて一意のダウンロードzipファイル名を提供します。これは通常、すべてを呼び出してからmaster
一意性を確保するために手動で名前を変更するのではなく、ほとんどの人が実際に望むものです。このバージョンのスクリプトでは、$ out_file値を使用して解凍ツリーのルート名を一意に指定できます。
zip
2)ダウンロードしたすべてのファイルの名前を本当に指定したい場合は、解凍~/master.zip
後に各ファイルを削除してもよろしいですか?
3) 常にディレクトリ内のすべてが欲しいと思うので、そこで~/myAddons
すべての作業を行い、解凍したディレクトリを移動する必要をなくすのはどうでしょうか?
答え4
ダウンロードして解凍する方法はいくつかあります。1行コマンド:
# 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