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: Maik Alberto
Subject: RE: [shell-script] Barra de progresso no CP
Date: Thu, 21 Mar 2019 03:03:05 +0000

Rascunhei uma barra de progresso aqui, vê se essa é a ideia...

#!/bin/bash
#github.com/m41k
TOTAL=100
 for i in $(seq $TOTAL); do
  PROG[$i]="."
  if [ $i -eq 100 ]; then
   clear; echo "OK";  exit 0
  elif [ $i -eq 10 ]; then
   TOTAL=$(( $TOTAL - 2 ))
  else
   TOTAL=$(( $TOTAL - 1 ))
 fi
 clear
echo -ne " [$i%${PROG[@]}" | sed 's/ //g'
printf "%$(( $TOTAL + 1 ))s""]"
sleep 0.1
done


De: address@hidden <address@hidden> em nome de address@hidden [shell-script] <address@hidden>
Enviado: quarta-feira, 20 de março de 2019 17:24
Para: address@hidden
Assunto: [shell-script] Barra de progresso no CP
 
 

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]