Programando em Shell Script para iniciantes
Este é meu primeiro artigo, mas estudei bastante para fazê-lo. Ele foi desenvolvido principalmente para aqueles que querem começar nesse mundo fascinante da programação. Estudaremos os princípios do Shell Script e iremos até os diálogos gráficos.
Parte 4: Kdialog
Esse diálogo é padrão do ambiente gráfico KDE e é basicamente o mesmo das caixas do "dialog", mas abre os diálogos fora do shell e não especifica nem a altura nem a largura do diálogo.
Instalação:
Se você está numa distribuição derivada do Debian é só mandar "sudo apt-get install kommander" no terminal e pronto.
Se você usa outra distribuição ou deseja instalar pelo fonte, então baixe o kommander aqui.
Vá a um terminal, entre no diretório onde o kommander foi baixado e digite em seqüência:
$ tar -vxjpf kommander-1.3.0.tar.bz2
$ cd kommander-1.3.0
$ ./configure
$ make
# make install
Chega de conversa e vamos trabalhar.
Entendendo o que você escreveu:
Instalação:
Se você está numa distribuição derivada do Debian é só mandar "sudo apt-get install kommander" no terminal e pronto.
Se você usa outra distribuição ou deseja instalar pelo fonte, então baixe o kommander aqui.
Vá a um terminal, entre no diretório onde o kommander foi baixado e digite em seqüência:
$ tar -vxjpf kommander-1.3.0.tar.bz2
$ cd kommander-1.3.0
$ ./configure
$ make
# make install
Chega de conversa e vamos trabalhar.
#!/bin/sh
kdialog --title "Criando um diretório" --getexistingdirectory > /tmp/caminho.tmp
caminho=`cat /tmp/caminho.tmp`
kdialog --title "Criando um diretório" --inputbox "Digite o nome do diretório que deseja criar." > /tmp/diretorio.tmp
diretorio=`cat /tmp/diretorio.tmp`
if [ -e $caminho ]; then
mkdir -p "$caminho/$diretorio"
kdialog --msgbox "O diretório $diretorio foi criado."
else
kdialog --msgbox "Entre com um diretório válido."
fi
kdialog --title "Criando um diretório" --getexistingdirectory > /tmp/caminho.tmp
caminho=`cat /tmp/caminho.tmp`
kdialog --title "Criando um diretório" --inputbox "Digite o nome do diretório que deseja criar." > /tmp/diretorio.tmp
diretorio=`cat /tmp/diretorio.tmp`
if [ -e $caminho ]; then
mkdir -p "$caminho/$diretorio"
kdialog --msgbox "O diretório $diretorio foi criado."
else
kdialog --msgbox "Entre com um diretório válido."
fi
Entendendo o que você escreveu:
- kdialog : abre um diálogo;
- --title : dá um título ao diálogo;
- --getexistingdirectory : tipo de diálogo. Esse diálogo faz com que o shell pare e espere que o usuário selecione um diretório;
- O "--inputbox" do "kdialog" funciona do mesmo modo do "dialog".
- "--yesno" é a mesma sintaxe do "dialog";
- "--yesnocancel" é parecido com o "--yesno", só que tem o botão "cancelar" que assume o valor "2";
- "--warningyesno" é semelhante ao "--yesno", mas apresenta um alerta;
- "--warningcontinuecancel" exibe um diálogo de alerta com os botões "continuar" que assume o valor "0" e "cancelar" que assume o valor "1";
- "--warningyesnocancel" exibe um alerta, mas funciona como "--yesnocancel";
- "--msgbox" exibe um diálogo com uma mensagem informativa e o botão "ok";
- "--sorry" apresenta um alerta com o botão "ok";
- "--error" mostra uma mensagem de erro com o botão "ok";
- "--password" exibe uma caixa para digitar uma senha. Semelhante ao "--passwordbox" do "dialog";
- "--textbox" exibe um arquivo de texto, sendo sua sintaxe a seguinte: kdialog --textbox [endereço do arquivo de texto] [altura] [largura];
- "--menu" exibe um diálogo com várias opções de escolha (exemplificarei posteriormente);
- "--combobox" semelhante ao menu, mas as opções estão dispostas em uma única caixa de seleção;
- "--checklist" exibe as opções igual ao "--menu", mas é possível selecionar mais de uma opção;
- "--radiolist" exibe um diálogo com várias opções de escolha;
- "--passivepopup" exibe uma mensagem na tela e desaparece no tempo determinado: kdialog --passivepopup [texto] [tempo];
- "--getopenfilename" exibe um diálogo para seleção de um arquivo e sua sintaxe é definida por: kdialog --getopenfilename [diretório de inicio] [filtro];
- "--getsavefilename" semelhante ao "--getopenfilename", mas ao invés de selecionar um arquivo existente, ele salva um arquivo no diretório especificado;
- "--getexistingdirectory" seleciona um diretório e não possui filtros;
- "--progressbar" esse diálogo mostra uma barra de progressão em porcentagem.