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/perl ou #!/usr/bin/ruby. Assim, dependendo do interpertador escolhido voce pode so rodar o script digitando ./script no terminal. Caso esta linha seja omitida, sera aceito o shell padrao como interpretador.
  • echo "Hello World!": Esta é a parte efetiva do Codigo. O comando echo faz 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

Olás!

Como comentei anteriormente quero começar falando de shell script. Que é a “linguagem” que mais domino e conheço algumas minucias. Hoje pretendo começar falando de o que é um Shell, pra que serve, como funciona e porque o seu uso deve sempre ser encorajado. Detalhe, tudo que vou falar aqui é valido para linux. O Windows tem um interpretador de comandos tambem (cmd ou command), mas nao tem nem metade do poder de um bash, csh ou ksh (esses nomes eu traduzo mais pra baixo ;)).

Comecemos portanto ok… Bem vindos ao magico mundo do Shell Script! :D

O Shell é a camada mais proxima do hardware que um usuario “comum” pode chegar. Um mapa de “camadas” pode ser feito mais ou menos assim:

Usuario –> Shell –> Kernel –> Hardware

Traduzindo. O usuario entra em contato com o Shell, o shell “fala” com o Kernel e o kernel se vira pra fazer o hardware responder de acordo com o pedido do usuario.

Muito Legal, muito bonito, mas e ae… como uso esse shell?

Simples, facil como roubar doce de uma criança morta (by Nelson). Para poder usar um shell voce precisa:

  • Ter um cerebro
  • Saber ler/escrever
  • Tem um computador
  • Ter uma distribuiçao linux instalada.

Bem nao é muito… Realmente é simples. Se quando voce ligar seu computador aparecer uma tela preta escrita Login:, apos voce digitar seu login e senha, provalvemente vao aparecer umas mensagens de boas vindas e algo do tipo:

caio@darkstar:~$ 1

Pronto esse é o Prompt do shell. Vamos desmembra-lo:

  • caio : É o nome do usuario.
  • @ : Arroba em ingles significa at, que significa em. Ou seja a arroba esta ai para dizer algo como “usuario em maquina”.
  • darkstar : Nome da maquina onde voce esta logado.
  • : : Separador, sem funcao especifica
  • ~ : Diretorio onde voce se encontra no momento. Quando voce se loga, automaticamente voce vai para o diretorio Home do seu usuario (no meu caso /home/caio), e o til(tilde in english) é um apelido para esse diretorio. Caso eu mude para outro diretorio, o nome dele vai aparecer no lugar do ~.
  • $ : O cifrao(dollar sign), significa que o usuario utilizando o prompt tem poderes limitados, nao tem privilegios de admin do PC, ou seja, nao é o root. Caso fosse apareceria a # (cerquilha ou sustenido ou tralha ou em ingles number sign).

So ai ja temos muitas informacoes, que por muitas vezes facilitam a vida de quem usa o shell (principalmente a parte do diretorio).

Outras maneiras de acessar o shell sao:

  • Teclando Alt+F2 no modo grafico e digitando:
    • xterm
    • gnome-terminal (pra quem usa gnome)
    • konsole (pra quem usa KDE)
  • Teclando Ctrl+Alt+F1 (ou F2 ou F3 ou F4 ou F5 ou F6), para ir para um shell puro.

Os shells mais famosos sao:

  • bash: Bourne Again Shell. Padrao em quase todas as distros.
  • csh: C Shell
  • ksh: Korn Shell
  • tsh: tcl Shell
  • sh: Bourne Shell. Uma das implementacoes mais antigas do shell. O bash foi baseado nele (por isso do again).

E agora José?

Agora que começa a ficar divertido :D. Ha uma infinidade de comandos que podem ser executados num shell. Alguns nativos do bash e outros externos. So pra aquecer:

  • ls: Lista os arquivos do diretorio atual
  • cd diretorio: Vai para o diretorio especificado
  • cat texto: Escreve na tela o conteudo de um arquivo texto
  • less texto: Como o cat exibe o conteudo de um arquivo texto, mas com paginacao, busca e outra funcoes. (Para sair aperte q).

Como disse ha uma infinidade de comandos. Um bom lugar pra conhecer alguns é no site FOSSwire . Pretendo cobrir mais comandos em breve.

Naaaaah, pra que ter que aprender algo totalmente novo se tenho o mouse e uma interface grafica. Alem do que o shell é feio!!! :P

Bem. Primeiro, se voce algum dia tiver a felicidade de trabalhar com linux, muito provavelmente voce devera acessar servidores, e muito provavelmente esses servidores nao tem interface grafica.
Outro motivo. Vamos supor que voce instale um novo driver para sua placa de video, e por algum motivo seu modo grafico pare de funcionar… como voce arruma? Modo texto :).
Mas o que mais me faz usar o modo texto: rapidez! Afinal no modo texto ta tudo ali, ao alcance das suas duas maos em mais ou menos 57 teclas. A manipulacao de comandos e arquivos no shell eh muito mais rapida que atraves do mouse. Por exemplo copiar arquivos para outro local. É muito mais simples digitar isso:

$ cp arquivo /home/caio/

Do que ter que ir na pasta do arquivo, copiar ele, ai ir ate a home do usuario, colar o arquivo.
Tambem pelo shell voce tem muito mais controle das coisas. Normalmente informacoes dadas pelo shell sao muito mais detalhadas que por ferramentas graficas.
Alem disso, o shell tem Auto-Complete, que é “coisa de deus”. Por exemplo, supondo que eu tenha um usuario que chama-se apunahasapeemapetilon (piada geek :D) e eu queira copiar um arquivo pro diretorio home dele, eu faco:

$ cp arquivo /home/apun

Eu nem preciso terminar de digitar o login inteiro, é so apertar tab que ele ja completa pra voce:

$ cp arquivo /home/apunahasapeemapetilon

É so dar enter e pronto, Arquivo Copiado :D. Alem disso o auto-complete tambem vale para completar nome de comandos. Depois de um tempo voce vai ficar absurdamente viciado e dependente do tab, enfim ele serve pra mais alguma coisa, alem de identar codigo e mexer com celulas no excel :D

Quanto a ele ser feio… bem, aih nao tem jeito… Mas a beleza esta nos olhos de quem ve nao? Pois bem, beleza e produtividade/controle/rapidez, na balança, qual pesa mais?

Bem, é isso, acabei me extendendo mais do que imaginava. Mas considero o primeiro contato com algo novo o mais importante, portanto quanto mais completo for, acho que é mais facil para assimiliar.

Tioooo, até voce postar denovo eu vou ficar com saudades… Nao tem nada pra eu ler nesse meio tempo???

Tem tem sim. Do post de hoje em diante sempre (ou quase) vou tentar postar um livro sobre o assunto abordado. Tanto para suprir algum deslize ou esquecimento deste que vos escreve, ou para que deseja se aprofundar mesmo.

A dica de hoje é mais voltada a quem quer aprender linux, no geral, nao so shell. Voltada tanto para inciantes quanto pra hard users. E o melhor de tudo, é gratis, free, na faixa, digratis! :D É o ja famoso Guia Foca. Leia, releia, recomende e repasse :D

P-p-por hoje é só p-p-pessoal!

See ya!

1 Pode ser que em algumas distribuições apareça outra coisa ou so $ ou #, que por sinal sao o padrao do unix/linux.

# Rylynn – Andy McKee

Amigos, Romanos, Compatriotas, emprestem-me seus ouvidos…

Parafraseando Marco Antonio na peça Julio Caesar de Shakespeare, começo minha participaçao nesse Kablog.

Foi com muita honra que aceitei o convite de postar meus pensamentos nerds por aqui. Primeiro porque Kabloc nao convida, Kabloc intima (hahah :D). Segundo porque realmente sentia vontade de compartilhar minhas experiencias, conhecimentos e pensamentos com mais pessoas, afinal, blogar é isso, expor sua mais intima ideia sobre qualquer coisa, por mais inutil que seja com milhoes de pessoas (dependendo da audiencia do blog :D).

Aviso aos navegantes!!! As vezes solto varias expressoes em ingles sem perceber… portanto quem nao entender alguma, ficar em duvida ou simplesmente odiar minha mania de fazer isso pode reclamar nos comentarios à vontade (nao que eu va parar de fazer isso pq vc reclamou, mas nao custa tentar né…). Tambem nao sou escritor, nem jornalista, nem gosto de humanas, portanto posso cometer alguns pecados com a lingua brasileira. Alem disso nao uso acentos, só os realmente necessarios, tremenda perda de tempo… mas nem por isso fica mais complicado para entender fica?

Bem, mas sobre o que esse tio ae vai escrever pai?

Respondo filhao… Como geralmente os estalos que meus neuronios dao sao sobre Tecnologia, Linux, Open Source, Games, Musica e Programaçao, estes vao ser os temas que vao pipocar por aqui quando eu assinar os posts. Claro que vai rolar uns Off Topics, afinal, ninguem eh de Ferro né? Pretendo ser conciso em imparcial em meus posts (Micro$oft nao conta :D).

Bem este topico foi feito sem um Mind Map pois deu xabu o Free Mind la no trabalho… Mas os proximos ja estao mais organizados. Pretendo começar falando alguma coisa sobre Shell Script que atualmente o que ando mais inteirado. Mas aguardem tambem as excitantes aventuras de um rapaz iniciando seu aprendizado no mundo do Java e de Ruby on Rails. Excitantes pra um nerd… né Kabloc?!? :D

See You Next Time.

PS: Texto escrito utilizando a versao web do Textile enquanto o Kabloc instala aqui no WordPress


#The New Order - Testament