이것이 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
. 이렇게 하면 마스터 브랜치만 복사되어 추가 정보를 최대한 적게 복사하여 ~/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
다운로드하고 압축을 푸는 여러 가지 방법이 있습니다.한 줄 명령:
# 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