Pipe
我如何將“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
到tar
和sha256sum
?
您可以重定向 to 的輸出
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
我不知道它為什麼會起作用,只是反複試驗。