Itamar, não vou fazer, mas vou te dar o caminho das pedras. Já fiz isso uma vez em zenity, procurei, mas não achei. Primeiro algumas dicas:
copie e cole este código em um arquivo e execute-o para vc entender o funcionamento da opção --progress do zenity (muito semelhante ao dialog) #!/bin/bash for ((int=1; int<=100; int++)) do echo $int echo "# Decorridos $int% da tarefa" sleep 0.03 done | zenity --progress \ --auto-close \ --title="Exemplo de Progress" Repare agora que qdo vc faz o echo de um número, ele considera a atualização de uma porcentagem e atualiza a barra. Qdo vc ecoa um literal precedido por um #, ele considera que deve atualizar o texto da caixa, ou seja, neste exemplo, a linha echo $int continua atualizando a percentagem, porém a linhaecho "# Decorridos $int% da tarefa" fica alterando a saída que fica no espaço destinado à propriedade --text. Pronto, agora vc já sabe tudo de progress no zenity. Vamos ver os procedimentos para vc fazer o que deseja e, se quizer, adaptar ao dialog (mas não se esqueça que a opção --display do zenity te permite executar em uma sessão que não seja xterm e até em uma máquina remota). primeiro vc tem de ver o tamanho do diretório de destino do pacote (se forem vários diretórios, vc terá de somar todos) e guardar na variável $inicio. Em seguida dispare o zenity --progress associando-o a um número de dispositivo lógico (vamos usar o 8 como exemplo). exec 8> >(zenity 2>/dev/null --progress --autoclose --auto-kill --title 'Fazendo apt-get')& Repare que o & vai colocar o processo em background. A opção --autoclose serve para o diálogo fechar qdo chegar a 100% e --auto-kill serve para cancelar o apt-get, caso vc cancele o diálogo (cancelando o script que disparou o apt-get e o zenity). Veja o tamanho total do pacote, some com a variável $inicio e coloque em $final Agora dispare o apt-get em foreground e monitore a sua saída. A cada arquivo novo, verifique a área ocupara em cada diretório e calcule a percentagem já executatada, colocando em $percent e o nome do arquivo que está sendo baixado, colocando em $arq. Agora faça: echo $percent >&8 echo "# Baixando $arq" >&8 Ao fim faça: exec 8>&- Para fechar o dispositivo lógico 8. PS: nos dias 09-10/12 (sábado e domingo) darei curso de zenity em Brasília. Este mês tb darei cursos de shell no RJ e em SP. Estou engordando o meu Natal... :) Veja detalhes abaixo da minha assinatura. Abraços, Julio Cursos de Shell e Zenity em fins de semana? - Em SP ligue (11) 2125-4747 Curso de 07 a 11/12; - Em DF ligue (61) 3223-3000 Curso de zenity 09-10/01; - No RJ ligue (21) 2561-0867 Curso nos dias 5,6,12,13/12; - Turmas fechadas em outras cidades ligue (21) 8112-9988. 2009/11/25 Itamar da Silva Oliveira <[email protected]> > > > Valeu Rodrigo, > Obrigado mesmo > > > ________________________________ > De: Rodrigo Lang > <[email protected]<rodrigoferreiralang%40gmail.com> > > > Para: [email protected] <shell-script%40yahoogrupos.com.br> > Enviadas: Terça-feira, 24 de Novembro de 2009 18:53:35 > > Assunto: Re: [shell-script] Criar barra de progresssão > > Itamar, eu também estava testando fazer com apt-get tentando pegar algum > valor para fazer a porcentagem. Mas infelizmente a única alternativa que > achei foi fazer adicionando uma porcentagem por cada pacote instalado até > chegar em 100%... Bem provável que haja alguma alternativa, porém eu tive > que pausar o meu projeto por causa de outras prioridades... Mesmo assim eu > vou estar pesquisando, se achar algo volto a postar neste mesmo tópico. > > Ats, > Rodrigo Lang. > > 2009/11/24 Itamar da Silva Oliveira > <[email protected]<itamaro_liveira%40yahoo.com.br> > > > > > > > > > Pessoal, > > > > Me ajudem com esse script. > > por favor > > gostaria de melhorá-lo > > usando guage (Barra de progresso) no apt-get e tambem se possivel me > ajudem > > no teste de compilação se der um error o script será abortado exibindo o > > erro para o usuário > > > > > > > > ________________________________ > > De: Rodrigo Lang > > <[email protected]<rodrigoferreiralang%40gmail.com> > <rodrigoferreiralang%40gmail.com> > > > > > Para: > > [email protected]<shell-script%40yahoogrupos.com.br><shell-script% > 40yahoogrupos.com.br> > > Enviadas: Sexta-feira, 6 de Novembro de 2009 17:16:38 > > Assunto: Re: [shell-script] Criar barra de progresssão > > > > > > > > Boa, obrigado pessoal, testarei e postarei o resultado! > > > > Obrigado, > > Rodrigo Lang. > > > > 2009/11/6 Thomaz de Oliveira dos Reis <tho...@gmail. com> > > > > > Não testei, mas tente algo assim: > > > > > > > > > PACOTES="bison openssl outro ..." > > > > > > for PACOTE in PACOTES > > > do > > > $APT $PACOTE > > > echo 2 > > > done | dialog .... > > > > > > > > > > > > > > > 2009/11/6 Rodrigo Lang <rodrigoferreiralang @gmail.com> > > > > > > > > > > > > > > > Boa tarde lista, estou desenvolvendo um shell script para a > compilação > > de > > > > um > > > > sistema aqui da empresa. Estou no momento tentando usar dialog para > > fazer > > > > uma barra de progressão, porém estou tendo algumas dificuldades. O > que > > eu > > > > preciso inicialmente é fazer umas barra conforme cada pacote do > apt-get > > é > > > > instalado. Alguém tem alguma dica de como diminuir o tamanho do > script? > > > > Porque são 50 pacotes, se cada pacote instalado eu colocar duas > linhas > > > vai > > > > ficar enorme o script. > > > > > > > > APT="apt-get -qqqq install --force-yes" > > > > > > > > ( > > > > $APT bison > > > > echo 2 > > > > $APT openssl > > > > echo 2 > > > > $APT libssl-dev > > > > echo 2 > > > > $APT libasound2-dev > > > > echo 2 > > > > $APT libc6-dev > > > > echo 2 > > > > echo 100 > > > > ) | dialog --title "Instalando" --gauge "Atualizando repositórios" 8 > 40 > > 0 > > > > > > > > -- > > > > Rodrigo F. Lang > > > > Amd. de Redes em Telecom > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > ------------ --------- --------- ------ > > > > > > ------------ --------- --------- --------- --------- --------- - > > > Esta lista não admite a abordagem de outras liguagens de programação, > > como > > > perl, C etc. Quem insistir em não seguir esta regra será moderado sem > > prévio > > > aviso. > > > ------------ --------- --------- --------- --------- --------- - > > > Sair da lista: shell-script- unsubscribe@ yahoogrupos. com.br > > > ------------ --------- --------- --------- --------- --------- - > > > Esta lista é moderada de acordo com o previsto em > > > http://www.listas- discussao. cjb.net > > > ------------ --------- --------- --------- --------- --------- - > > > Servidor Newsgroup da lista: news.gmane.org > > > Grupo: gmane.org.user- groups.programmi ng.shell. brazil > > > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > -- > > Rodrigo F. Lang > > Amd. de Redes em Telecom > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > __________________________________________________________ > > Veja quais são os assuntos do momento no Yahoo! +Buscados > > http://br.maisbuscados.yahoo.com > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > -- > Rodrigo F. Lang > Amd. de Redes em Telecom > > [As partes desta mensagem que não continham texto foram removidas] > > ------------------------------------ > > ---------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > ---------------------------------------------------------- > Sair da lista: > [email protected]<shell-script-unsubscribe%40yahoogrupos.com.br> > ---------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > ---------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > __________________________________________________________ > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [email protected] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
