Este post explora conceitos básicos necessários para criar seus primeiros scripts no Bourne-Again SHell (também conhecido como BASH).
Trata-se de um padrão bem estabelecido da indústria, presente em todas as grandes distribuições GNU/Linux, em vários sistemas operacionais UNIX-like e, recentemente, adotado no Windows.
Antes de nos debruçarmos sobre como criar variáveis, funções, fazer operações aritméticas e estruturas de controle, vamos ver alguns conceitos preliminares para rodar scripts em Bash.
Qual shell está em uso no meu sistema?
Abra um terminal.
Se você pretende dar algum comando, é a shell quem irá interpretar e executar as suas instruções.
O Bash é apenas uma das várias opções possíveis.
É padrão, mas as distribuições Linux oferecem outras opções.
Use o comando apropos para descobrir mais opções neste sentido:
apropos shell
Para saber qual a shell em uso no momento, use o comando echo:
echo $SHELL
/bin/bash
Tecnicamente, o comando exibiu a localização do aplicativo da shell e não “o nome” dela.
Isto quer dizer que é possível usar outra shell (como a csh, por exemplo) ou, ainda instalar uma nova, que seja mais adequada para você.
Caso você não esteja usando o Bash, basta rodar ele, da linha de comando:
bash
Chega o momento em que você precisa aprender a criar um ou outro script.
O principal objetivo é automatizar tarefas repetitivas.
Introdução ao shell scripting
Vamos começar com o tradicional hello world!
Abra o seu editor favorito. Sugiro o nano ou o vim — mas você pode usar qualquer outro com que se sinta mais confortável.
O importante é manter o terminal aberto para executar os scripts criados.
Crie um arquivo chamado hello.sh, com o seguinte conteúdo:
echo "Hello world!"
grave e saia do editor.
Agora execute as instruções contidas no arquivo hello.sh:
bash hello.sh
Hello world!
O bash é um interpretador e nós o usamos para ler e rodar as instruções em hello.sh.
Contudo, é comum indicar explicitamente o interpretador que queremos usar, no início do arquivo de script, assim:
#!/bin/bash echo "Hello world!"
Esta é uma boa prática de programação, que vale a pena observar sempre.
Como curiosidade, esta primeira linha é tradicionalmente chamada (em inglês) de “shebang line” ou apenas “shebang” (#!).
Se tivéssemos um script com código na linguagem Python, a shebang seria
#!/usr/bin/python
Use o comando whereis para localizar o interpretador desejado:
whereis perl
perl: /usr/bin/perl5.24-x86_64-linux-gnu /usr/bin/perl
/etc/perl /usr/share/perl /usr/share/man/man1/perl.1.gz
Como tornar um script executável
Ao tentar executar o nosso script, do jeito que ele se encontra, no terminal, sem usar o bash, como interpretador, vai retornar um erro:
./hello.sh
bash: ./hello.sh: Permissão negada
O sistema sabe que deve interpretar as instruções através do bash… mas não há permissões para isto.
Este é um dos motivos pelos quais se afirma que o Linux/UNIX é ambiente hostil para vírus, enquanto arquivos de instruções autoexecutáveis.
Para que um arquivo seja executável, ele precisa ter permissão para isso.
O comando chmod (change mode) é o que pode realizar esta tarefa:
chmod +x hello.sh
./hello.sh
Hello world!
Leia mais sobre por que precisamos usar ./ no início do nome dos scripts para executá-los.
A extensão do nome do arquivo de script
Diferente do ambiente DOS/Windows, no Linux não é necessário usar extensões, para indicar ao sistema qual é o tipo de arquivo.
É opcional e é útil para sabermos sobre o tipo, contudo.
Você pode, se quiser, alterar o nome do seu arquivo de script para apenas ‘hello’.
Pessoalmente, prefiro usar os nomes dos meus arquivos de script sempre com uma extensão indicadora da linguagem de interpretação de cada um.
Este é o básico para começar a escrever scripts.
Daqui para frente, seu arquivo de script só precisa ser preenchido com comandos úteis.