Hi Pascal, > file_info(){ > echo -n ${1:=/dev/stdin}$'\t' > ( > tee < "${1}" \ > >( file --mime-type -b -e compress -e tar -e elf - >&3 ) \ > >( md5sum >&3 ) \ > >( sha1sum >&3 ) \ > >/dev/null > ) 3>&1 | > tr '\n' '\t' > echo > } > > it no longer works because the data flow is quickly interrupted by tee > which does not consume all the data. You're missing the reason why. tee(1) receives a SIGPIPE because it writes to a pipe that's closed. Adding a cat(1) is a waste of CPU, as is discarding tee's stdout instead of using it for one of the workers. Examine these differences. $ seq 31415 | wc 31415 31415 177384 $ seq 31415 | tee >(sed q) >(wc) > >(tr -d 42 | wc); sleep 1 1 14139 14109 62130 12773 12774 65536 $ seq 31415 | (trap '' pipe; tee >(sed q) >(wc) > >(tr -d 42 | wc)); sleep 1 1 31415 31369 142504 31415 31415 177384 $ Note the output of the commands can be in any order, and intermingle if they're long enough. tee(1) has -p and --output-error but they're not as specific as stating SIGPIPE is expected for just one worker. -- Cheers, Ralph.