Começando

Como você já deve saber, um shell script é um arquivo em formato texto puro que contém comandos/instruções para serem executados em uma determinada shell. O que vou tentar passar neste texto é como fazer shell script para o Bourne-Again Shell, ou bash. Grande parte do conteúdo desse texto pode ser usado em outros shells disponíveis no mundo UNIX/Linux, mas o foco do texto é o bash. Esta é uma linguagem interpretada (você não precisa compilar para ter o executável) e o bash é o interpretador.

Veja um exemplo de script:

#!/bin/bash
# primeiroexemplo.sh

echo 'Alo mamãe!'
echo
echo 'Agora executarei um simples "ls -l", veja: '
echo
ls -l

Para que se possa executar um shell script é necessário permissão de execução (mais sobre permissões em http://meleu.github.io/txts/permissoes.txt). Para que somente você (dono do arquivo) tenha permissão de execução para o primeiroexemplo.sh você faz:

chmod u+x primeiroexemplo.sh

Agora você pode executar o script da seguinte forma:

./primeiroexemplo.sh

Veja outro exemplo de apenas um comando (se não entender não tem problema, em breve tudo ficará mais claro):

#!/bin/bash
# procurasuid.sh
# script para procurar arquivos suid que pertençam a determinado usuário
find / -user $1 -perm -4000 2> /dev/null

Agora vamos a uma rápida explicação sobre o código...

  • Na primeira linha nós dizemos qual será o nosso intrepretador de comandos (o shell). Você deve começar a linha com um #! (conhecido como sha-bang) e depois o caminho inteiro para o bash.
  • Nas segunda e terceira linhas são usados comentários, todo comentário começa com uma cerquilha # e vai até o final da linha;
  • A última linha que é realmente o comando, o $1 significa o primeiro parâmetro dado na linha de comando (será falado mais sobre isso daqui a pouco), por exemplo:
./procurasuid.sh level5

irá procurar por todos os arquivos suid que pertençam ao usuário level5. Esse shell script é útil nos wargames (veja sobre isso em Referências).

De vez em quando é bom observar o que o script está fazendo. Para isso você pode usar alguns parâmetros junto com o shell para executar seu script. Veja:

$ bash -x src/primeiroexemplo.sh
+ echo 'Alo mamãe!'
Alo mamãe!
+ echo

+ echo 'Agora executarei um simples "ls -l", veja: '
Agora executarei um simples "ls -l", veja:
+ echo

+ ls -l
total 12
drwxr-xr-x 5 meleu users 4096 Aug 18 15:28 GNUstep
drwxr-xr-x 2 meleu users 4096 Aug 19 23:11 progs
drwxr-xr-x 2 meleu users 4096 Aug 19 22:57 txts

O parâmetro -x faz com que seja exibido o comando e depois a saída do comando.

Outros parâmetros interessantes para "debugar" o script são:

  • -n: não executa os comandos, apenas verifica erros de sintaxe (noexec);
  • -v: mostra o script e depois executa-o (verbose);

Outra coisa que devemos saber é que quando um shell script é executado ele usa outra instância do shell, e não a instância atual. É importante termos isso em mente quando formos usar variáveis.

Por falar em variáveis, o próximo capítulo trata exatamente disso...

Capítulo 02: Variáveis e Parâmetros →

results matching ""

    No results matching ""