"wget ​​​​-qO-whatever.tar.gz"의 출력을 tar 및 sha256sum으로 어떻게 지정합니까?

"wget ​​​​-qO-whatever.tar.gz"의 출력을 tar 및 sha256sum으로 어떻게 지정합니까?

다음은 csfile그 안에 해시를 생성하고 압축을 푼다.go1.17.4.linux-amd64.tar.gz Golang 공식 홈페이지에서 다운로드, 체크섬을 표준 출력으로 인쇄하고 더 이상 필요하지 않은 항목을 삭제합니다 csfile.

wget -qO- https://go.dev/dl/go1.17.4.linux-amd64.tar.gz|tee >(sha256sum>csfile) |tar -xz && cat csfile && rm csfile

. csfile​기반으로일부 그걸 공부해나는 다음 두 가지 한 줄짜리 코드를 시도했습니다(소용이 없습니다. 아카이브의 압축이 풀리고 바이너리 출력이 화면에 튀어나왔지만).

wget -qO- https://go.dev/dl/go1.17.4.linux-amd64.tar.gz|tee >(sha256sum) >(sudo tar -xz>/dev/null)
wget -qO- https://go.dev/dl/go1.17.4.linux-amd64.tar.gz|tee >(sudo tar -xz>/dev/null) >(sha256sum)

반면에 다음 두 개의 단일 라이너 중 어느 것도 아카이브를 압축하지 않지만 둘 다 바이너리 출력을 뱉어낸 후 체크섬을 생성합니다.

wget -qO- https://go.dev/dl/go1.17.4.linux-amd64.tar.gz|tee >(xargs tar -xz) >(sha256sum)
wget -qO- https://go.dev/dl/go1.17.4.linux-amd64.tar.gz|tee >(sudo xargs tar -xz>/dev/null) >(sha256sum)

바이너리 출력이 화면에 나타나는 이유는 무엇입니까? 뱉어냈나요 tar, 아니면 뱉어냈나요 sha256sum? 가능하다면 피하고 싶습니다 sudo. 의 wget출력 을 어떻게 지시합니까 ?tarsha256sum

답변1

sha256sum출력을 /dev/tty화면에 인쇄하도록 리디렉션할 수 있습니다. 예를 들면 다음과 같습니다.

wget -qO- https://go.dev/dl/go1.17.4.linux-amd64.tar.gz|tee >(sha256sum > /dev/tty) |tar -xz

아래 코드도 작동할 것 같습니다. 프로세스 대체에 tar를 넣고 파이프 뒤에 sha256sum을 넣으면 됩니다. 내 컴퓨터에서는 바이너리 출력이 화면에 표시되지 않습니다.

wget -qO- https://go.dev/dl/go1.17.4.linux-amd64.tar.gz | tee >(tar -xz) | sha256sum

왜 작동하는지, 작동하지 않는지 모르겠습니다. 시행착오만 있을 뿐입니다.

관련 정보