Bash, abreviação de "Bourne Again SHell", é um shell Unix e uma linguagem de comando que serve tanto como um interpretador de comandos para o sistema operacional quanto como uma linguagem de programação para escrever scripts de shell. Criado como um substituto para o Bourne Shell (sh), o Bash incorpora recursos do Korn Shell (ksh) e do C Shell (csh), tornando-se uma ferramenta poderosa e versátil para tarefas de linha de comando e scripting. O Bash é amplamente utilizado em várias distribuições Linux, macOS e outros sistemas operacionais semelhantes ao Unix, e serve como o shell padrão em muitos sistemas.
O Bash foi desenvolvido por Brian Fox para o Projeto GNU em 1987 como um substituto de software livre para o Bourne Shell (sh). O objetivo era fornecer aos usuários um shell mais rico em recursos, mantendo a compatibilidade com scripts sh existentes. Ao longo dos anos, o Bash evoluiu através das contribuições de numerosos desenvolvedores, e seu crescimento foi impulsionado pela crescente popularidade do Linux e do software de código aberto.
Nos seus primeiros anos, o Bash rapidamente ganhou popularidade entre usuários e desenvolvedores devido à sua extensibilidade e ao rico conjunto de recursos que introduziu. Recursos-chave incluíam edição de linha de comando, controle de tarefas e capacidades de scripting aprimoradas. Atualmente, o Bash é mantido ativamente, com a versão 5.2 lançada em setembro de 2021. Continua a ser uma ferramenta padrão para administradores de sistema, desenvolvedores e qualquer pessoa que trabalhe com sistemas operacionais semelhantes ao Unix.
O Bash se inspirou em vários outros shells e linguagens de programação. A sintaxe e as estruturas de comando do Korn Shell (ksh) e do C Shell (csh) influenciaram fortemente seu design. Além disso, seus recursos de linguagem de comando facilitam a integração com linguagens de programação como Python e Ruby, frequentemente utilizadas em scripts para funcionalidade aprimorada.
O Bash é amplamente utilizado para scripting e automação de tarefas do sistema, gerenciamento de instalações de software, execução de tarefas de administração do sistema e manipulação de trabalhos de processamento de dados. Está integrado nos fluxos de trabalho de desenvolvimento de muitas aplicações de software e pipelines de CI/CD, bem como em ambientes de nuvem e práticas de DevOps.
O Bash suporta a atribuição de variáveis sem uma declaração de tipo anterior. Por exemplo:
name="World"
echo "Hello, $name!"
O Bash inclui declarações condicionais como if-else para controle de fluxo:
if [ "$name" == "World" ]; then
echo "Hello, World!"
else
echo "Hello, Stranger!"
fi
O Bash permite laços como for
, while
e until
. Aqui está um exemplo de um laço for
:
for i in {1..5}; do
echo "Iteração $i"
done
Você pode definir e invocar funções no Bash:
greet() {
echo "Hello, $1!"
}
greet "User"
O Bash suporta substituição de comando usando crases ou $(...)
:
today=$(date)
echo "Hoje é $today"
O Bash suporta arrays indexados unidimensionais:
fruits=("maçã" "banana" "cereja")
echo "Primeira fruta: ${fruits[0]}"
O Bash fornece recursos de manipulação de strings, como extração de substrings:
text="Hello World"
echo ${text:6:5} # Saída "World"
O Bash permite operações aritméticas básicas usando $((...))
:
result=$((5 + 3))
echo "O resultado é $result"
Você pode redirecionar entrada e saída no Bash:
echo "Hello" > output.txt
O Bash permite o uso de here documents para entrada de várias linhas, facilitando a passagem de strings de várias linhas para comandos:
cat << EOF
Esta é uma string de várias linhas.
EOF
Embora scripts Bash possam ser editados em qualquer editor de texto, vários ambientes de desenvolvimento integrados (IDEs) oferecem suporte ao Bash. Estes incluem Visual Studio Code, Atom, Sublime Text e Eclipse com plugins.
Scripts Bash são interpretados em vez de compilados, com o próprio interpretador Bash executando os scripts. O comando para executar um script é:
bash script.sh
Para construir projetos, é comum criar um Makefile usando make
, ou usar scripts Bash para automatizar tarefas como instalação ou implantação.
O Bash é empregado em vários domínios, incluindo:
O Bash encontra suas comparações mais próximas em linguagens como Python e Perl para scripting, enquanto pode ser comparado a linguagens de propósito mais geral como C ou Java em casos de uso específicos.
O Bash se destaca em interações de linha de comando e tarefas do sistema, enquanto o Python é mais versátil para tarefas de programação complexas, processamento de dados e desenvolvimento de aplicações. O Python oferece uma rica biblioteca padrão, o que o torna adequado para aplicações maiores.
O Perl é frequentemente usado para processamento de texto e tarefas de administração de sistema; no entanto, possui uma sintaxe mais complexa em comparação com o Bash. O Bash é focado na execução de comandos, enquanto o Perl é mais centrado na programação.
O JavaScript é predominantemente uma linguagem web do lado do cliente, enquanto o Bash serve como um interpretador de comandos e processador de scripts para operações de sistema. O Bash não é adequado para desenvolvimento web, enquanto o JavaScript se destaca nesse domínio.
Ao traduzir scripts Bash para outras linguagens, certifique-se de validar os equivalentes dos comandos e verificar dependências em recursos de nível de sistema. Ferramentas como sh2py
existem para converter scripts de shell em Python, mas as diferenças semânticas devem ser gerenciadas com cuidado.
Existem algumas ferramentas disponíveis para tradução de código-fonte, incluindo: