ダッシュでのzsh multiosシミュレーション(マルチリダイレクト)

ダッシュでのzsh multiosシミュレーション(マルチリダイレクト)

zshそのオプションを有効にすると、出力を2つの異なるプロセスにパイプできます。multios

cat /dev/sda > sda.img | sha256sum > sda.img.sha256

dashieで同じ目標をどのように達成できますか/bin/sh

答え1

teeコピーストリームを使用して結果をファイル化してパイプし、sha256sum標準入力から読み取って別のファイルに書き込むことができます。ただし、標準入力インジケータから読み取るのは-オプションです。

</dev/sda tee sda.img | sha256sum - > sda.img.sha256

dashもちろん、これは最小限のシェルで動作するはずです。

zshデータは少数のパイプを通過するため、これは実際にはマルチオースを使用するよりも効率的です。ここで複数のOSアプローチを使用すると、1回読み取って2回書きteesha256sumzshの内部ティーイングプロセス(パイプ経由)で1回読み書きし、内部ティーイングプロセスで1回書き込んで2回読み込みます。 。teecatsha256sumcat

ksh次のようにプロセス置換()がサポートされている場合bash>(..)zsh

< /dev/sda tee >(sha256sum > sda.img.sha256) > sda.img

関連情報