다음은 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
출력 을 어떻게 지시합니까 ?tar
sha256sum
답변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
왜 작동하는지, 작동하지 않는지 모르겠습니다. 시행착오만 있을 뿐입니다.