#!/bin/zsh if ! zmodload zsh/zselect; then shift exec "$@" fi if (($+commands[tailf])); then coproc tailf -0 $1 else coproc tail -F -n 0 $1 fi shift "$@" | { exec 3<& p while true; do unset FDS if zselect -A FDS -r 0 3; then if ((${+FDS[3]})); then if IFS= read -t 1 -r -u 3 line; then printf >&2 ">> %s\n" "$line" fi fi if ((${+FDS[0]})); then IFS= read line || break printf "%s\n" "$line" fi elif (($#FDS)); then break fi done } exit $pipestatus[1]