以下は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
ベースで一部 それを勉強する私は次の2つの行コードを試しました(役に立ちません。アーカイブの解凍とバイナリ出力が画面に飛び出しましたが)。
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)
一方、次の2つのシングルライナーのいずれもアーカイブを圧縮しませんが、両方ともバイナリ出力を吐き出してチェックサムを生成します。
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
なぜ動作するのか、動作しないのかわかりません。試行錯誤だけあるだけです。