Eu não consegui ver uma maneira de fazer isso usando bar
. No entanto, você pode estar interessado nesses outros comandos que fazem a mesma coisa, que podem atender melhor às suas necessidades.
Método 1 - Fake
Esse método simplesmente sobrescreverá o que foi exibido anteriormente na tela com uma barra de progresso maior. Simples, mas eficaz.
Exemplo, ex.bash
:
#!/bin/bash
echo -ne '##### (33%)\r'
sleep 1
echo -ne '############# (66%)\r'
sleep 1
echo -ne '####################### (100%)\r'
echo -ne '\n'
Método # 2 - pipeview
O comando pv
fornece a funcionalidade da barra de progresso. Você pode ver exemplos mais elaborados neste artigo intitulado: Um utilitário Unix que você deve saber sobre: Pipe Viewer .
$ pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=> ] 15% ETA 0:00:59
Método # 3 - spinner
Você pode usar o seguinte código de exemplo para construir seu próprio "giratório" usando um loop simples. Dentro do loop, você poderia incorporar qualquer comando que desejar. Este código vem deste artigo, intitulado: Posso fazer um spinner no Bash? .
#!/bin/bash
sp='/-\|'
printf ' '
for i in $(seq 3); do
printf '\b%.1s' "$sp"
sp=${sp#?}${sp%???}
sleep 1
done
echo ''
Método 4 - diálogo
Existe um comando chamado dialog
, que faz praticamente o que você deseja. Ele faz uso de diálogos gráficos, mas eles são baseados em ncurses para que funcionem na maioria dos terminais e / ou scripts, desde que haja suporte para ncurses. Você pode ver toda a documentação dialog
no site do projeto .
screenshot
Referências
Como adicionar uma barra de progresso a um shell roteiro?