[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