Você pode usar o comando expect
unbuffer
, por exemplo
unbuffer long_running_command | print_progress
unbuffer
conecta-se a long_running_command
através de um pseudoterminal (pty), o que faz com que o sistema o trate como um processo interativo, portanto não usando o buffer de 4-kiB no pipeline que é a causa provável do atraso. / p>
Para pipelines mais longos, você pode ter que unbuffer cada comando (exceto o final), por exemplo,
unbuffer x | unbuffer -p y | z