Olá meninos e meninas como vao voces? Que abertura mais Bozo essa nao :P.
Bem, desculpem por esse gigantesco delay, mas como o Kabloc bem disse abaixo… ESTOU SEM TEMPO. Trabalho tah me consumindo demais, esses dias estamos com coisas novas e como eu sou o estagiario nivel 2 da parada sobra pra quem??? Mas, chega de frescura e reclacamao e vamos mergulhar mais uma vez no delicioso mundo do Shell Script.
Mas, perae, voce falou de Shell e nao Shell Script…
Sim Sim eu sei, mea culpa. Hoje vamos falar, o que eh um shell script de facto.
Um script nada mais é do que um arquivo contendo um amontoado de comandos. Coisas que voce poderia fazer uma de cada vez numa linha de comando mas feitas de uma vez so atraves da execucao de um script.
Shell Scripts tem varias utilidades, mas as mais “notaveis” sao:
- Automatizacao de Processos
- Instalacao de Softwares ou outros scripts
- Execucao de Comandos Tudo em Um
- Execucao de processos repetidos mais facilmente
Mas a mais utilizada com certeza é a automatizacao. Tanto que existem varios tipos de Scripts, SQL, Ruby, Perl e outras aplicacoes/linguagens. Mas aqui vamos nos focar nos super Shell Scripts, que alem de facilitar e MUITO a vida de todo e qualquer SysAdmin ou mesmo o usuarios “comum” de linux mesmo. E ainda sao muito legais de serem feitos :D.
Outra coisa, todo script, independente da linguagem é interpretado e nao compilado. Ou seja, as instrucoes sao executadas diretamente do arquivo de script, ele nao vira linguagem de Maquina (totalmente indecifravel) ou bytecodes (no caso de java). Assim ele precisa de um interpretador somente para funcionar.
Comecando do Comeco
Um exemplo de Shell Script simples, e mais do que classico é o hello_world.sh:
#!/bin/bash
echo "Hello World!!!"
Pronto, quando voce executar esse script ele vai “printar” no terminal “Hello World!!!”. Simples assim. Agora como sempre gosto de fazer, vamos por partes (tm Farah Jorge Jarah):
#!/bin/bash: O (ou A) Shebang do Script. E a linha que indica qual sera o interpretador usado pelo script. Nesse caso estou usando o bash, mas podia ser#!/bin/ksh,#!/usr/bin/perlou#!/usr/bin/ruby. Assim, dependendo do interpertador escolhido voce pode so rodar o script digitando./scriptno terminal. Caso esta linha seja omitida, sera aceito o shell padrao como interpretador.echo "Hello World!": Esta é a parte efetiva do Codigo. O comandoechofaz com que o que estiver na frente dele seja “cuspido” na tela.
Pintando de Verde o script
Beleza, fizemos um script MAAAAAIS do que classico, mas e agora, como executo ele? Facil. Dentro da pasta onde está o arquivo simplesmente digite:
caio@darkstar:~$ ./hello_world.sh
bash: ./hello_world.sh: Permission denied
Opa, que aconteceu?
Permissoes… vamos ver, que aconteceu. Vamos executar nosso always at hand ls -l para ver as permissoes desse arquivo:
-rw-r--r-- 1 caio caio 35 2007-08-30 23:54 hello_world.s
Bem… eu sou o dono do meu arquivo, entao pelo jeito posso escrever e ler, o resto so pode ler… Ha, ja sei… Ele nao eh ainda um arquivo executavel… Como fazemos isso? Usando o comando chmod +x hello_world.sh . Pronto, isso jah faz com que o arquivo possa ser executado por todos, afinal eh soh um hello world, nao tem problema… Vamos checar:
-rwxr-xr-x 1 caio caio 35 2007-08-30 23:54 hello_world.sh
Pronto, notam os x ali nas permissoes? E se voce usa o ls com a opcao –color, o nome do arquivo vai aparecer em verde, isso torna mais facil reconhecer os scripts. Dica rapida!!! Se voce usar ls -F o ls vai appendar no final do nome dos executaveis um “*”, assim como um “/” para os diretorios e mais alguns appends que nao lembro agora mas posto depois ;)
Agora eh soh executar a crianca denovo, lembra ainda como faz?
caio@darkstar:~$ ./hello_world.sh
Hello World!!!
Proonto, script rodando todo mundo feliz :D.
Me ensina a ler e escrever?
Agora dois comandos basicos de shell que tem em praticamente todo script, e com esses dois dah pra brincar um pouco enquanto aguardam o proximo post (espero que nao demore).
echo
Como ja citado ele eh o “cuspidor” de strings padrao no terminal. Tem basicamente duas opcoes:
-n– Depois de printar na tela o que voce pedir, ao inves de pular linha (que eh default) ele mantem na linha padrao.-e– Interpreta caracteres escapados com funcoes especiais (ex: \n, \t).
Exemplificando…
echo "Alo, alo testando" ==> Alo, alo testando
echo -n "Olha soh, dessa vez nao pula linha..." ==> Olha soh, dessa vez nao pula linha
echo -e "Agora tem um \ttab no meio do texto." ==> Agora tem um tab no meio do texto.
Pra ficar mais legal vou colocar alguns dos escapes mais usados
\a: Emite um alerta, um beep.\c: Se colocado no final da linha inibe pular linha (como o echo -n)\n: Pula linha (new line)\t: Tab horizontal\v: Tab vertical
read
Esse comando le um da entrada padrao (stdin) alguma coisa e joga para uma variavel (ou para lugar nenhum, depende de voce :D). O jeito de usar eh:
read VARIAVEL
Ele tambem tem algumas opcoes:
-p: Significa basicamente Prompt… Na verdade faz a mesma coisa que a combinacao:echo -n "alguma coisa"; read VARIAVEL. O jeito de se usar eh assim:read -p "alguma coisa" VARIAVEL.-s: Secret :D Otimo pra digitar senhas, enquanto voce digita nao aparece nada no prompt.
Essas sao as minhas usadas e aprovadas. Tem algumas outras, mas na duvida coloco qdo tiver certeza da utilidade e utilizacao das mesmas vou deixar pra postar depois.
Vamos fazer um script tchubiduba pra testar essas paradas.
ecorid.sh
#!/bin/bash
echo -n "Que timeteu? "
read TIMETEU
echo -e "Em buraco de Cobra Tatu Caminha dentro? \c"
read TATU
read -p "Seu Cuca é eu?" CUDIQUEM
read "To com varias maquinas em casa... Qué uma maquina minha?" MAKINA #Nota nesse caso ele vai pular linha e nao colocar na frente depois da pergunta.
echo $TIMETEU
echo $TATU
echo $CUDIQUEM
echo $MAKINA
Bem, algumas coisas, as em Uppercase provavelmente alguem nao entendeu, sao as Varias Variaveis (tm, Julio Cesar Neves). No proximo post se tudo der certo falarei (e bastante como eh de costume) sobre elas :D
Programem e Have Fun!
Inté.
# Vollmonde - Rage