dialog --gauge [RESOLVIDO]

1. dialog --gauge [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 10/11/2011 - 09:52h

Como faço para adicionar uma barra de progresso neste script?



#!/bin/sh

dialog --inputbox "informe o diretorio:" 10 60 "" 2> /tmp/resposta.tmp
DIR=`cat /tmp/resposta.tmp`
#echo "informe o diretorio:"
#read DIR
if [ -z $DIR ]
then
dialog --title "UTF-8" --msgbox "$DIR Nada convertido" 10 60
else
convmv --notest -r -f iso8859-1 -t utf8 $DIR
dialog --title "UTF-8" --msgbox "$DIR convertido com sucesso" 10 60
fi

exit



  


2. Re: dialog --gauge [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/11/2011 - 10:15h

Segue uma ajudinha...

#!/bin/bash
# Observe que a saída acoplada a entrada
# do visualizador de progresso deve ser um valor inteiro entre 0 e 100
#
# more http://sekysu.blogspot.com
for i in {1..100}
do
sleep 0.032 &&
echo $i
done | dialog --title 'O titulo' --guage 'Mensagem' 10 100


Rode o programa para ter uma ideia


3. Re: dialog --gauge [RESOLVIDO]

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 10/11/2011 - 10:42h

teste esse tambem
faz a mesma coisa so que usando o while

#!/bin/bash

t=0;
while [ $t -lt 100 ];
do t=$[t+1];
echo $t;sleep .1;
done\
| dialog --gauge "Carregando o Sistema..." 6 75


espero que ajude


4. Re: dialog --gauge [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 10/11/2011 - 10:55h

Claro....
toda dica é bem vinda e agradecida!

eu to começando agora a conhecer o dialog.
como eu adapto essas dicas no meu script?


5. Re: dialog --gauge [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 10/11/2011 - 23:42h

Jah tentei de varias formas mas nada....


6. Re: dialog --gauge [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/11/2011 - 01:37h

Amigo,
O "dialog --gauge" necessita de um valor numérico na sua entrada para funcionar. Se seu script, função, linha de comando não echoa você deve a encontrar meio para tal. Veja este exemplo


#!/bin/bash
# more http://sekysu.blogspot.com
# Exemplo de indicador de progresso

TUDO=$(wc -l /etc/passwd | sed 's/[^0-9]//g')
ATUAL=0

while [ "$ATUAL" -le "$TUDO" ]
do
# TUDO => 100
# ATUAL => CENT

# Apenas gera um delay para dar a impressão
# que um comando que leva algum tempo esteja sendo executado
sleep 0.07

# Porcentagem atual
CENT=$(( ( 100 * $ATUAL ) / $TUDO ))

# Atualização do valor atual
let ATUAL=ATUAL+1

# Saída da percentagem
echo $CENT
done |
dialog --guage 'Msg' 7 77









7. Re: dialog --gauge [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 11/11/2011 - 11:47h

Eu só nao to conseguindo acopla-lo ao meu script, estava ate pensando em fazer uma barra em um cp -r, para ir aprendendo, teriam algum exeplo? vi uns por i mas sao meios confusos...


8. Re: dialog --gauge [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 14/11/2011 - 09:02h

até agora nada...


9. Re: dialog --gauge [RESOLVIDO]

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 14/11/2011 - 10:37h

aqui tem um exemplo de copia de arquios
http://aurelio.net/shell/dialog/#copiagauge


10. Re: dialog --gauge [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 14/11/2011 - 21:01h

Valeu... eu até jah tinha lido isso.... eu soh nao to conseguindo faze um que funcione!!!


11. Re: dialog --gauge [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 18/11/2011 - 10:03h

Pronto.... consegui... segue a dica...

colocar estes dois scripts na mesma pasta ( no exemplo /tmp )

#!/bin/sh
##### SALVAR COMO copy.sh
dialog --inputbox "informe o diretorio:" 10 60 2> /tmp/resposta.tmp
DIR1=`cat /tmp/resposta.tmp`
dialog --inputbox "informe o diretorio de saida:" 10 60 2> /tmp/resposta.tmp
DIR2=`cat /tmp/resposta.tmp`
/tmp/copydir.sh $DIR1 $DIR2




e este junto na mesma pasta


#!/bin/bash
####### SALVAR COMO copydir.sh
# copydir.sh - Copia o diretório mostrando uma barra de progresso
# Este script faz parte do http://aurelio.net/shell/dialog
#
# Uso: copydir.sh <dir-origem> <dir-destino>
#
# Exemplo de uso da caixa de barra de progresso (gauge), que é
# diferente e meio complicada de usar. Ela espera receber a
# porcentagem da barra via STDIN, sendo um número de 0 a 100.
#
# O Gauge só mostra na tela a porcentagem que você informar,
# ele não tem inteligência, então todo o controle sobre o
# processo deve ser feito manualmente pelo programador.
#
# O procedimento se resume em duas ações:
#
# 1) Saber como quantificar o TOTAL, para conhecer o 100%.
# No caso de uma cópia de arquivos, o TOTAL é o tamanho
# total de todos os arquivos a serem copiados.
#
# 2) Saber como descobrir de tempos em tempos o STATUS
# corrente do procedimento, enquanto ele está sendo
# executado, para poder calcular o quanto ainda falta
# para o final (100%). No caso de uma cópia de arquivos,
# o STATUS é a quantidade de arquivos que já foi copiada,
# ou o espaço em disco ocupado por eles.
#
# Tendo os dois dados não, uma simples regrinha de três lhe dá
# a porcentagem atual do andamento: STATUS*100/TOTAL.
#
# 12 Agosto 2004 - Aurélio Marinho Jargas

#................................................................

TITLE='Copiando...'
MSG='Copiando o diretório $ORIGEM para $DESTINO'
INTERVALO=1 # intervalo de atualização da barra (segundos)
PORCENTO=0 # porcentagem inicial da barra

#................................................................

ORIGEM="${1%/}"
DESTINO="${2%/}"

die() { echo "Erro: $*" ; exit 1 ; }
sizeof() { du -s "$1" | cut -f1; }
running(){ ps $1 | grep $1 >/dev/null; }

#................................................................

# tem somente dois parâmetros?
[ "$2" ] || die "Uso: $0 dir-origem dir-destino"

# a origem e o destino devem ser diretórios
[ -d "$ORIGEM" ] || die "A origem '$ORIGEM' deve ser um diretório"
[ -d "$DESTINO" ] || die "O destino '$DESTINO' deve ser um diretório"

# mesmo dir?
[ "$ORIGEM" = "$DESTINO" ] &&
die "A origem e o destino são o mesmo diretório"

# o diretório de destino está vazio?
DIR_DESTINO="$DESTINO/${ORIGEM##*/}"
[ -d "$DIR_DESTINO" ] && [ $(sizeof $DIR_DESTINO) -gt 4 ] &&
die "O dir de destino '$DIR_DESTINO' deveria estar vazio"

#................................................................

# expansão das variáveis da mensagem
MSG=$(eval echo $MSG)

# total a copiar (em bytes)
TOTAL=$(sizeof $ORIGEM)

# início da cópia, em segundo plano
cp -r $ORIGEM $DESTINO &
CPPID=$!

# caso o usuário cancele, interrompe a cópia
trap "kill $CPPID" 2 15

#................................................................

# loop de checagem de status da cópia
(
# enquanto o processo de cópia estiver rodando
while running $CPPID; do

# quanto já foi copiado?
COPIADO=$(sizeof $DIR_DESTINO)

# qual a porcentagem do total?
PORCENTAGEM=$((COPIADO*100/TOTAL))

# envia a porcentagem para o dialog
echo $PORCENTAGEM

# aguarda até a próxima checagem
sleep $INTERVALO
done

# cópia finalizada, mostra a porcentagem final
echo 100

) | dialog --title "$TITLE" --gauge "$MSG" 8 40 0

#................................................................
echo OK - Diretório copiado



e após executar copy.sh


TESTEM AI E DIGAM Q Q ACHAM!
OBRIGADO PELAS DICAS....

agora vou tenta coloca tudo em um só!











Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts