Introdução ao Shell Script, esta poderosa ferramenta que facilita bastante a administração dos sistemas Linux. Com este artigo, espero dar base àqueles que ainda não conhecem o Shell Script para começar a desenvolver seus próprios scripts e entender também scripts feitos por outros membros da comunidade.
Serve para indicar qual dos shells (alguém aí sabe qual o plural
de shell?) será utilizado para a execução dos comandos contidos
no script. No nosso caso, utilizaremos o bash (que é o mais
utilizado atualmente).
echo ""
O comando "echo" serve para jogar mensagens na tela, quando
colocamos ele sem nenhuma mensagem, teremos uma linha em
branco na tela. Temos então uma saída menos embolada das
informações na tela :)
echo -e "Qual partição você deseja montar?" "\c"
O parâmetro "-e" do comando echo ativa a interpretação de opções
como a "\c", que por sua vez, faz com que a resposta do usuário
fique na linha em que termina o texto que será jogado na tela
pelo echo. Sem o "\c", a resposta do usuário será digitada na
linha de baixo. Isso não altera em nada o funcionamento do script.
read part
Nesta linha, o comando read guarda o que foi respondido pelo
usuário na string part. O nome da string pode ser o que você
quiser, usei part porque conterá o nome da partição a ser montada.
echo
Linha em branco na tela!
echo "Onde deseja montar $part ?"
Esta é a segunda pergunta feita ao usuário, sendo jogada na tela
pelo comando echo. Agora string part é jogada na tela, usamos um
$ antes para indicar que se trata de uma string, fazendo o
shell exibir seu conteúdo, ou seja, se não colocarmos o $ antes
do nome da string, a palavra part seria jogada na tela como
outra qualquer e não o conteúdo da string part ;).
Um pequeno detalhe, repare que sem os parâmetros -e e "\c", do
comando echo, a resposta do usuário será escrita na linha de
baixo, não na mesma linha em que termina a pergunta.
read dir
Aqui criamos outra string (dir), essa string conterá o nome do
diretório que o usuário digitou, para ser usado mais tarde.
if [ -d $dir ]
O comando if combinado com o comando test (representado por [ ])
tem uma importante função no script. O comando test ([ ]) testa
as condições nele colocadas, ou seja, no nosso caso, se o diretório
que o usuário digitou (que está contido na string dir) realmente
é um diretório (parâmetro -d). Para testar a string, por exemplo,
como um arquivo comum, usaria-se o parâmetro -f.
Mas e o comando if? O comando if executa determinadas ações se o
"teste" se confirmar e outras se o "teste" for falso. Nas próximas
linhas veremos exatamente como isso funciona.
then
O then faz parte do comando if. Depois do then, coloca-se os comandos a serem executados caso o "teste" se confirme.
mount /dev/$part $dir
Nesta linha são "jogadas" as strings para a execução do comando
que montará a partição indicada pelo usuário, no diretório também
indicado por ele. Na linha do comando indicamos que se trata de
uma string usando o $ antes de seu nome, fazendo que o conteúdo
da string seja usado no comando. Ou seja, na string part temos
como conteúdo o nome da partição a ser montada e na string dir
temos onde deverá ser montada a partição indicada anteriormente.
else
O else também faz parte do comando if. Depois do else, são
colocadas as linhas a serem executadas caso aquele "teste"
não se confirme.
echo "$dir Não existe!"
Se o diretório não existir, o comando echo jogará na tela a
mensagem indicando ao usuário que o diretório de fato não existe.
fi
Indica o "fim" do comando if, ou seja, a partir daqui, as linhas
são executadas independentemente do resultado do "teste" que foi
feito com o nome do diretório.
Pronto!
Pode ser um exemplo considerado "bobo", mas espero que sirva
para se pegar os primeiros conceitos, funções de alguns
comandos, estruturação de script, o que é, aliás, o verdadeiro
intuito do artigo.
[1] Comentário enviado por leoberbert em 21/04/2005 - 13:20h
Caro amigo,
Estou aqui para parabenizá-lo pelo artigo, pois ainda não tinha visto nenhum tutorial que explicasse com clareza essa incrível ferramenta, ficou muito bom e espero que em breve vc estege postando algo mais que faça referência ao mesmo, parabéns pelo ótimo artigo.
[2] Comentário enviado por davidsonpaulo em 21/04/2005 - 16:32h
Aew! Granda Pablo! Tah destruindo nos artigos hein guri! Imagina quando esse cara tiver a sua maquina potente em casa pra praticar... teremos mais um poderoso pinguim contribuindo para o crescimento da comunidade. Eh isso ae guri, parabens!
[3] Comentário enviado por removido em 21/04/2005 - 22:03h
OPa!,
Parabéns amigo pelo artigo essa introdução ajuda muitos concerteza. Só que gostaria de comentar algo na parte que você trabalha com variaveis e diz que são strings.
como segue:
===========================================================
Nesta linha, o comando read guarda o que foi respondido pelo usuário na string part. O nome da string pode ser o que você quiser, usei part porque conterá o nome da partição a ser montada.
===========================================================
corrigido:
===========================================================
Nesta linha, o comando read guarda o que foi respondido pelo usuário na >>variavel<< part. O nome da >>>variavel<<< pode ser o que você quiser, usei part porque conterá o nome da partição a ser montada.
===========================================================
Pelo que sei string é o que vai dentro da variavel nesse caso e não sendo a variavel. Ao menos em outras linguagens toda variavel é indentificada quando "guarda" temporariamente na memoria da execução do script informações.
[6] Comentário enviado por feraf em 23/04/2005 - 09:19h
Só há um pequeno problema com o script do 'instalador':
Quando você da o comando 'su', ele interrompe o script, e só continua ele quando você da um 'exit' e sai do root. Uma alternativa seria entrar no su já passando um comando a ser executado. Ele irá entrar como root, executar o comando e sair. Somente substituindo os comandos 'su' e 'make install' por:
[8] Comentário enviado por pexao em 23/04/2005 - 11:01h
Parabens pelo artigo.
Porem vi um erro na primeira pagina.
Voce tornou o arquivo executavel que se chama:
--------------------------------------------------------------
Agora vamos tornar este arquivo de texto em um arquivo executável:
E depois utilizou o arquivo para executar:
--------------------------------------------------------------
$ ./instalador
--------------------------------------------------------------
Sei que parece simples porem quando uma pessoa erra apenas uma virgula, pode gerar um problema enorme.
Fica a dica ae.
:)
[9] Comentário enviado por pablocarlos em 23/04/2005 - 11:34h
E aí pessoal !
Queria agradecer a todos que leram o artigo e a todos os que corrigiram os erros q foram aparecendo(que por sinal sao bem graves, mesmo que pequenos)...
Acontece que não tenho tanto tempo de bagagem Linux...mas nao quero justificar erros, estou aí pra aprender c/ eles e c/ toda a comunidade.
Obrigado e espero que, mesmo c/ todos os erros, tenha ajudado alguém !
[11] Comentário enviado por agk em 28/04/2005 - 21:29h
Parabéns pelo artigo, se eu tivesse lido isso quando estava aprendendo shell script teria me ajudado muito com certeza. Excelente artigo para que está começando a navegar pelas linha de comando, ehehe.
Sugestão: em um próximo artigo procure aprofundar um pouco mais, utilizando váriáveis do sistema, comandos como while, for, entre outros. Shell Script tem muita coisa, muita mesmo.
[12] Comentário enviado por Hernando em 07/06/2005 - 10:10h
Parabéns... ótimo artigo... Porque tu não faz agora um onde a partição e o ponto de montagem são variaveis pré definidas e acionadas atraves de um comando simples tipo:
1) Partição01
2) Partição02
3) Partição...
e consequentemente
1) PontoMNT01
1) PontoMNT02
1) PontoMNT...
Eu já o tenho aqui pois acho muito util na hora de montar pontos de rede em outra plataforma onde tenho que ficar digitando milhões de coisa... Só não postei para dar a dica pra tu dar continuação ao teu artigo
[13] Comentário enviado por mailws em 11/11/2005 - 20:09h
Parabéns. Agora quero saber, se tem como, fazer um link para o arquivo que agente acabou de construir, sem precisar toda vez que for executar, digitar "./arquivo".
[17] Comentário enviado por antoniojbs em 05/09/2006 - 12:59h
Parabéns pablocarlos seu artigos esta me ajudando muito,um artigo bem elaborado para quem esta començando e não sabe nada de shel como eu,mas estou fazendo muitas buscas e lendo muito a respeito da linguagem espero que com a ajuda d pessoas como vc eu consiga me tornar pelo menos razoavel......
[26] Comentário enviado por piiruck@ em 27/04/2010 - 12:13h
Bom Eu quero saber como eu executo o shells aonde eu execute não entendi essa parte qual programa ultilizo aonde escrevo os comandos para exectar me ajuda ae Vlw...