shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Barra de progresso no CP


From: Paulo
Subject: Re: [shell-script] Barra de progresso no CP
Date: Wed, 20 Mar 2019 20:46:42 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.3

Olá bruno, na linha

echo -ne "\\r[ $indice% $car"

adicione um escape indicando a coluna final e imprima um ']'

echo -ne "\\r[ $indice% $car\e[$(tput cols)C]"

Tem que acertar o valor de $indice pelo número de colunas ou vice-versa,
já que o número de colunas pode variar.

Abraços Paulo

On 20/03/2019 17:24, address@hidden [shell-script] wrote:
Prezados tudo bem?


Estava copiando cerca de 400GB esses dias e demorou demais, senti a falta de uma barra de progresso/porcentagem, descobri que poderia usar o 'rsync -r --progress SOURCE DEST'.


Essa solução não me agradou, entao como eu amo nosso querido shell, me dispus a criar uma para o CP, e ficou muito boa, porém, sabe quando falta aquele detalhe, aquele tempero na comida? então, só que daqui para frente eu não sei mais o que fazer para resolver isso, segue o código abaixo.


Como eu quero fazer, eu quero que a barra seja exibida da seguinte forma:


[ 100% 
...................................................................................................
 ]


Como ela é exibida:


[ 100% 
...................................................................................................


O número da porcentagem vai variando, e os pontos também, como eu fiz especifico para usar com o CP, tudo funciona muito bem, ele faz tudo baseado em procentagem, e em tamanho do arquivo, para poder calcular a porcentagem, porém, queria colocar um limite igual no 1° exemplo, mas o colchete do final vai ficar andando.


Alguem teria uma solução?


Desde já muito obrigado pela ajuda de todos.



Código:

---------------------------------------------------------------------------------------------------------

#!/bin/bash

car=""
origem="$1"
destino="$2"

tamanho="$(du -bs $origem | awk '{print $1}')"

zeroo=0
umm=1

tput civis -- invisible

while [ "$zeroo" -lt "$umm" ]; do
cp -aR $origem $destino & pid=$!

     while ps -p $pid &>/dev/null; do

     tamanho_origem="$(du -bs $origem | awk '{print $1}')"
     tamanho_destino="$(du -bs $destino | awk '{print $1}')"

     indice=$(($tamanho_destino * 100 / $tamanho_origem))

     car="$(echo "`seq -s '.' $indice | tr -d [:digit:]`")"
     for h in er
         do
                 echo -ne "\\r[ $indice% $car"

         done


         umm=$((umm - 1))
         tput cnorm -- normal
     done
echo ""
done



---------------------------------------------------------------------------------------------------------


--------------------------------------------------------------------------------------------------------------
Enviado por: address@hidden
--------------------------------------------------------------------------------------------------------------
Responder através da web


reply via email to

[Prev in Thread] Current Thread [Next in Thread]