在 dash 中模拟 zsh multios(多个重定向)

在 dash 中模拟 zsh multios(多个重定向)

在 中,启用zsh该选项后,我可以将输出通过管道传输到两个不同的进程,即: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

这当然应该适用于任何最小的 shell,例如dash.

zsh实际上,这里比使用multios更有效,因为数据通过的管道更少。在这里,使用多操作系统方法,它被读取一次tee,一次被sha256sum写入两次,它被读取一次,一次被zsh的内部teeing进程(通过管道)读取一次,一次被写入一次,两次被内部teeing进程读取。 。teecatsha256sumcat

在支持进程替换( ) 的地方,ksh例如在 中,您可以使用它bash>(..)zsh

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

相关内容