에서 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
dash
물론 이것은 최소한의 쉘에서 작동해야 합니다.
zsh
데이터가 더 적은 수의 파이프를 통과하기 때문에 이는 실제로 multios를 사용하는 것보다 더 효율적입니다. 여기서 다중 OS 접근 방식을 사용하면 한 번 읽고 tee
두 sha256sum
번 쓰고, zsh의 내부 티잉 프로세스(파이프를 통해)에서 한 번 읽고 쓰고, 내부 티잉 프로세스에서 한 번 쓰고 두 번 읽습니다. .tee
cat
sha256sum
cat
ksh
다음과 같이 프로세스 대체()가 지원되는 경우bash
>(..)
zsh
< /dev/sda tee >(sha256sum > sda.img.sha256) > sda.img