Вы находитесь на странице: 1из 12

Shell Script Primeira parte, uma introduo

From: http://www.devin.com.br/shell_script/ Quem usa Linux conhece bem o prompt de comando sh, ou variaes como o bash. O ue muita !ente n"o sabe # ue o sh ou o bash t$m uma %poderosa& lin!ua!em de script embutido nelas mesmas. 'iversas pessoas utili(am)se desta lin!ua!em para *acilitar a reali(a"o de in+meras tare*as administrativas no Linux, ou at# mesmo criar seus pr,prios pro!raminhas. -atric. /ol.erdin!, criador da distribui"o 0lac.ware, utili(a esta lin!ua!em para toda a instala"o e con*i!ura"o de sua distribui"o. /oc$ poder1 criar scripts para automar as tare*as di1rias de um servidor, para e*etuar bac.up autom1tico re!ularmente, procurar textos, criar *ormataes, e muito mais. -ara voc$ ver como esta lin!ua!em pode ser +til, vamos ver al!uns passos introdut,rios sobre ela. 2nterpretadores de comandos s"o pro!ramas *eitos para intermediar o usu1rio e seu sistema. 3trav#s destes interpretadores, o usu1rio manda um comando, e o interpretador o executa no sistema. 4les s"o a %0hell& do sistema Linux. 5saremos o interpretador de comandos bash, por ser mais %extenso& ue o sh, e para ue ha6a uma melhor compreens"o das in*ormaes obtidas a ui, # bom ter uma base sobre o conceito de l,!ica de pro!rama"o. 5ma das vanta!ens destes shell scripts # ue eles n"o precisam ser compilados, ou se6a, basta apenas criar um ar uivo texto ual uer, e inserir comandos 7 ele. -ara dar 7 este ar uivo a de*ini"o de %shell script&, teremos ue incluir uma linha no comeo do ar uivo 89:/bin/bash; e torn1)lo %execut1vel&, utili(ando o comando chmod. /amos se!uir com um pe ueno exemplo de um shell script ue mostre na tela: %<ossa: 4stou vivo:&:
#!/bin/bash echo 'Nossa! Estou vivo!'

F1cil, hein= 3 primeira linha indica ue todas as outras linhas abaixo dever"o ser executadas pelo bash 8 ue se locali(a em /bin/bash;, e a se!unda linha imprimir1 na tela a *rase %<ossa: 4stou vivo:&, utili(ando o comando echo, ue serve 6ustamente para isto. >omo voc$ p?de ver, todos os comandos ue voc$ di!ita diretamente na linha de comando, voc$ poder1 incluir no seu shell script, criando uma s#rie de comandos, e # essa combina"o de comandos ue *orma o chamado shell script. @ente tamb#m dar o comando A*ile ar uivoB e ve6a ue a de*ini"o dele # de Courne)3!ain 0hell 0cript 8Cash 0cript;. >ontudo, para o ar uivo poder se execut1vel, voc$ tem de atribuir o comando de execut1vel para ele. 4 como citamos anteriormente, o comando chmod se encarre!a disto:
$ chmod +x arquivo

-ronto, o ar uivo poder1 ser executado com um simples %./ar uivo&.

Conceito de Variveis em shell script


/ari1veis s"o caracteres ue arma(enam dados, uma esp#cie de atalho. O bash reconhece uma vari1vel uando ela comea com D, ou se6a, a di*erena entre ApalavraB e ADpalavraB # ue a primeira # uma palavra ual uer, e a outra uma vari1vel. -ara de*inir uma vari1vel, utili(amos a se!uinte sintaxe:
variavel="valor"

O AvalorB ser1 atribuEdo a Avari1vel A. /alor pode ser uma *rase, n+meros, e at# outras vari1veis e comandos. O valor pode ser expressado entre as aspas 8&F;, ap,stro*os 8&; ou crases 8%;. 3s aspas v"o interpretar as vari1veis ue estiverem dentro do valor, os ap,stro*os ler"o o valor literalmente, sem interpretar nada, e as crases v"o interpretar um comando e retornar a sua saEda para a vari1vel. /e6amos exemplos:
$ variavel="Eu estou logado como usurio $user" $ echo $variavel Eu estou logado como usurio cla $ variavel='Eu estou logado como usurio $user' $ echo $variavel Eu estou logado como usurio $user $ variavel=" eu diret!rio atual " o #$%d#" $ echo $variavel eu diret!rio atual " o /home/cla

0e voc$ uiser criar um script em ue o usu1rio deve intera!ir com ele, # possEvel ue voc$ ueira ue o pr,prio usu1rio de*ina uma vari1vel, e para isso usamos o comando read, ue dar1 uma pausa no script e *icarar1 esperando o usu1rio di!itar al!um valor e teclar enter. 4xemplo:
echo "Entre com o valor $ara a varivel& " ' read variavel () usurio digita e tecla enter* vamos su$or que ele digitou 'eu sou um +rutinha', echo $variavel eu sou um +rutinha

Controle de fluxo com o if


>ontrole de *luxo s"o comandos ue v"o testando al!umas alternativas, e de acordo com essas alternativas, v"o executando comandos. 5m dos comandos de controle de *luxo mais usados # certamente o i*, ue # baseado na l,!ica %se acontecer isso, irei *a(er isso, se n"o, irei *a(er a uilo&.

/amos dar um exemplo:


i+ - .e $linux / then echo '0 varivel $linux existe1' else echo '0 varivel $linux n2o existe1' +i

O ue este pedao de c,di!o *a(= O i* testa a se!uinte express"o: 0e a vari1vel Dlinux existir, ent"o 8then; ele di( ue ue existe com o echo, se n"o 8else;, ele di( ue n"o existe. O operador )e ue usei # pr#)de*inido, e voc$ pode encontrar a lista!em dos operadores na tabela: )e 2!ual )ne 'i*erente )!t Gaior )lt Genor )o Ou )d 0e *or um diret,rio )e 0e existir )( 0e estiver va(io )* )r 0e conter texto 0e o ar uivo pode ser lido )o 0e o usu1rio *or o dono )w 0e o ar uivo pode ser alterado )x 0e o ar uivo pode ser executado

Outras alternativas
4xistem in+meros comandos no Linux, e para explicar todos, terEamos de publicar um verdadeiro livro. Gas existem outras possibilidades de aprendi(ado desta lEn!ua, ue tamb#m # usado em todas as pro!ramaes. -rimeiro de tudo voc$ pode dar uma olhada na manpa!e do bash 8comando man bash;, ue disponibili(ar1 os comandos embutidos no interpretador de comandos. 5ma das coisas essencias para o aprendi(ado # sair coletando exemplos de outros scripts e ir estudando)os minuciosamente. -rocure sempre comandos e expresses novas em outros scripts e em manpa!es dos comandos. 4 por +ltimo, mas n"o o menos importante, praticar bastante: <a tabela a se!uir, voc$ pode encontrar uma lista!em de comandos para usar em sua shell script:

echo 2mprime texto na tela read >aptura dados do usu1rio e coloca numa vari1vel exit Finali(a o script sleep '1 uma pausa em se!undos no script clear Limpa a tela sttH tput i* *or >on*i!ura o terminal temporariamente 3ltera o modo de exibi"o >ontrole de *luxo ue testa uma ou mais expresses >ontrole de *luxo ue testa uma ou mais expresses

case >ontrole de *luxo ue testa v1rias expresses ao mesmo tempo while >ontrole de *luxo ue testa uma ou mais expresses 4 assim se6a, crie seus pr,prios scripts e *acilite de uma ve( s, parte de sua vida no Linux:

Segunda parte, se aprofundando mais!


Falamos sobre o conceito da pro!rama"o em 0hell 0cript, e demos o primeiro passo para construir nossos pr,prios scripts. 3!ora vamos nos apro*undar nos comandos mais complicados, aprendendo a *a(er pro!ramas ainda mais +teis. <estes comandos est"o inclusos o case e os laos *or, while e until. 3l#m disso, vamos *alar de *unes e, por +ltimo, teremos um pro!rama em shell script.

Case
O case # para controle de *luxo, tal como # o i*. Gas en uanto o i* testa expresses n"o exatas, o case vai a!ir de acordo com os resultados exatos. /e6amos um exemplo:
case $3 in $arametro3, comando3 ' comando4 '' $arametro4, comando5 ' comando6 '' 7, echo "8oc9 tem de entrar com um $ar:metro vlido" '' esac

3 ui aconteceu o se!uinte: o case leu a vari1vel DI 8 ue # o primeiro parJmetro passado para o pro!rama;, e comparou com valores exatos. 0e a vari1vel DI *or i!ual 7 %parametroIK, ent"o o pro!rama executar1 o comandoI e o comandoLM se *or i!ual 7 %parametroLK, executar1 o comandoN e o comandoO, e assim em diante. 3 +ltima op"o 8P;, # uma op"o padr"o do case, ou se6a, se o parJmetro passado n"o *or i!ual a nenhuma das outras opes anteriores, esse comando ser1 executado automaticamente.

/oc$ pode ver ue, com o case *ica muito mais *1cil criar uma esp#cie de %menu& para o shell script do ue com o i*. /amos demonstrar a mesma *un"o anterior, mas a!ora usando o i*:
i+ - .; $3 /' then echo "8oc9 tem de entrar exit eli+ - $3 = "$arametro3" /' comando3 comando4 eli+ - $3 = "$arametro4" /' comando5 comando6 else echo "8oc9 tem de entrar +i com um $ar:metro vlido" then then

com um $ar:metro vlido"

/e6a a di*erena. Q muito mais pr1tico usar o case: 3 vanta!em do i* # ue ele pode testar v1rias expresses ue o case n"o pode. O case # mais pr1tico, mas o i* pode substituE)lo e ainda abran!e mais *unes. <ote ue, no exemplo com o i*, citamos um %comando& n"o visto antes: o eli* ) ue # uma combina"o de else e i*. 3o inv#s de *echar o i* para criar outro, usamos o eli* para testar uma express"o no mesmo comando i*.

For
O lao *or vai substituindo uma vari1vel por um valor, e vai executando os comandos pedidos. /e6a o exemplo:
+or i in 7 do c$ $i $i1bac<u$ mv $i1bac<u$ /usr/bac<u$ done

-rimeiramente o lao *or atribuiu o valor de retorno do comando %P& 8 ue # e uivalente a um ls sem nenhum parJmetro; para a vari1vel Di, depois executou o bloco de comandos. 4m se!uida ele atribui outro valor do comando %P& para a vari1vel DI e reexecutou os comandos. 2sso se repete at# ue n"o sobrem valores de retorno do comando %P&. Outro exemplo:
+or original in 7' do resultado=#echo $original = tr '-&u$$er&/' '-&lo%er&/'# i+ - ! .e $resultado /' then mv $original $resultado +i done

3 ui, o ue ocorre # a trans*orma"o de letras mai+sculas para min+sculas. -ara cada ar uivo ue o lao l$, uma vari1vel chamada Dresultado ir1 conter o ar uivo em letras

min+sculas. -ara trans*ormar em letras min+sculas, usei o comando tr. >aso n"o exista um ar uivo i!ual e com letras min+sculas, o ar uivo # renomeado para o valor da vari1vel Dresultado, de mesmo nome, mas com letras min+sculas. >omo os exemplos ilustram, o lao *or pode ser bem +til no tratamento de m+ltiplos ar uivos. /oc$ pode deix1)los todos com letras min+sculas ou mai+sculas sem precisar renomear cada um manualmente, pode or!ani(ar dados, *a(er bac.up, entre outras coisas.

hile
O while testa continuamente uma express"o, at# ue ela se torne *alsa. 4xemplo:
variavel="valor" %hile - $variavel = "valor" /' do comando3 comando4 done

O ue acontece a ui # o se!uinte: en uanto a %Dvariavel& *or i!ual a %valor&, o while *icar1 executando os comandos I e L, at# ue a %Dvariavel& n"o se6a mais i!ual a %valor&. 0e no bloco dos comandos a %Dvariavel& mudasse, o while iria parar de executar os comandos uando che!asse em done, pois a!ora a express"o Dvariavel R %valor& n"o seria mais verdadeira.

!ntil
@em as mesmas caracterEsticas do while, a +nica di*erena # ue ele *a( o contr1rio. /e6a o exemplo abaixo:
variavel="naovalor" until - $variavel = "valor" /' do comando3 comando4 done

3o inv#s de executar o bloco de comandos 8comandoI e comandoL; at# ue a express"o se torne *alsa, o until testa a express"o e executa o bloco de comandos at# ue a express"o se torne verdadeira. <o exemplo, o bloco de comandos ser1 executado desde ue a express"o Dvariavel R %valor& n"o se6a verdadeira. 0e no bloco de comandos a vari1vel *or de*inida como %valor&, o until p1ra de executar os comandos uando che!a ao done. /e6amos um exemplo para o until ue, sintaticamente invertido, serve para o while tamb#m:
var=3 count=> until - $var = ">" /' do comando3

comando4 i+ - $count = ? /' then var=> +i count=#ex$r $count + 3# done

-rimeiro, atribuEmos 7 vari1vel %Dvar& o valor %IK. 3 vari1vel %Dcount& ser1 uma conta!em para uantas ve(es uisermos executar o bloco de comandos. O until executa os comandos I e L, en uanto a vari1vel %Dvar& *or i!ual a %SK. 4nt"o usamos um i* para atribuir o valor S para a vari1vel %Dvar&, se a vari1vel %Dcount& *or i!ual a T. 0e a vari1vel %Dcount& n"o *or i!ual a S, soma)se I a ela. 2sso cria um lao ue executa o comando IS ve(es, por ue cada ve( ue o comando do bloco de comandos # executado, soma)se I 7 vari1vel %Dcount&, e uando che!a em T, a vari1vel %Dvar& # i!ualada a (ero, uebrando assim o lao until.

!sando vrios scripts em um s"


-ode)se precisar criar v1rios scripts shell ue *a(em *unes di*erentes, mas, e se voc$ precisar executar em um script shell um outro script externo para ue este *aa al!uma *un"o e n"o precisar reescrever todo o c,di!o= Q simples, voc$ s, precisa incluir o se!uinte comando no seu script shell:
1 bashscri$t4

2sso executar1 o script shell %bashscriptLK durante a execu"o do seu script shell. <este caso ele ser1 executado na mesma script shell em ue est1 sendo usado o comando. -ara utili(ar outra shell, voc$ simplesmente substitui o %.& pelo execut1vel da shell, assim:
sh scri$t4 tcsh scri$t5

<essas linhas o scriptL ser1 executado com a shell sh, e o scriptN com a shell tcsh. /ari1veis especiais DS D9 D= DD <ome do script ue est1 sendo executado <+mero de parJmetros passados /alor de retorno do +ltimo comando ou de todo o shell script. 8o comando %exit IK retorna o valor I; <+mero do -2' 8-rocess 2';

DI)DT -arJmetros passados 7 linha de comando

/oc$ tamb#m encontra muitas vari1veis, 61 prede*inidas, na p1!ina de manual do bash 8comando %man bash&, se"o 0hell /ariables;.

Fun#es
Funes s"o blocos de comandos ue podem ser de*inidos para uso posterior em ual uer parte do c,di!o. -raticamente todas as lin!ua!ens usam *unes ue a6udam a or!ani(ar o c,di!o. /e6amos a sintaxe de uma *un"o:
+uncao(, @ comando3 comando4 111 A

F1cil de entender, n"o= 3 *un"o *uncionar1 como um simples comando pr,prio. /oc$ executa a *un"o em ual uer lu!ar do script shell, e os comandos I, L e outros ser"o executados. 3 *lexibilidade das *unes permite *acilitar a vida do pro!ramador, como no exemplo *inal.

$xemplo Final
3!ora vamos dar um exemplo de um pro!rama ue utili(e o ue aprendemos com os arti!os.
#!/bin/bash # Exem$lo Binal de Ccri$t Chell Drinci$al(, @ echo "Exem$lo Binal sobre o uso de scri$ts shell" echo ".........................................." echo ")$EFes&" echo echo "31 Gras+ormar nomes de arquivos" echo "41 0dicionar um usurio no sistema" echo "51 Heletar um usurio no sistema" echo "61 Ba;er bac<u$ dos arquivos do /etc" echo "I1 Cair do exem$lo" echo echo .n "Jual a o$E2o deseKadaL " read o$cao case $o$cao in 3, Grans+ormar '' 4, 0dicionar '' 5, Heletar '' 6, Mac<u$ '' I, exit '' 7, ")$E2o desconhecida1" ' echo ' Drinci$al '' esac A Grans+ormar(, @ echo .n "Dara aiNsculo ou minNsculoL - /m/ " read var i+ - $var = " " /' then echo .n "Jue diret!rioL " read dir +or x in #/bin/ls# $dir' do

A 0dicionar(, @ clear echo .n "Jual o nome do usurio a se adicionarL " read nome adduser nome Drinci$al A Heletar(, @ clear echo .n "Jual o nome do usurio a deletarL " read nome userdel nome Drinci$al A Mac<u$(, @ +or x in #/bin/ls# /etc' do c$ .P /etc/$x /etc/$x1bc< mv /etc/$x1bc< /usr/bac<u$ done A Drinci$al

O=#echo $x = tr '-&lo%er&/' '-&u$$er&/'# i+ - ! .e $O /' then mv $x $O +i done eli+ - $var = "m" /' then echo .n "Jue diret!rioL " read dir +or x in #/bin/ls# $dir' do O=#echo $x = tr '-&u$$er&/' '-&lo%er&/'# i+ - ! .e $O /' then mv $x $O +i done +i

%erceira parte, &anelas graficas


<os dois topicos anteriores, vimos al!umas coisas b1sicas e l,!icas de pro!rama"o em shell no Linux. 3!ora para completar, darei a ui dicas de como usar 6anelas !r1*icas em seus shell)scripts. 2sso mesmo, 6anelas ue rodam no ambiente !r1*ico, utili(adas *acilmente em seu shell)script. >om esse recurso, vai ser possEvel deixar o seu pro!rama bem ami!1vel. <"o vai ser preciso saber muita coisa de pro!rama"o em shell, pois # muito simples. 3trav#s do pro!rama Udialo!, voc$ poder1 criar os mais variados tipos de 6anelas para o pro!rama: caixas de texto, seleVes, radios, etc. O Udialo! # uma id#ia ue vem do dialo!/cdialo!, um pro!rama para console ue !era %6anelas& no console 8a uelas da instala"o do 0lac.ware; usando a biblioteca ncurses. O Udialo! ao inv#s de usar a biblioteca ncurses, usa a Ulib para criar as 6anelas no ambiente !r1*ico.

-rimeiro de tudo ser1 necess1rio voc$ obter o Udialo! no seu sistema. <"o # comum o Udialo! estar incluso nas distribuies, ent"o voc$ ter1 de pe!ar e compilar o pro!rama. Obtenha o pro!rama no >' da Wevista ou visite o endereo o*icial do Udialo!, ue # http://xdialo!.*ree.*r. 3 ui eu pe!uei o ar uivo Udialo!)I.O.X.tar.b(L, e a!ora vamos aos passos b1sicos para instalar ele. -rimeiro descompacte)o com o comando bun(ipL Udialo!)I.O.X.tar.b(L, e lo!o em se!uida tar xpv* Udialo!)I.O.X.tar. 5m diret,rio chamado Udialo!)I.O.X ser1 criado, e entrando nele voc$ estar1 pronto para compil1)lo e instal1)lo. -ara *a(er isso use os comandos ./con*i!ure, depois ma.e e por +ltimo ma.e install. <o passo do ma.e install, o bin1rio do Udialo! ser1 colocado em /usr/local/bin. -ronto, a!ora voc$ 61 poder1 utili(ar o Udialo! atrav#s de ual uer shell)script. 4 a!ora vamos 7 a"o: >omo aprendemos nos arti!os anteriores, em shell)script # s, colocar o comando dentro do ar uivo ue ele 61 vai ser executado uando o script *or executado. 4nt"o s, o ue temos de aprender a ui # como usar o Udialo!. /amos ver um primeiro exemplo:
#!/bin/bash Qdialog ..title "Exem$lo nNmero 3!" ..center ..stdout ..Oesno R "Ssto " legalL" R > > echo $L

>omo voc$ p?de ver, o pro!rama Udialo! !erou uma 6anela com tEtulo %4xemplo n+mero I:&, per!untando %2sto # le!al=& e com opes de 0im e <"o. <ote ue a Y 8barra; serve para indicar 7 shell para continuar o comando da linha se!uinte, ent"o estas tr$s linhas s"o ue nem uma s,. >omo +ltimo comando do exemplo dado, temos o echo D=, ue eu colo uei apenas para indicar ual *oi o retorno da per!unta. >aso o usu1rio apertou em 0im, o retorno vai ser S, e se apertou em <"o, vai ser I. -odemos usar este retorno para controlar o ue o usu1rio escolher. /e6amos um exemplo:
Qdialog ..title "Exem$lo nNmero 4!" ..center ..stdout ..Oesno R "Neste exem$lo* vamos ver o que voc9 quer +a;er1 8oc9 deseKa continuar com o $rogramaL" R > > i+ - $L = ">" /' then echo "Jue bom! 8oc9 continuou o $rograma! Darab"ns!" eli+ - $L = "3" /' then echo "8oc9 saiu do $rograma111" +i

/iu como *unciona= 3!ora vamos ver outros recursos ue o Udialo! pode o*erecer. 4u vou dar v1rios exemplos a ui e sair comentando cada op"o. /oc$ precisar1 praticar bastante e conhecer as v1rias opes. -rimeiro vamos !erar uma simples mensa!em pro usu1rio ver:
Qdialog ..title "0viso" ..center ..stdout ..msgbox R "Este $rograma " a$enas um exem$lo $ara voc9 ver como o Qdialog R

Rn+unciona1 0$ro$!sito* se voc9 $raticar bastante $ode criar R Rn$rogra mas incrTveis e +acilmente* que daria muito mais R Rntrabalho +a;endo em outras linguagens1" R > >

O usu1rio aperta O. e o shell)script continua normalmente. <o primeiro exemplo eu usei a op"o ZHesno ue !erava o sim e n"o. 3!ora usei o Zms!box. Gas e se voc$ uiser ue o usu1rio di!ite al!o e isto se6a !ravado em um ar uivo por exemplo= /amos ver este exemplo:
Qdialog ..title "Jue 0nime que voc9 mais gostaL" ..center ..in$utbox R "Ce voc9 sabe o que " 0nime* e gosta* qual o seu $re+eridoLRn R Cua res$osta ser gravada no arquivo res$osta1" R > > 4U res$osta

'epois ue o usu1rio preenche o campo e d1 O., a resposta ue este usu1rio di!itou ser1 !ravada no ar uvio resposta. 2sto ocorreu pelo *ato de eu ter colocado o direcionador L[ para o ar uivo resposta. 0e eu colocasse a op"o Zstdout na linha de comando do Udialo!, a resposta do usu1rio apareceria na tela. @ente voc$. /amos ver a!ora sele"o de itens, ue # uma das coisas mais importantes num pro!rama. 'esta ve( usaremos a op"o Zmenubox para !erar um menu com os itens a serem selecionados. Gais uma ve(, vamos ao exemplo:
Qdialog ..title "Exem$lo de enu" ..center ..stdout ..menubox R "Jual sua distribuiE2o Vinux +avoritaL" R 4> I> > R 3 "Clac<%are" R 4 "Hebian" R 5 "Ped Wat" R 6 "Xonectiva Vinux" R I "Eu tenho minha $r!$ria distribuiE2o"

/iu como # *1cil= O ue o usu1rio escolher vai aparecer como resultado no console 8por causa da op"o Zstdout;. 0e eu colocasse o redirecionador L[, poderia ir para um ar uivo como no exemplo anterior. /amos esclarecer uma coisa a ui tamb#m\ 'epois do texto %Qual sua distribui"o Linux *avorita=&, h1 L n+meros. 4stes dois n+meros correspondem 7 altura e comprimento da 6anela. <os exemplos anteriores eu colo uei %S SK pois aE o Udialo! dimensiona automaticamente o tamanho da 6anela. 4nt"o 61 sabe, se uiser mudar o tamanho da 6anela, # s, mudar estes dois n+meros. 3!ora como +ltimo exemplo, vamos criar uma 6anela em ue o usu1rio poder1 escolher uma ou mais opes. 2sto # chamado de chec.list, e pode ser visto no exemplo a se!uir:
Qdialog ..title "Yltimo exem$lo . chec<list" ..center ..chec<list R "Xomo se $ronuncia VinuxL" R > > > R ")$E2o 3" "Vinucs" o++ R ")$E2o 4" "Venocs" o++ R ")$E2o 5" "VinNcs" o++ R

")$EZo 6" "VTnucs" on R ")$E2o I" "[N\\\/Vinux" o++

/e6a a!ora a di*erena entre esta chec.list e o menu do exemplo anterior. /eri*i ue ue depois de cada op"o h1 o on e o o**. O on indica ue esta op"o dever1 61 estar marcada, e o o** ue n"o dever1 estar marcada. 0e o usu1rio escolher N opes, as mesmas ser"o o resultado. Cem *1cil criar uma inter*ace ami!1vel para suas shell)scripts. 0e voc$ pensa ue isto # tudo, ainda tem muito mais por tr1s do Udialo!. -ara n"o ter ue *icar comentando cada op"o, vou dar uma lista de parJmetros e a descri"o de suas *unes. O ue voc$ dever1 *a(er # sair testando todas as opes e se impressionar ZHesno 5ma 6anela com opes de %0im& ou %<"o& Gesmo ue Zms!box, s, ue desaparece automaticamente em um determinado tempo

Zms!box 3penas mostra um texto in*ormativo Zin*obox

Zinputbox O usu1rio preenche um campo Zran!ebox 4scolhe um n+mero entre U e ], com uma barra de rola!em Ztextbox Zeditbox Gostra o conte+do de um ar uivo numa caixa de texto 4dita o conte+do de um ar uivo numa caixa de texto

Zmenubox >ria um Genu de opes, onde se seleciona um item Zchec.list Gesmo ue Zmenubox, s, ue pode)se selecionar v1rios itens Zradiolist Gesmo ue Zmenubox, mas a!ora em outro estilo Ztreeview Opes or!ani(adas em *orma de %1rvore& 8interessante; Z!au!e Ztailbox Z*select Zdselect 5m indicador de processo Gostra o conte+do de um ar uivo 3bre uma 6anela de sele"o de um ar uivo 3bre uma 6anela de sele"o de um diret,rio

Zcalendar Gostra um calend1rio para escolher uma data Ztimebox Gostra uma 6anela para edi"o de hor1rio /oc$ tamb#m pode encontrar al!uns exemplos no diret,rio samples ue vem 6unto com o c,di!o)*onte do pro!rama. 0e voc$ *i(er al!um pro!rama le!al em shell)script, sinta)se a vontade para me mandar um e)mail. Outra coisa, como o Udialo! # uma id#ia tirada do dialo!/cdialo! 8existe tamb#m o whiptail ue # parecido;, voc$ pode usar a mesma sintaxe para criar estas %6anelas& no modo console.