以下内容创建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
您可以将to的输出重定向/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
我不知道为什么它有效或无效,只是反复试验。