sexta-feira, 7 de fevereiro de 2014

Shell Script com Dialog - Usando o GAUGE (dialog --gauge)

Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog
# yum install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

Este exemplo, usaremos o recurso inputbox, que exibe uma barra de progesso para o usuário. Ela pode ser usada de maneira "fake" ou se preferir, você pode fazer um bom trabalho de programação e torná-la real. No nosso caso, faremos o básico. Caso você tenha a intenção de se aprofundar no assunto, baixe este script de Aurélio e dê uma estudada nele ;) --> http://aurelio.net/shell/dialog/copydir.sh 

Você pode testar direto na linha de comando, ou usar um script.

Faça você mesmo:

# (echo 50; sleep 2; echo 100) | dialog --gauge 'Aguarde... ' 8 40 0

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:








Código fonte do Script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       #
##########################################################
# Exibe uma mensagem simples para o usuario.
dialog --msgbox "Exibindo uma Barra de Progresso \npara o Usuario" 0 0

(echo 50; sleep 2; echo 100) | dialog --gauge 'Aguarde... ' 8 40 0

# Use: (echo % ; comando1 ; echo %; comando2 .. | dialog --gauge...
# Note o exemplo abaixo. A Cada um segundo, 10% da barra sera consumida.

dialog --msgbox "Simulando com o comando Sleep" 0 0

# Obs: A barra invertida quebra a linha esteticamente,
#      Porem nao ha quebra no comando.

(echo 10; sleep 1; \
echo 20; sleep 1; \
echo 30; sleep 1; \
echo 40; sleep 1; \
echo 50; sleep 1; \
echo 60; sleep 1; \
echo 70; sleep 1; \
echo 80; sleep 1; \
echo 90; sleep 1; echo 100) | dialog --gauge 'Aguarde... \n
Simulando com o Comando Sleep' 8 70 0

#Obs: Veja como ficaria este comando sem as barras invertidas dentro de um Script
#(echo 10; sleep 1;echo 20; sleep 1; echo 30; sleep 1; echo 40; sleep 1; echo 50; sleep 1; echo 60; sleep 1; echo 70; sleep 1; echo 80; sleep 1; echo 90; sleep 1; echo 100) | dialog --gauge 'Aguarde... ' 8 40 0

dialog --msgbox "Copiando arquivos..." 0 0

# Coloque entre os echo % as operacoes... Por exemplo:
(echo 10; cp  -R /etc/ /tmp; \
echo 30;  cp -R /etc/ /tmp/; \
echo 60;  cp -R /etc/ /tmp/; \
echo 90; rm -Rf /tmp/etc ; echo 100) | dialog --gauge 'Aguarde... Copiando Arquivos' 8 70 0

read
clear

Baixe este script em:
http://www.reconstrucao.org/palestra/shell/dialog/gauge.sh
Baixe todos os scripts de exemplos dialog:
 http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz 

2 comentários:

  1. Muito bom esse seu script, conseguia fazer a barra dialog, porem não conseguia jogar a ação dos comandos para a barra...ajudou bastante obrigado!
    só dei um a modificada (echo 10;sleep 1) e botei um exit ao final do script para sair apos a copia.Agora vou tentar outras ações no script.

    ResponderExcluir
    Respostas
    1. Ok Muniz.

      Mais dicas deste tipo, você encontra no site do aurelio.net

      Obrigado!

      Excluir