#!/bin/zsh monitor() { local time=$1 local lines=0 local elines=0 local stop=0 shift trap stop=1 INT while [ $stop -eq 0 ]; do [ $lines -gt 1 ] && echo -en "\e[${lines}A" [ $elines -gt 0 ] && echo -en "\e[${elines}A" lines=0 elines=0 ($@ | fold -w $COLUMNS | while read -r; do echo -E "$REPLY" let lines++ done) 2>&1 | fold -w $COLUMNS | while read -r; do echo -E "$REPLY" >&2 let elines++ done sleep $time || break done }