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. 이렇게 하면 마스터 브랜치만 복사되어 추가 정보를 최대한 적게 복사하여 ~/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 값을 사용하여 압축 해제 트리의 루트 이름을 고유하게 지정할 수 있습니다.

zip2) 다운로드한 모든 파일의 이름을 정말로 지정하려면 ~/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

관련 정보