Crie uma barra de progresso no bash lista as abordagens para obter uma barra de progresso , então vou me concentrar na parte Como falsificar aqui. Vou usar 2 segundos em vez dos seus 60 aqui apenas para testar, ajuste o valor sleep
para suas necessidades exatas.
Usando dialog
, whiptail
ou zenity
(GUI)
for i in {1..100}; do sleep 2; echo $i; done | dialog --gauge 'Running...' 6 60 0
Esse loop de for
faz um loop 1 sobre os números de um a cem e echo
s a cada 2
segundos, a saída é canalizada para dialog
, que mostra o número como o progresso em uma barra de progresso. Essa abordagem também funciona para whiptail
e zenity --progress
(GUI). A saída de dialog
é assim com uma barra de progresso colorida usando 'curses' no modo de texto:
Usandopv
for i in {1..100}; do sleep 2; echo; done | pv -pWs100 >/dev/null
Esse loop é muito semelhante, apenas que imprime apenas uma nova linha (= 1 byte de dados) a cada 2
segundos, pv
é então informado para esperar exatamente 100
bytes de dados e mostra p
barra de rogress. Em uma janela de terminal com uma largura de 80 caracteres, a saída é assim:
[===============> ] 22%
Construindo sua própria barra de progresso
Com um loop simples, você também pode construir sua própria barra de progresso. Aqui estão alguns exemplos que imprimem 100 #
em uma linha, uma por 2 segundos:
# number signs only
$ for i in {1..100}; do sleep 2; echo -n \#; done; echo
####################################################################################################
# with progress in % on the right
$ for i in {1..100}; do sleep 2; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "%3d%%\r" "$i"; done; echo
###################################################### 54%
# with progress in % on the left
$ for i in {1..100}; do sleep 2; printf "%3d%% " "$i"; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "\r"; done; echo
39% #######################################
1 Veja, um Polyptoton !