programando em shell script - devin

22
Tutoriais Dicas Linux Servidores Internet Programação Programas buscar... Programação 21 0 09 de agosto de 2004 Programando em shell script 170 590,887 Índice de Conteúdo Primeira parte, uma introdução Conceito de Variáveis em shell script Controle de fluxo com o if Outras alternativas Segunda parte, se aprofundando mais! case for while until Usando vários scripts em um só Variáveis especiais Funções Exemplo Final Terceira parte, janelas graficas Primeira parte, uma introdução 32 729 4 12 70

Upload: mamachello

Post on 21-Dec-2015

65 views

Category:

Documents


11 download

DESCRIPTION

linux

TRANSCRIPT

Page 1: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 1/22

TutoriaisDicasLinuxServidoresInternetProgramaçãoProgramas

buscar...Programação 21 0

09 de agosto de 2004

Programando em shell script

170

590,887

Índice de Conteúdo

Primeira parte, uma introduçãoConceito de Variáveis emshell scriptControle de fluxo com oifOutras alternativas

Segunda parte, se aprofundandomais!

caseforwhileuntilUsando vários scripts emum sóVariáveis especiaisFunçõesExemplo Final

Terceira parte, janelas graficas

Primeira parte, uma introdução

32729 4 12 70

Page 2: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 2/22

Quem usa Linux conhece bem o prompt de comando sh, ou variações como o bash. O ue muita gentenão sabe é que o sh ou o bash têm uma “poderosa” linguagem de script embutido nelas mesmas – shellscript. Diversas pessoas utilizamse desta linguagem para facilitar a realização de inúmeras tarefasadministrativas no Linux, ou até mesmo criar seus próprios programinhas. Patrick Volkerding, criadorda distribuição Slackware, utiliza esta linguagem para toda a instalação e configuração de suadistribuição. Você poderá criar scripts para automar as tarefas diárias de um servidor, para efetuarbackup automático regularmente, procurar textos, criar formatações, e muito mais. Para você ver comoesta linguagem pode ser útil, vamos ver alguns passos introdutórios sobre ela.

Interpretadores de comandos são programas feitos para intermediar o usuário e seu sistema. Atravésdestes interpretadores, o usuário manda um comando, e o interpretador o executa no sistema. Eles são a“Shell” do sistema Linux. Usaremos o interpretador de comandos bash, por ser mais “extenso” que o sh,e para que haja uma melhor compreensão das informações obtidas aqui, é bom ter uma base sobre oconceito de lógica de programação.

Uma das vantagens destes shell scripts é que eles não precisam ser compilados, ou seja, basta apenascriar um arquivo texto qualquer, e inserir comandos à ele. Para dar à este arquivo a definição de “shellscript”, teremos que incluir uma linha no começo do arquivo (#!/bin/bash) e tornálo “executável”,utilizando o comando chmod. Vamos seguir com um pequeno exemplo de um shell script que mostre natela: “Nossa! Estou vivo!”:

Fácil, hein? A primeira linha indica que todas as outras linhas abaixo deverão ser executadas pelo bash(que se localiza em /bin/bash), e a segunda linha imprimirá na tela a frase “Nossa! Estou vivo!”,utilizando o comando echo, que serve justamente para isto. Como você pôde ver, todos os comandosque você digita diretamente na linha de comando, você poderá incluir no seu shell script, criando umasérie de comandos, e é essa combinação de comandos que forma o chamado shell script. Tente tambémdar o comando ‘file arquivo’ e veja que a definição dele é de BourneAgain Shell Script (bash script).

Contudo, para o arquivo poder se executável, você tem de atribuir o comando de executável para ele. Ecomo citamos anteriormente, o comando chmod se encarrega disto:

Pronto, o arquivo poderá ser executado com um simples “./arquivo”.

Conceito de Variáveis em shell script

Variáveis são caracteres que armazenam dados, uma espécie de atalho. O bash reconhece uma variávelquando ela começa com $, ou seja, a diferença entre ‘palavra’ e ‘$palavra’ é que a primeira é umapalavra qualquer, e a outra uma variável. Para definir uma variável, utilizamos a seguinte sintaxe:

O ‘valor’ será atribuído a ‘variável ‘. Valor pode ser uma frase, números, e até outras variáveis ecomandos. O valor pode ser expressado entre as aspas (“”), apóstrofos (”) ou crases (“). As aspas vãointerpretar as variáveis que estiverem dentro do valor, os apóstrofos lerão o valor literalmente, seminterpretar nada, e as crases vão interpretar um comando e retornar a sua saída para a variável.

Vejamos exemplos:

12

#!/bin/bashecho 'Nossa! Estou vivo!'

$ chmod +x arquivo

1 variavel="valor"

Page 3: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 3/22

Se você quiser criar um script em que o usuário deve interagir com ele, é possível que você queira que opróprio usuário defina uma variável, e para isso usamos o comando read, que dará uma pausa no script eficarará esperando o usuário digitar algum valor e teclar enter. Exemplo:

(O usuário digita e tecla enter, vamos supor que ele digitou ‘eu sou um frutinha’)

Controle de fluxo com o if

Controle de fluxo são comandos que vão testando algumas alternativas, e de acordo com essasalternativas, vão executando comandos. Um dos comandos de controle de fluxo mais usados écertamente o if, que é baseado na lógica “se acontecer isso, irei fazer isso, se não, irei fazer aquilo”.

Vamos dar um exemplo:

O que este pedaço de código faz? O if testa a seguinte expressão: Se a variável $linux existir, então(then) ele diz que que existe com o echo, se não (else), ele diz que não existe. O operador e que usei éprédefinido, e você pode encontrar a listagem dos operadores na tabela:

eq Igualne Diferentegt Maiorlt Menor

o Oud Se for um diretórioe Se existir

$ variavel="Eu estou logado como usuário $user"$ echo $variavelEu estou logado como usuário cla $ variavel='Eu estou logado como usuário $user'$ echo $variavelEu estou logado como usuário $user $ variavel="Meu diretório atual é o `pwd`"$ echo $variavelMeu diretório atual é o /home/cla

echo "Entre com o valor para a variável: " ; read variavel

echo $variaveleu sou um frutinha

123456

if [ ‐e $linux ]then echo 'A variável $linux existe.'else echo 'A variável $linux não existe.'fi

Page 4: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 4/22

z Se estiver vaziof Se conter textoo Se o usuário for o donor Se o arquivo pode ser lidow Se o arquivo pode ser alteradox Se o arquivo pode ser executado

Outras alternativas

Existem inúmeros comandos no Linux, e para explicar todos, teríamos de publicar um verdadeiro livro.Mas existem outras possibilidades de aprendizado desta língua, que também é usado em todas asprogramações. Primeiro de tudo você pode dar uma olhada na manpage do bash (comando man bash),que disponibilizará os comandos embutidos no interpretador de comandos. Uma das coisas essenciaspara o aprendizado é sair coletando exemplos de outros scripts e ir estudandoos minuciosamente.Procure sempre comandos e expressões novas em outros scripts e em manpages dos comandos. E porúltimo, mas não o menos importante, praticar bastante!

Na tabela a seguir, você pode encontrar uma listagem de comandos para usar em seu shell script:

echo Imprime texto na telaread Captura dados do usuário e coloca numa variávelexit Finaliza o scriptsleep Dá uma pausa em segundos no scriptclear Limpa a telastty Configura o terminal temporariamentetput Altera o modo de exibiçãoif Controle de fluxo que testa uma ou mais expressõescase Controle de fluxo que testa várias expressões ao mesmo tempofor Controle de fluxo que testa uma ou mais expressõeswhile Controle de fluxo que testa uma ou mais expressões

E assim seja, crie seus próprios scripts e facilite de uma vez só parte de sua vida no Linux!

Segunda parte, se aprofundando mais!

Falamos sobre o conceito da programação em Shell Script, e demos o primeiro passo para construirnossos próprios scripts. Agora vamos nos aprofundar nos comandos mais complicados, aprendendo afazer programas ainda mais úteis. Nestes comandos estão inclusos o case e os laços for, while e until.Além disso, vamos falar de funções e, por último, teremos um programa em shell script.

case

O case é para controle de fluxo, tal como é o if. Mas enquanto o if testa expressões não exatas, o casevai agir de acordo com os resultados exatos. Vejamos um exemplo:

123

case $1 in parametro1) comando1 ; comando2 ;; parametro2) comando3 ; comando4 ;;

Page 5: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 5/22

Aqui aconteceu o seguinte: o case leu a variável $1 (que é o primeiro parâmetro passado para oprograma), e comparou com valores exatos. Se a variável $1 for igual à “parametro1″, então o programaexecutará o comando1 e o comando2; se for igual à “parametro2″, executará o comando3 e o comando4,e assim em diante. A última opção (*), é uma opção padrão do case, ou seja, se o parâmetro passado nãofor igual a nenhuma das outras opções anteriores, esse comando será executado automaticamente.

Você pode ver que, com o case fica muito mais fácil criar uma espécie de “menu” para o shell script doque com o if. Vamos demonstrar a mesma função anterior, mas agora usando o if:

Veja a diferença. É muito mais prático usar o case! A vantagem do if é que ele pode testar váriasexpressões que o case não pode. O case é mais prático, mas o if pode substituílo e ainda abrange maisfunções. Note que, no exemplo com o if, citamos um “comando” não visto antes: o elif – que é umacombinação de else e if. Ao invés de fechar o if para criar outro, usamos o elif para testar uma expressãono mesmo comando if.

for

O laço for vai substituindo uma variável por um valor, e vai executando os comandos pedidos. Veja oexemplo:

Primeiramente o laço for atribuiu o valor de retorno do comando “*” (que é equivalente a um ls semnenhum parâmetro) para a variável $i, depois executou o bloco de comandos. Em seguida ele atribuioutro valor do comando “*” para a variável $1 e reexecutou os comandos. Isso se repete até que nãosobrem valores de retorno do comando “*”. Outro exemplo:

45

*) echo "Você tem de entrar com um parâmetro válido" ;;esac

010203040506070809101112

if [ ‐z $1 ]; then echo "Você tem de entrar com um parâmetro válido" exitelif [ $1 = "parametro1" ]; then comando1 comando2elif [ $1 = "parametro2" ]; then comando3 comando4else echo "Você tem de entrar com um parâmetro válido"fi

12345

for i in *do cp $i $i.backup mv $i.backup /usr/backupdone

123456

for original in *; do resultado=`echo $original | tr '[:upper:]' '[:lower:]'` if [ ! ‐e $resultado ]; then mv $original $resultado

Page 6: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 6/22

Aqui, o que ocorre é a transformação de letras maiúsculas para minúsculas. Para cada arquivo que o laçolê, uma variável chamada $resultado irá conter o arquivo em letras minúsculas. Para transformar emletras minúsculas, usei o comando tr. Caso não exista um arquivo igual e com letras minúsculas, oarquivo é renomeado para o valor da variável $resultado, de mesmo nome, mas com letras minúsculas.

Como os exemplos ilustram, o laço for pode ser bem útil no tratamento de múltiplos arquivos. Vocêpode deixálos todos com letras minúsculas ou maiúsculas sem precisar renomear cada ummanualmente, pode organizar dados, fazer backup, entre outras coisas.

while

O while testa continuamente uma expressão, até que ela se torne falsa. Exemplo:

O que acontece aqui é o seguinte: enquanto a “$variavel” for igual a “valor”, o while ficará executandoos comandos 1 e 2, até que a “$variavel” não seja mais igual a “valor”. Se no bloco dos comandos a“$variavel” mudasse, o while iria parar de executar os comandos quando chegasse em done, pois agora aexpressão $variavel = “valor” não seria mais verdadeira.

until

Tem as mesmas características do while, a única diferença é que ele faz o contrário. Veja o exemploabaixo:

Ao invés de executar o bloco de comandos (comando1 e comando2) até que a expressão se torne falsa, ountil testa a expressão e executa o bloco de comandos até que a expressão se torne verdadeira. Noexemplo, o bloco de comandos será executado desde que a expressão $variavel = “valor” não sejaverdadeira. Se no bloco de comandos a variável for definida como “valor”, o until pára de executar oscomandos quando chega ao done.

Vejamos um exemplo para o until que, sintaticamente invertido, serve para o while também:

78

fidone

12345

variavel="valor"while [ $variavel = "valor" ]; do comando1 comando2done

12345

variavel="naovalor"until [ $variavel = "valor" ]; do comando1 comando2done

01020304050607

var=1count=0until [ $var = "0" ]; do comando1 comando2 if [ $count = 9 ]; then var=0

Page 7: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 7/22

Primeiro, atribuímos à variável “$var” o valor “1″. A variável “$count” será uma contagem para quantasvezes quisermos executar o bloco de comandos. O until executa os comandos 1 e 2, enquanto a variável“$var” for igual a “0″. Então usamos um if para atribuir o valor 0 para a variável “$var”, se a variável“$count” for igual a 9. Se a variável “$count” não for igual a 0, somase 1 a ela. Isso cria um laço queexecuta o comando 10 vezes, porque cada vez que o comando do bloco de comandos é executado,somase 1 à variável “$count”, e quando chega em 9, a variável “$var” é igualada a zero, quebrandoassim o laço until.

Usando vários scripts em um só

Podese precisar criar vários scripts shell que fazem funções diferentes, mas, e se você precisar executarem um script shell um outro script externo para que este faça alguma função e não precisar reescrevertodo o código? É simples, você só precisa incluir o seguinte comando no seu script shell:

Isso executará o script shell “bashscript2″ durante a execução do seu script shell. Neste caso ele seráexecutado na mesma script shell em que está sendo usado o comando. Para utilizar outra shell, vocêsimplesmente substitui o “.” pelo executável da shell, assim:

Nessas linhas o script2 será executado com a shell sh, e o script3 com a shell tcsh.

Variáveis especiais

$0 Nome do script que está sendo executado$1$9 Parâmetros passados à linha de comando

$# Número de parâmetros passados

$? Valor de retorno do último comando ou de todo o shell script. (o comando “exit 1″ retorna ovalor 1)

$$ Número do PID (Process ID)

Você também encontra muitas variáveis, já predefinidas, na página de manual do bash (comando “manbash”, seção Shell Variables).

Funções

Funções são blocos de comandos que podem ser definidos para uso posterior em qualquer parte docódigo. Praticamente todas as linguagens usam funções que ajudam a organizar o código. Vejamos asintaxe de uma função:

080910

fi count=`expr $count + 1`done

1 . bashscript2

sh script2tcsh script3

12

funcao() comando1

Page 8: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 8/22

Fácil de entender, não? A função funcionará como um simples comando próprio. Você executa a funçãoem qualquer lugar do script shell, e os comandos 1, 2 e outros serão executados. A flexibilidade dasfunções permite facilitar a vida do programador, como no exemplo final.

Exemplo Final

Agora vamos dar um exemplo de um programa que utilize o que aprendemos com os artigos.

345

comando2 [...]

0102030405060708091011121314151617181920212223242526272829303132333435363738394041424344

#!/bin/bash# Exemplo Final de Script Shell# Principal() echo "Exemplo Final sobre o uso de scripts shell" echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐" echo "Opções:" echo echo "1. Trasformar nomes de arquivos" echo "2. Adicionar um usuário no sistema" echo "3. Deletar um usuário no sistema" echo "4. Fazer backup dos arquivos do /etc" echo "5. Sair do exemplo" echo echo ‐n "Qual a opção desejada? " read opcao case $opcao in 1) Transformar ;; 2) Adicionar ;; 3) Deletar ;; 4) Backup ;; 5) exit ;; *) "Opção desconhecida." ; echo ; Principal ;; esac Transformar() echo ‐n "Para Maiúsculo ou minúsculo? [M/m] " read var if [ $var = "M" ]; then echo ‐n "Que diretório? " read dir for x in `/bin/ls` $dir; do y=`echo $x | tr '[:lower:]' '[:upper:]'` if [ ! ‐e $y ]; then mv $x $y fi done elif [ $var = "m" ]; then echo ‐n "Que diretório? " read dir

Page 9: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 9/22

Terceira parte, janelas graficasNos dois topicos anteriores, vimos algumas coisas básicas e lógicas de programação em shell no Linux.Agora para completar, darei aqui dicas de como usar janelas gráficas em seus shell scripts. Isso mesmo,janelas que rodam no ambiente gráfico, utilizadas facilmente em seu shell script. Com esse recurso, vaiser possível deixar o seu programa bem amigável.

Não vai ser preciso saber muita coisa de programação em shell, pois é muito simples. Através doprograma Xdialog, você poderá criar os mais variados tipos de janelas para o programa: caixas de texto,seleçÕes, radios, etc. O Xdialog é uma idéia que vem do dialog/cdialog, um programa para console quegera “janelas” no console (aquelas da instalação do Slackware) usando a biblioteca ncurses. O Xdialogao invés de usar a biblioteca ncurses, usa a Xlib para criar as janelas no ambiente gráfico.

Primeiro de tudo será necessário você obter o Xdialog no seu sistema. Não é comum o Xdialog estarincluso nas distribuições, então você terá de pegar e compilar o programa. Obtenha o programa no CDda Revista ou visite o endereço oficial do Xdialog, que é http://xdialog.free.fr. Aqui eu peguei o arquivoXdialog1.4.5.tar.bz2, e agora vamos aos passos básicos para instalar ele. Primeiro descompacteo como comando bunzip2 Xdialog1.4.5.tar.bz2, e logo em seguida tar xpvf Xdialog1.4.5.tar. Um diretóriochamado Xdialog1.4.5 será criado, e entrando nele você estará pronto para compilálo e instalálo. Parafazer isso use os comandos ./configure, depois make e por último make install. No passo do make

4546474849505152535455565758596061626364656667686970717273747576777879

for x in `/bin/ls` $dir; do y=`echo $x | tr '[:upper:]' '[:lower:]'` if [ ! ‐e $y ]; then mv $x $y fi done fi Adicionar() clear echo ‐n "Qual o nome do usuário a se adicionar? " read nome adduser nome Principal Deletar() clear echo ‐n "Qual o nome do usuário a deletar? " read nome userdel nome Principal Backup() for x in `/bin/ls` /etc; do cp ‐R /etc/$x /etc/$x.bck mv /etc/$x.bck /usr/backup done Principal

Page 10: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 10/22

install, o binário do Xdialog será colocado em /usr/local/bin. Pronto, agora você já poderá utilizar oXdialog através de qualquer shell script.

E agora vamos à ação! Como aprendemos nos artigos anteriores, em shell script é só colocar o comandodentro do arquivo que ele já vai ser executado quando o script for executado. Então só o que temos deaprender aqui é como usar o Xdialog. Vamos ver um primeiro exemplo:

Como você pôde ver, o programa Xdialog gerou uma janela com título “Exemplo número 1!”,perguntando “Isto é legal?” e com opções de Sim e Não. Note que a \ (barra) serve para indicar à shellpara continuar o comando da linha seguinte, então estas três linhas são que nem uma só. Como últimocomando do exemplo dado, temos o echo $?, que eu coloquei apenas para indicar qual foi o retorno dapergunta. Caso o usuário apertou em Sim, o retorno vai ser 0, e se apertou em Não, vai ser 1. Podemosusar este retorno para controlar o que o usuário escolher. Vejamos um exemplo:

Viu como funciona? Agora vamos ver outros recursos que o Xdialog pode oferecer. Eu vou dar váriosexemplos aqui e sair comentando cada opção. Você precisará praticar bastante e conhecer as váriasopções. Primeiro vamos gerar uma simples mensagem pro usuário ver:

O usuário aperta Ok e o shell script continua normalmente. No primeiro exemplo eu usei a opção –yesnoque gerava o sim e não. Agora usei o –msgbox. Mas e se você quiser que o usuário digite algo e isto sejagravado em um arquivo por exemplo? Vamos ver este exemplo:

1234567

#!/bin/bash Xdialog ‐‐title "Exemplo número 1!" ‐‐center ‐‐stdout ‐‐yesno \"Isto é legal?" \0 0 echo $?

123456789

Xdialog ‐‐title "Exemplo número 2!" ‐‐center ‐‐stdout ‐‐yesno \"Neste exemplo, vamos ver o que você quer fazer. Você deseja continuar com o programa?"0 0 if [ $? = "0" ]; then echo "Que bom! Você continuou o programa! Parabéns!"elif [ $? = "1" ]; then echo "Você saiu do programa..."fi

123456

Xdialog ‐‐title "Aviso" ‐‐center ‐‐stdout ‐‐msgbox \"Este programa é apenas um exemplo para você ver como o Xdialog \\nfunciona. Apropósito, se você praticar bastante pode criar \\nprogra mas incríveis e facilmente, que daria muito mais \\ntrabalho fazendo em outras linguagens." \0 0

1234

Xdialog ‐‐title "Que Anime que você mais gosta?" ‐‐center ‐‐inputbox \"Se você sabe o que é Anime, e gosta, qual o seu preferido?\n \ Sua resposta será gravada no arquivo resposta." \0 0 2 > resposta

Page 11: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 11/22

Depois que o usuário preenche o campo e dá Ok, a resposta que este usuário digitou será gravada noarquvio resposta. Isto ocorreu pelo fato de eu ter colocado o direcionador 2> para o arquivo resposta. Seeu colocasse a opção –stdout na linha de comando do Xdialog, a resposta do usuário apareceria na tela.Tente você.

Vamos ver agora seleção de itens, que é uma das coisas mais importantes num programa. Desta vezusaremos a opção –menubox para gerar um menu com os itens a serem selecionados. Mais uma vez,vamos ao exemplo:

Viu como é fácil? O que o usuário escolher vai aparecer como resultado no console (por causa da opção–stdout). Se eu colocasse o redirecionador 2>, poderia ir para um arquivo como no exemplo anterior.Vamos esclarecer uma coisa aqui também… Depois do texto “Qual sua distribuição Linux favorita?”, há2 números. Estes dois números correspondem à altura e comprimento da janela. Nos exemplosanteriores eu coloquei “0 0″ pois aí o Xdialog dimensiona automaticamente o tamanho da janela. Entãojá sabe, se quiser mudar o tamanho da janela, é só mudar estes dois números.

Agora como último exemplo, vamos criar uma janela em que o usuário poderá escolher uma ou maisopções. Isto é chamado de checklist, e pode ser visto no exemplo a seguir:

Veja agora a diferença entre esta checklist e o menu do exemplo anterior. Verifique que depois de cadaopção há o on e o off. O on indica que esta opção deverá já estar marcada, e o off que não deverá estarmarcada. Se o usuário escolher 3 opções, as mesmas serão o resultado.

Bem fácil criar uma interface amigável para suas shell scripts. Se você pensa que isto é tudo, ainda temmuito mais por trás do Xdialog. Para não ter que ficar comentando cada opção, vou dar uma lista deparâmetros e a descrição de suas funções. O que você deverá fazer é sair testando todas as opções e seimpressionar :)

–yesno Uma janela com opções de “Sim” ou “Não”–msgbox Apenas mostra um texto informativo–infobox Mesmo que –msgbox, só que desaparece automaticamente em um determinado tempo–inputbox O usuário preenche um campo–rangebox Escolhe um número entre X e Y, com uma barra de rolagem–textbox Mostra o conteúdo de um arquivo numa caixa de texto

12345678

Xdialog ‐‐title "Exemplo de Menu" ‐‐center ‐‐stdout ‐‐menubox \"Qual sua distribuição Linux favorita?" \20 50 0 \1 "Slackware" \2 "Debian" \3 "Red Hat" \4 "Conectiva Linux" \5 "Eu tenho minha própria distribuição"

12345678

Xdialog ‐‐title "Último exemplo ‐ checklist" ‐‐center ‐‐checklist \"Como se pronuncia Linux?" \0 0 0 \"Opção 1" "Láinucs" off \"Opção 2" "Lenocs" off \"Opção 3" "Linúcs" off \"Opçào 4" "Línucs" on \"Opção 5" "GNUUU/Linux" off

Page 12: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 12/22

–editbox Edita o conteúdo de um arquivo numa caixa de texto–menubox Cria um Menu de opções, onde se seleciona um item–checklist Mesmo que –menubox, só que podese selecionar vários itens–radiolist Mesmo que –menubox, mas agora em outro estilo–treeview Opções organizadas em forma de “árvore” (interessante)–gauge Um indicador de processo–tailbox Mostra o conteúdo de um arquivo–fselect Abre uma janela de seleção de um arquivo–dselect Abre uma janela de seleção de um diretório–calendar Mostra um calendário para escolher uma data–timebox Mostra uma janela para edição de horário

Você também pode encontrar alguns exemplos no diretório samples que vem junto com o códigofontedo programa. Se você fizer algum programa legal em shell script, sintase a vontade para me mandar umemail. Outra coisa, como o Xdialog é uma idéia tirada do dialog/cdialog (existe também o whiptail queé parecido), você pode usar a mesma sintaxe para criar estas “janelas” no modo console. Espero queestas informações foram úteis a você e até a próxima :)

170

590,887

bash sh shell shellscript tutorial

Hugo Cisneiros (Eitch)

Apaixonado por Linux e administração de sistemas. Viciado em Internet, servidores, e em passarconhecimento. Idealizador do Devin, tem como meta aprender e ensinar muito Linux, o que ele vemfazendo desde 1997 :)

32729 4 12 70

Page 13: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 13/22

Shell Script: tratamento de argumentos e opções

ShellScript: Reconexão Automática

Shell: Entrada e Saída

Recent TrackbacksTópico 105 subtópico 2 seção 1: Sintaxe padrão sh | Wargate Safe[...] variavel=”naovalor” until [ $variavel = "valor" ]; do comando1 comando2 done – See more at:http://www.devin.com.br/shell_script/#sthash.tv3Eppib.dpuf [...]

deuzebranaweb.com.br – http://www.devin.com.br/shell_script/[...] No Comments. « Entendendo TCP/IP (Parte 5) &#... [...]

Link para estudo de Shell Script (2ª unidade) | Cloud N3tworks[...] SHELL SCRIPT 2ª UNIDADE [...]

Auto Estudo LPI | Portal do Educador– Academia de Práticas Inovadoras.

Page 14: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 14/22

Logar

marcio 0

Responder

Marcello Henrique 0

Responder

Marcel Luiz Pereira 0

Responder

Gabriel Neres 0

Responder

Rodrigo 0

Responder

Anselmo 2

Responder

[...] 4. Shell Script: http://www.devin.com.br/shell_script/ [...]

Mandar email via linha de comando no Linux | Fabio Anjos I.T.[...] com o recurso de shell, que por sua vez permite criar poderosos programas que são chamados de shell scripts. Vejamosaqui esta pequena dica de como enviar email via linha de [...]

Show more trackbacks

Comentários (154)Classificar por: Data Classificação Última Atividade

∙ 2 semanas atrás

sensacional, belo post pra quem deseja aprender seu conteúdo é excelente, parabéns....

∙ 5 semanas atrás

Sou estudante de Redes de Computadores, e na Cadeira de Segurança, o professor pediu pra a gente fazer um Script emBash, implementando a Cifra de César. Porém já pesquisei em vários lugares, mas ainda não obtive Resultado concreto àrespeito. Poderia me ajudar com esse Projeto?

Desde já Agradeço!!!

∙ 8 semanas atrás

Hugo, bem legais as informações sobre linux. Gostaria de ter mais informações sobre linux relacionados a projetos esistemas SOAP.

Att, Marcel Luiz Pereira Analista de Sistemas e Projetos

∙ 20 semanas atrás

Muito obrigado , excelente tutorial =]

1 resposta ∙ ativo 14 semanas atrás

∙ 23 semanas atrás

Ola amigos preciso fazer via shell script este cara combo_net_ativacao_141029150709.ZIP ficar assim20141029173800_COMBO_NET_ATIVACAO.ZIP

∙ 73 semanas atrás

Olá amigos como fazer para calcular potência de um número no shell scrpt

2 respostas ∙ ativo 28 semanas atrás

Page 15: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 15/22

Wellington 0

Responder

Gabriela 0

Responder

Kelvin 0

Responder

narviksw 0

Responder

Viviane 0

∙ 28 semanas atrás

HUGO CISNEIROS É UMA LENDA! TENHO UM TUTORIAL/MANUAL GNU/LINUX AQUI SUPER 10 QUE BAIXEIEM 2004 NO SITE "IMASTERS".

Parabéns pela excelente matéria!

∙ 37 semanas atrás

Parabeens cara! Ta muito legal

∙ 42 semanas atrás

Olá Hugo parabéns pelo blog! show de bola vou add nos favoritos com certeza! Agora sobre o Dialog, tem como meexplicar como é uma barra de progresso com o gauge? mas seguinte, achei vários exemplos de como ficaria durante uma cópia de arquivo e com o uso de wget. Agora gostariade saber se tem como explicar como fica usando um comando aptget install pacote, ou um dpkg i pacote.deb ou atémesmo um *.bin...

Será que pode me explicar como ficaria o código, tentei várias e várias maneiras e nada de funcionar :( Valeu!

∙ 46 semanas atrás

Boa noite,

Preciso escrever as linhas abaixo dentro do arquivo /etc/environment. Ele escreve, mas sem as aspas, ficando deste jeito : http_proxy =http://192.168.0.105:3128/ Como faço para que fique como abaixo, com aspas, para o proxy funcionar ?

echo http_proxy="http://192.168.0.105:3128/" >> /etc/environment echo https_proxy="https://192.168.0.105:3128/" >> /etc/environment echo ftp_proxy="ftp://192.168.0.105:3128/" >> /etc/environment echo no_proxy="https://192.168.0.99" >> /etc/environment

Grato pela colaboração.

Tenha uma otima noite.

3 respostas ∙ ativo 45 semanas atrás

∙ 46 semanas atrás

Boa tarde Hugo,

Estou com dificuldade para gerar backup com o tar, estou fazendo assim:

DIR_1="/etc" DIR_2="/usr/local" NAME=AdrianoViviane_`date +%a`.tar.gz FTP=192.168.25.83 USER=******* PASS=*******

Page 16: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 16/22

Responder

Marcelo +1

Responder

http://www.meckerecke.org/wbb2/thread.php?threadid=3889&sid= 0

Responder

Jozenir Lima 2

Responder

Agnaldo 1

Responder

Site Institucional 0

Responder

tar zcvf $NAME $DIR_1 $DIR_2

Sou nova em linux e não sei o que estou fazendo de errado, mas esse script está mostrando todos os arquivos dosdiretórios na tela.

Agradeço pela ajuda.

Parabéns pela postagem, me ajudou em algumas outras dúvidas.

1 resposta ∙ ativo 46 semanas atrás

∙ 60 semanas atrás

Excelente tutorial !!!

Muito objetivo, direto e simples. Parabéns.

∙ 73 semanas atrás

Whether Cutler's contract year has a lucrative ending depends on whether he can summon the magic and good fortuneFlacco eventually did. For now, Cutler is expected to miss Sunday's game between the Bears and Ravens because of ahigh ankle sprain.http://www.meckerecke.org/wbb2/thread.php?threadi... http://www.meckerecke.org/wbb2/thread.php?threadid=3889&sid=

∙ 104 semanas atrás

Boa noite! Desejaria saber como faço pra utilizar o DIV e o MOD em Shell Script? Ou se existe algum operador similarpara eles?

1 resposta ∙ ativo 84 semanas atrás

∙ 99 semanas atrás

Estou precisando de uma ajuda???? Preciso colocar um computador com Ubuntu 1204LTS em um dominio Win2003, tudo configurado e os usuárioslogando pelo Linux no Win2003 server sem problemas, mas preciso que os usuários ao se logarem no dominio mapeiemos drives de trabalho, observação, são usuários com pastas diferentes e permissões no arquivo .bat criado para cada um. Seria possível criar um script shell que permita ser executado na inicialização do Linux que passe o Usuário e Senha parao Servidor Win2003, e mapeie usando o arquivo .bat existente no win2003 server.

Se for possível teria como enviar um exemplo????

Obrigado.

∙ 101 semanas atrás

Comecei a usar o lunix (ubuntu) e aos pouquinhos fui me aventurando no terminal, é incrível como pode ser simplesprogramar. Evidente que precisa desenvolver seus conhecimentos. É uma excelente ferramenta me apaixonei por linuxpor causa do terminal. Hoje não vivo sem ele. Obrigado pelo material.

Page 17: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 17/22

Responder

0ECJ

Sandro 0

Responder

Marcos Yoshihiro Nak 2

Responder

Pablo CSC 0

Responder

Pablo CSC 0

Responder

Ventura 0

Responder

Marco 0

Responder

Silvana 0

Responder

∙ 105 semanas atrás

Muito bom !!! Nota 10!! Estou acostumado a fazer .bat e estou tentando entrar no mundo linux... Estou procurando algo como ler determinado registro dento de um arq. para comentar (inibir) o registro.... Estava atrás decomo montar telas e etc... As dicas acima são ótimas, para quem ainda não sabe nada...

∙ 107 semanas atrás

Estou com uma duvida, preciso de um script que faça o seguinte: tem um diretorio X e uma chamada tipo ./teste.sh mas essa chamada está no crontab e só pode ser executada quando nessediretorio estiverem dois arquivos um .csv e outro .txt pois desejo programala para verificar todos os dias de meia e meiahora.

∙ 111 semanas atrás

Muito bom, parabéns.

Obrigado por compartilhar.

∙ 120 semanas atrás

Opa muito bom *

∙ 120 semanas atrás

muito com cara parabens

∙ 137 semanas atrás

Muito bom. Acrescentou outros conhecimentos que precisava...Não é a toa que este "tutorial" é visto desde 24 de mar de2008. Parabéns Hugo Cisneiros.

∙ 137 semanas atrás

Muito bom, eu só senti falta de uma explicação com aplicação do comando grep.

∙ 147 semanas atrás

Valew de verdade, consegui tirar várias dúvidas.

Obrigadao

Page 18: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 18/22

1

Responder

Gustavo Dutra

Gutenberg Campos 1

Responder

Carlos Fagiani Junio 1

Responder

Heathz 1

Responder

Paulo França 1

∙ 148 semanas atrás

Muito bom cara! Eu tenho alguns artigos sobre shell script no meu blog. Inclusive estou fazendo um framework para shellscript! Acho muito massa essa linguagem!

∙ 149 semanas atrás

Cara se puder ajudar:

tenho um script que cria uma lista onde alguns parametros são necessários, tipo:

nome da lista (consegui resolver)

criei um txt com o nome das listas e um shell script que lê linha por linha do txt e coloca na var $lista o nome da lista;

O problema são os parametros a seguir:

email do dono (nao consegui) vai ser padrao tipo [email protected]

pwd da lista (nao consegui) vai ser padrao tipo 123456

tecle enter para continuar(nao consegui)

Pode ajudar?

∙ 152 semanas atrás

Heathz,

O script só executa um comando por vez... Quando as instruções do comando terminam que ele chama a próxima

se vc tiver um script com a instrução:

#

wget www.site.com.br/arquivo_download.tar.gz echo "Download concluído ou falha no download"

#

Ele só vai mostrar o texto no terminal se o download for concluido ou se houver falha, agora no tempo do download elevai ficar aguardando o wget terminar.

∙ 166 semanas atrás

ae cara... e no caso de eu ter um script que faz download de um arquivo ou compacta um grande arquivo ou algo que exijatempo para ser executado e depois disso executa outros comandos com o arquivo novo (criado ou baixado...) como façopara o script ficar parado até o download terminar?

∙ 167 semanas atrás

Parabéns pelo post. Obrigado por tornar menor a minha ignorância quanto ao assunto

Page 19: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 19/22

Responder

Daniel Donda 1

Responder

Daniel Campos Rodrig 1

Responder

Joao 0

Responder

ícaro 0

Responder

Joao 0

Responder

Marck1 0

Responder

∙ 172 semanas atrás

Parabéns, um dos mais didaticos e completos que eu já ví.

∙ 173 semanas atrás

Daniel Campos Rodrigues

Que bacana!!!

Parabens, é uma aula!!! Que os proximos possam ser assim...

Parabens!!!

∙ 174 semanas atrás

ninguem para ajudar ???? :/

∙ 174 semanas atrás

massão parceiro bem resumido gostei foi fera!!!!

∙ 175 semanas atrás

Olá

Sou iniciante e estou com um problemao.

Preciso executar 1 script para instalacao em varias maquinas distintas

Porem, preciso executar como root, alguem teria como me ajudar?

#!/bin/bash

su c 'rpm e $(rpm aq | nome_do_arquivo)'

su c 'rpm i $(rpm aq |arquivo1)'

obrigado

∙ 177 semanas atrás

Vlw bro`

Útil pacas!!!

Page 20: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 20/22

Myssbot 0

Responder

Catonho 0

Responder

José Amarildo 0

Responder

eloá 0

Responder

luis 1

Responder

luceli moreira 0

Responder

patrick 0

Responder

Gabriel +1

∙ 178 semanas atrás

eu vi exatamente mesmo texto e coodigo na aula de hoje na 4linux, e o professor tinha dito que ele quem fez, e serecusou dar o codigo pra um aluno que pediu!!!

professor kleber, modulo 451, dia 11/11/11

∙ 179 semanas atrás

Obrigado, foi de grande ajuda o conteúdo.

Parabéns.

∙ 179 semanas atrás

Valew cara! vc deu uma grande ajuda as esses estudantes desorientados com linux como eu! rsrrs Parabéns!!!!!

∙ 179 semanas atrás

parabéns pelo tutorial,linguagem facil e de facil intendimento..

∙ 180 semanas atrás

Excelente, maravilha quando se aprende isto...

facilita!

Só o do Xdialog não consegui funcionar, instalei beleza, mas não funcionou nos scripts...

∙ 181 semanas atrás

Boa tarde! estamos começando com postgresql e preciso saber como construir shell script com comandos postgre ex:conectar em bancos, extrair dados das tabelas, consultar, desconectar dos bancos. Caso souber de documentação na netfavor me informar.

Obrigada/Lu

∙ 184 semanas atrás

Quero saber aonde fica o Script desejado,eu procuro assim na Google,Aonde fica o Script desejado,pessoal se vocêsouberem me fale por favor até amanhã.

∙ 187 semanas atrás

Page 21: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 21/22

Responder

Aurelius 0

Responder

cidolouko 0

Responder

Digite o texto aqui!

Nome Email Website (opcional)

Comentar como Visitante, ou logar:

Mostrar junto aos seus comentários. Não mostrado publicamente. Se você tem um website, linke para ele aqui.

Enviar Comentário

Muito bom o tutorial!

alguem sabe se em shell script tambem tem "do while"?

por exemplo quero que continue em um loop enquanto o usuario nao digitar um valor valido

exemplo:

do

printf: digite um valor: #exibe na tela

scanf: op # recebe o valor do usuario

while(op >3 || op < 1); #enquanto nao digitar um valor valido vai ficar aparecendo digite um valor

∙ 188 semanas atrás

Gostei muito deste tutorial. Sou iniciante e me senti confortável com a forma que foi explicado.

Parabéns.

∙ 193 semanas atrás

Ficou otimo o tutorial... aprendi muito... porem o Xdialog ja esta um pouco defasado e nao vem mais no ubuntu... teriacomo fazer um mais atual?

Obrigado!

1 2 3 Next »

Postar um novo comentário

Assinar Nada

Page 22: Programando Em Shell Script - Devin

14/04/2015 Programando em shell script Devin

http://www.devin.com.br/shell_script/ 22/22

Comments by

TutoriaisDicasChangelogContatoTermos de Uso

© 20012013 Devin. Consulte os termos de uso.