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

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

Barra de progresso no CP


From: brunodiasinfo
Subject: Barra de progresso no CP
Date: 20 Mar 2019 20:24:39 +0000

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



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


reply via email to

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