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: brunodiasinfo
Subject: RE: [shell-script] Barra de progresso no CP
Date: 21 Mar 2019 13:02:23 +0000

Consegui, graças a sua explicação, muito obrigado pela ajuda, com sua ideia, subtrai 100% da porcentagem atual do indice:

printf "%$((100 - $indice))s""]"

Agradeço a ajuda de todos, eu andei melhorando o código, vou deixar aqui para vocês, caso queiram usar, vale falar que ainda é preciso criar um check, caso voce queira copiar um diretório para um destino que não exista, atualmente funciona, mas uma melhoria é necessaria.

############################################################################

#!/bin/bash

tput civis -- invisible

trap 'kill -9 $pid' SIGINT > /dev/null 2&>1

if [ $(tput cols) -le '132' ];then
    echo "Aumente a largura do terminal"
    exit
fi

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

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

zeroo=0
umm=1

function exibir () {


if [[ "$tamanho_destino" -eq "$tamanho_origem" ]];then

        cem="\033[00;32m100%\e[m"
        echo -ne "\\r Progress: [ $cem ] | ${car} "
        printf "%$((100 - $indice))s""| [$tamanho] [$tamanho_destino_Giga] "
        echo ""
else

        in="\033[0;31m$indice%\033[0m"
        echo -ne "\\r Progress: [ $in ] | ${car} "
        printf "%$((100 - $indice))s""| [$tamanho] [$tamanho_destino_Giga] "
        echo ""

fi
}

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

    while ps -p $pid &>/dev/null; do
         tamanho_destino="$(du -bs "$destino" | awk '{print $1}' 2>/dev/null)"

        if [ -z $tamanho_destino ]; then
            tamanho_destino=0

        else

            tamanho_destino="$(du -bs "$destino" | awk '{print $1}' 2>/dev/null)"
            tamanho_destino_Giga="$(du -hs "$destino" | awk '{print $1}' 2>/dev/null)"
        fi

        indice="$(($tamanho_destino * 100 / $tamanho_origem))"
 
        car="$(echo $(seq -s '.' $indice | tr -d [:digit:]))"
       
        for i in e
        do
            echo -ne "\\r Progress: [ $indice% ] | ${car}"
            printf "%$((100 - $indice))s""| [$tamanho] [$tamanho_destino_Giga] "
        done

         tamanho_destino="$(du -bs "$destino" | awk '{print $1}' 2>/dev/null)"
        umm=$((umm - 1))
    done
done

exibir

tput cnorm -- normal
############################################################################

Funciona muito bem se não tiver arquivos kkk



reply via email to

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