Se você puder manter todas as informações de progresso na mesma linha, use \r
para isso:
#!/bin/bash
echo -n "Step 1: Apt-get update"
while :;do echo -n .;sleep 1;done &
trap "kill $!" EXIT
sudo apt-get update 2>&1 >/dev/null
kill $! && trap " " EXIT
echo -e "\rStep 1: Apt-get update finished"
Isso exibe os períodos na mesma linha como "Etapa 1 ..." e, em seguida, substitui a linha pela mensagem "concluído". Pode ser necessário adicionar espaços dentro das aspas depois de "terminado" para cobrir todos os pontos; você também pode querer contar os pontos e evitar quebra de linha (mantendo o controle de quanto você tem saída em comparação com $COLUMNS
).
É altamente recomendável que você registre a saída de apt-get
em um arquivo, em vez de descartá-lo totalmente. Especialmente no caso upgrade
, você precisará da saída para solucionar quaisquer erros que possam acontecer ...
Uma abordagem mais fácil seria usar apt
em vez de apt-get
: exibe barras de progresso agradáveis e as remove de maneira limpa quando terminar.