Bem-vindos ao meu tutorial de shell scripting em linux/unix. O shell scripting é uma forma de executar comandos ou acções através de formas de repetição e de ciclos.
Para esse modo, irei abordar alguns comandos mas, não todos, porque isto é um mundo.
Os scripts irão ser testados no Sabayon 4.2 e no BSD, mach Kernel, isto é, Mac OS X. Podem testá-los nas outras versões de posix, para que se saiba que são executáveis.
Assim, irei apresentar o tutorial. Obrigado.
Para sabermos, como é que funcionam os comando linux/unix podemos escrever este comando:
man nome_do_comando;
Exemplo: man ls.
O man ls irá listar todos os argumentos possíveis do ls. O que é o ls? O ls é o comando para listar as directorias.
Ls: Este comando serve para listar as directorias.
Exemplo: ls /home/user
Assim, o comando lista tudo mas, não mostra os escondidos nem as permissões. Só mostra o que é visível.
Ls -lisa:
Exemplo: ls -lisa /home/user
Desta forma, o ls lista todos os ficheiros daquela directoria com os escondidos e com as devidas permissões.
Mkdir: O comando makedir cria uma pasta ou directoria no local pretendido.
Exemplo: mkdir /home/user/scripts
Com este comando, o utilizador cria na directoria user uma pasta que se chama scripts.
Rmdir: O comando rmdir remove ou apaga como quiserem chamar a pasta pretendida.
Exemplo: rmdir /home/user/scripts
Assim, o utilizador remove a directoria scripts, como anteriormente referido.
Cd: o cd faz com que seja mudado a directoria.
Exemplo: cd /home/user/scripts
Assim, o utilizador está a deslocar-se para a pasta scripts.
Cd ..:
Exemplo: cd ..
Assim, desce um nível da directoria actual.
Who: faz com que sejam apresentados os utilizadores.
Exemplo: who
vi: isto é um comando que se direcciona para um editor de texto que trabalha na consola directamente.
Exemplo: vi nome_do_ficheiro.extensão ou sem extensão.
Chmod: este comando modifica os modos de utilização dos ficheiros.
Exemplos: chmod +x nome_do_ficheiro.
Assim, está a tornar o ficheiro como executável.
Chmod 777 nome_do_ficheiro
com o número 777 está a dar permisssões ao owner, others e groups. É mau porque, assim todos têm permissões de acesso ao ficheiro.
Os scripts quando são criados temos que pôr logo, na primeira linha este comentário:
#!/bin/sh
Com este comentário, o interpretador de shell irá interpretá-lo como um script dessa mesma shell.
O comentário faz-se desta forma: #
variável é da seguinte maneira: variável=”valor”
a escrita para o monitor é: echo ”mensagem que queremos apresentar”
ler do teclado: read variável
Há mais tipos de comandos, mas irei abordá-los através dos scripts.
Agora começarei a explicar o funcionamento dos scripts em shell.
Primeiro escrevemos, pode ser no editor de texto do gnome, o seguinte comentário:
#!/bin/sh
Dentro do script podemos fazer administração e automatização dos scripts e funcionalidades pretendidas.
Os ficheiros podem ser escritos, sem extensão ou com extensão. Com extensão podem ser bin,sh.
Exemplo de um script simples:
#!/bin/sh
echo “ola mundo”
Gravamos com a extensão .sh ou sem extensão e com o nome hello. Porque iremos fazer o seguinte comando e para todos eles:
chmod +x hello.sh ou chmod +x hello
Agora, iremos executá-lo da seguinte maneira:
./hello.sh ou ./hello
E a mensagem que é apresentada é ola mundo.
Outra forma de o fazer é criar uma variável com o valor “ola mundo” e depois fazer um echo da variável.
Exemplo:
#!/bin/sh
#variavel
ola=”ola mundo”
echo $ola
O cifrão é para indicar que é uma variável.
E assim, temos outra forma de o fazer com variáveis.
Vamos falar de formas de selecção. Existe o if e o case.
O if é uma forma de selecção para escolher várias opções. E o case também é uma forma de selecção mas com várias opções e com uma opção default, digamos assim.
Exemplo de uma estrutura if:
#!/bin/sh
if test -e $1;
then
echo “o ficheiro existe”
else
echo “o ficheiro não existe”
fi
Salvar o ficheiro com o nome ficheiro_existe. Fazer o chmod +x ficheiro_existe. Executá-lo da seguinte maneira: ./ficheiro_existe /home/user/nome_do_ficheiro
Isto é um exemplo, e é aplicável para outras directorias e ficheiros de todo o sistema de ficheiros do linux/unix.
Irei, agora tratar o caso do case.
Exemplo;
#!/bin/sh
case “$variavel” in
- comandos;;
- comandos;;
- comandos;;
*) echo “opcao invalida”;;
esac
já explicarei o case, porque não consigo explicá-lo sem usar funções. Por isso, vou falar de funções.
A sintaxe de uma funcão é:
sair(){
exit 1
}
Assim, irei mostrar uma forma de case aplicável.
#!/bin/sh
# funcoes sair lista limpar e principal
sair(){
exit 1
}
lista(){
ls -lisa $1|more
}
limpar(){
clear
}
principal(){
echo -n “escolha uma das opcoes”
echo “1. lista”
echo “2. limpar o ecran”
echo “3. sair do programa”
read opcao
case $opcao in
1)lisa;;
- limpar;;
- sair;;
*) echo “opcao invalida”: exit 1;;
esac
}
#menu principal
principal
Há várias formas de ciclos. Eles são o while, do, for e o until. Cada um tem a sua forma de fazer interações ou ciclos.
Sintaxe do while:
while condicao
do
bloco de instrucoes;
done
exemplo prático de um while:
ver =”n”
while [$ver !=”y”]
do
read ver
echo “introduza uma opcao”
read opcao
echo “e esta a $opcao correcta (y/n)”
read ver
done
o until corre enquanto é verdade.
Sintaxe:
until condicao_verdadeira
do
bloco de instrucoes;
done
Exemplo também prático:
#!/bin/sh
until [-z $1]
do
ls -lisa $1|more
done
A sintaxe do for é:
for variavel [in lista]
do
bloco_de_instruções;
done
Exemplo de um for:
#!/bin/sh
#comeco do programa
for i in pedro,1,sara,luis;do
echo “a lista é: $i”
done
Espero que tenha sido produtivo para a vossa formação em scripting nos sistemas linux/unix.
Agora é convosco para as ideias de scripts. Irei falar de scripting gráfico, mas para isso tenho de estudar melhor a função Xdialog. Para esse fim, podem “googlar” acerca dessa matéria.
Vou introduzir mais comandos para que possam conhecer e ter o “bichinho” do scripting shell para a vossa função de administração.
Exemplos de comandos interessantes:
ping:
ping ip_do_destino
ping endereco_de_destino
man ping para visualizar os parâmetros
rm:
rm nome_do_ficheiro
man rm para visualizar os parâmetros
date:
date
date +”ola são %H e %M”
tail:
tail -n numero a visualizar nome_do_ficheiro
man tail para visualizar os parâmetros
more:
more nome_do_ficheiro
man more para visualizar os parâmetros
Podem também usar o pipe, isto é, agregar comandos, instruções numa linha só,
Exemplo:
ls -lisa directorio_de_destino|more
Espero que eu tenha esclarecido e tenha tirado algumas dúvidas que tenham. Espero também que haja mais tutoriais meus a explicar como este. Em breve irei escrever um tutorial a explicar como é que se usa o Xdialog.