bash 스크립트: 최신 버전의 go를 검색하는 더 우아한 방법은 무엇입니까?

bash 스크립트: 최신 버전의 go를 검색하는 더 우아한 방법은 무엇입니까?

경고: 이 작은 bash 라인과 여기에 있는 질문은 모두 학습 목적을 위한 것입니다. "그냥 브라우저를 열면" 가능하다는 것을 깨달았기 때문입니다.

내가 착각하지 않는 한, Google은 최신 버전의 golang을 다운로드할 수 있는 스크립트 친화적인 방법을 제공하지 않습니다. 내가 본 스크립트(예:요점) 여전히 Go 버전 번호를 알고 수동으로 입력해야 합니다.

내 목표최신 버전을 조회하지 않고도 자동으로 검색할 수 있는지 알아보는 것이었습니다.

내 솔루션작동하지만 더 간결하고 깔끔한 방법을 배우고 싶습니다.

GOURL=$(curl https://golang.org/dl/ 2>&1 | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | awk '/tar.gz/' | awk NR==1)

간단히 말해서, golang의 다운로드 페이지에서 모든 링크를 가져오고, tar.gz 링크만 유지하도록 URL을 정리하고, 마지막으로 필요한 정확한 링크인 출력의 첫 번째 줄을 유지합니다. 지금 당장은:go.1.8.3.

다시한번 말씀드리지만 학습용입니다. 시간 내 줘서 고마워.

편집하다:나는 받아 들였다'GMaster의 제안추가 도구 없이 내 솔루션을 개선했기 때문입니다. 그러나 추가 도구를 찾는 데 도움을 준 다른 논평가들에게 감사드립니다. 앞으로 추가될 내용을 간절히 기대하고 있지만, 요청 사항이 충분히 해결되었으므로 이 글을 닫는 것이 최선이라고 생각했습니다.

답변1

당신이 보면https://golang.org/dl/페이지를 방문하면 추천 다운로드에 최신 버전이 표시됩니다. 이제 Google이 페이지의 HTML 구조를 변경하지 않는다고 가정하면 이것이 더 깔끔한 버전입니다.

GOURL=$(curl -s https://golang.org/dl/ | grep 'download.*downloadBox' | grep -o 'https.*linux.*gz')

답변2

우아함은 대부분 주관적입니다. Go 릴리스를 주시하는 쉬운 방법은 시계를 설정하는 것입니다.릴리스GitHub 페이지를 방문하거나 다음을 추가하세요.관련 피드뉴스 피드에 추가합니다(RSS 피드를 사용한다고 가정).

curl하지만 + 보다 더 영리해 보이는 명령이 필요한 경우 grep다음을 사용하세요.지델:

{ echo -n url=; xidel https://golang.org/dl/ -s -e '//a[./div="Source"]/@href'; } | \
    curl -s -S -O -K -

여기에서는 xidelXPath를 사용하여 다운로드 페이지에서 관련 URL을 추출한 후 curl다운로드합니다. 아마도 여기서는 너무 과잉일 수 있지만 xidel다른 작업에는 유용할 수 있습니다.

답변3

Bash 스크립트가 필요하지 않습니다. xidelgolang 웹 사이트를 구문 분석하는 데 필요한 전부입니다. 파일을 다운로드하려는 경우 둘 중 하나도
필요하지 않습니다 .curl

최신 golang 소스의 URL을 추출하려면:

$ xidel -s "https://golang.org/dl" -e '//a[div="Source"]/resolve-uri(@href)'
#or
$ xidel -s "https://golang.org/dl" -e 'resolve-uri(//tr[td="Source"]/td/a/@href[1])'
https://golang.org/dl/go1.16.5.src.tar.gz

물론 이 URL을 다운로드할 수도 있습니다 curl...

$ curl -LO "$(xidel -s "https://golang.org/dl" -e '//a[div="Source"]/resolve-uri(@href)')"

...하지만 xidel그것도 할 수 있어...

$ xidel -s "https://golang.org/dl" -f '//a[div="Source"]/resolve-uri(@href)' --download '.'

...다운로드'go1.16.5.src.tar.gz'현재 디렉토리로.

관련 정보