でzsh
そのオプションを有効にすると、出力を2つの異なるプロセスにパイプできます。multios
cat /dev/sda > sda.img | sha256sum > sda.img.sha256
dash
ieで同じ目標をどのように達成できますか/bin/sh
?
答え1
tee
コピーストリームを使用して結果をファイル化してパイプし、sha256sum
標準入力から読み取って別のファイルに書き込むことができます。ただし、標準入力インジケータから読み取るのは-
オプションです。
</dev/sda tee sda.img | sha256sum - > sda.img.sha256
dash
もちろん、これは最小限のシェルで動作するはずです。
zsh
データは少数のパイプを通過するため、これは実際にはマルチオースを使用するよりも効率的です。ここで複数のOSアプローチを使用すると、1回読み取って2回書きtee
、sha256sum
zshの内部ティーイングプロセス(パイプ経由)で1回読み書きし、内部ティーイングプロセスで1回書き込んで2回読み込みます。 。tee
cat
sha256sum
cat
ksh
次のようにプロセス置換()がサポートされている場合bash
>(..)
zsh
< /dev/sda tee >(sha256sum > sda.img.sha256) > sda.img