[Eu acabei de perceber que seu script é perl , mas a mesma lógica se aplica, print "\r"
, etc. Você vai querer usar STDERR
ou desligar o buffer, $| = 1
. Veja no fundo.]
Uma maneira de implementar um "indicador de progresso" da CLI envolve o uso do caractere \r
(retorno de carro). Isso traz o cursor para o começo da linha atual:
#!/bin/bash
count=0
while ((1)); do
echo -ne "\rCount: $count"
sleep 1;
count=$(($count+1));
done
Se não fizer sentido, tente.
Você poderia usar essa técnica para indicar quantas linhas, ou milhares de linhas, foram processadas até o momento. Dezenas ou centenas de linhas podem ser boas, já que não é muito frequente (mais atualizações == tempo de execução mais lento), mas provavelmente ainda com freqüência suficiente para mostrar que o progresso está continuando. Você pode especificar uma unidade ou apenas acrescentar zeros.
Observe o uso de -n
e -e
com echo
, isso é importante.
Você também pode usar \b
(backspace) para efeito semelhante.
Em perl:
#!/usr/bin/perl
use strict;
use warnings FATAL => qw(all);
$| = 1; # Pipeline stdout (i.e., no buffering).
my $count = 1;
while ($count) {
print "\rCount $count";
sleep 1;
$count++;
}