下面创建包含散列的csfile,解压缩go1.17.4.linux-amd64.tar.gz 从戈朗官方网站下载,打印校验和到stdout,然后删除不再需要的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?
发布于 2021-12-03 21:23:07
您可以将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我不知道为什么会起作用,只是试错而已。
https://unix.stackexchange.com/questions/680079
复制相似问题