| Bellacosa Mainframe e o shell scripting |
☕ Um Café no Bellacosa Mainframe
Shell Scripting
O Que Todo Programador COBOL Padawan Precisa Saber Sobre a Linguagem que Automatiza o Mundo Linux, DevOps, Cloud e Infraestrutura Moderna
"Você não está apenas aprendendo Shell Script. Está descobrindo a linguagem que faz no Linux aquilo que o JCL faz no Mainframe: coordenar, automatizar e colocar toda a infraestrutura para trabalhar em perfeita harmonia."
Introdução
Existe um momento na carreira de praticamente todo profissional de tecnologia em que ele percebe que digitar dezenas de comandos repetidamente não faz mais sentido.
Criar usuários.
Mover arquivos.
Executar backups.
Monitorar logs.
Subir aplicações.
Executar testes.
Parar servidores.
Gerar relatórios.
Se tudo isso pode ser automatizado, por que continuar fazendo manualmente?
Foi exatamente essa pergunta que ajudou a moldar um dos conceitos mais elegantes da história da computação: o Shell Script.
Hoje, praticamente toda infraestrutura Linux do planeta — desde pequenos servidores domésticos até supercomputadores, clusters Kubernetes, ambientes IBM LinuxONE, IBM Z, AWS, Azure e Google Cloud — depende diariamente de milhares de Shell Scripts.
Se você é um Programador COBOL Padawan, provavelmente já domina conceitos como JCL, Return Codes (RC), Jobs Batch, PROCs, Schedulers, datasets e automação no z/OS.
A boa notícia é que Shell Script não é um universo completamente novo.
Na verdade, diversos conceitos já fazem parte do seu dia a dia.
A diferença é que agora eles vivem no mundo Linux.
Pegue sua caneca de café.
Hoje vamos entender por que Shell Script continua sendo uma das habilidades mais valiosas da computação moderna.
A Origem do Shell
Para entender Shell Script precisamos voltar aproximadamente cinquenta anos.
Em 1969, Ken Thompson iniciou o desenvolvimento do UNIX nos laboratórios Bell Labs.
O sistema operacional precisava de uma interface simples para executar comandos.
Nascia então o primeiro Shell.
O Shell era apenas um interpretador.
Ele recebia comandos digitados pelo usuário.
Interpretava.
Chamava funções do Kernel.
Mostrava os resultados.
Naquela época ninguém imaginava que alguns anos depois aqueles comandos poderiam ser gravados em arquivos texto e executados automaticamente.
Assim surgiram os primeiros scripts.
O Shell Não é o Linux
Esse é um dos maiores equívocos dos iniciantes.
Muitos acreditam que Shell e Linux sejam a mesma coisa.
Não são.
A arquitetura simplificada funciona assim:
Usuário
↓
Shell
↓
Kernel Linux
↓
Hardware
O Kernel conversa com discos, memória, processadores e dispositivos.
O Shell conversa com o usuário.
Ele traduz comandos humanos em chamadas para o Kernel.
O Nascimento do Bourne Shell
Em 1977, Stephen Bourne desenvolveu o Bourne Shell (sh).
Foi uma revolução.
Pela primeira vez era possível escrever programas inteiros utilizando comandos do próprio sistema operacional.
A linguagem era simples.
Mas incrivelmente poderosa.
Até hoje praticamente todos os Shells modernos descendem dele.
O Surgimento do Bash
Em 1989, Brian Fox, no projeto GNU, lançou o Bash (Bourne Again Shell).
O nome é um trocadilho com "Born Again".
Ele foi desenvolvido para substituir o Bourne Shell tradicional, mantendo compatibilidade e adicionando diversos recursos modernos.
O Bash tornou-se rapidamente o padrão das distribuições GNU/Linux.
Hoje ele está presente em praticamente todas as distribuições Linux e em diversos sistemas UNIX.
Linha do Tempo dos Principais Shells
| Ano | Shell | Criador |
|---|---|---|
| 1971 | Thompson Shell | Ken Thompson |
| 1977 | Bourne Shell (sh) | Stephen Bourne |
| 1983 | Korn Shell (ksh) | David Korn |
| 1989 | Bash | Brian Fox (GNU) |
| 1990 | Z Shell (zsh) | Paul Falstad |
| 2005 | Fish Shell | Axel Liljencrantz |
Cada um possui características específicas, mas Bash continua sendo a principal referência para automação.
Por que o Shell Existe?
Imagine administrar mil servidores.
Sem Shell Script seria necessário executar centenas de comandos manualmente em cada máquina.
Com um único script você consegue:
atualizar aplicações;
reiniciar serviços;
copiar arquivos;
verificar espaço em disco;
consultar APIs;
monitorar processos;
enviar alertas;
automatizar backups.
É exatamente por isso que o Shell é considerado uma das ferramentas fundamentais de DevOps.
A Filosofia UNIX
Existe um princípio que influenciou praticamente toda a engenharia de software moderna:
Faça uma coisa. Faça bem feita.
Em vez de criar programas gigantes, o UNIX passou a oferecer dezenas de pequenas ferramentas especializadas.
Cada comando resolve apenas um problema.
Por exemplo:
grepprocura padrões.sortordena dados.uniqelimina duplicatas.cutextrai colunas.sedtransforma textos.awkprocessa dados estruturados.wcconta linhas, palavras e caracteres.
O verdadeiro poder surge quando essas ferramentas são combinadas por meio de pipes.
O Poder dos Pipes
O caractere | é muito mais do que um simples símbolo.
Ele conecta a saída de um comando diretamente à entrada do próximo.
Imagine uma linha de montagem industrial:
Matéria-prima
↓
Corte
↓
Pintura
↓
Montagem
↓
Embalagem
No Linux:
cat
↓
grep
↓
awk
↓
sort
↓
uniq
↓
wc
Cada comando realiza uma tarefa específica e entrega o resultado ao próximo.
Esse modelo permitiu construir sistemas extremamente eficientes décadas antes da popularização dos microsserviços.
Shell Script e o Mundo Mainframe
Esta é provavelmente a parte mais interessante para um Programador COBOL Padawan.
Observe a comparação:
| Mainframe | Linux |
|---|---|
| JCL | Shell Script |
| PROC | Função |
| PARM | $1, $2 |
| Return Code | Exit Status |
| Dataset | Arquivo |
| Scheduler | Cron |
| SYSIN | stdin |
| SYSOUT | stdout |
| SYSPRINT | stdout |
| COND | if |
| IF/THEN JCL | if/then |
Percebe a semelhança?
Os conceitos mudam de nome, mas a lógica permanece.
Quem domina JCL normalmente aprende Shell Script muito mais rapidamente.
Shebang
Todo script profissional começa com algo parecido com:
#!/usr/bin/env bash
Esse cabeçalho informa qual interpretador será utilizado.
Sem ele, o sistema pode tentar executar o script utilizando outro Shell, causando incompatibilidades.
É equivalente a informar explicitamente qual ambiente executará o programa.
Variáveis
No Shell praticamente tudo começa com variáveis.
NOME="Bellacosa"
IDADE=52
Elas armazenam dados temporários utilizados durante a execução.
O acesso ocorre por meio do caractere $.
echo "$NOME"
Diferentemente de linguagens como Java ou COBOL, não há necessidade de declarar tipos de dados.
Tudo inicialmente é tratado como texto.
Variáveis de Ambiente
Algumas variáveis já existem antes mesmo do script iniciar.
Entre as mais importantes estão:
HOME
PATH
USER
SHELL
PWD
HOSTNAME
LANG
TERM
Essas informações descrevem o ambiente onde o processo está sendo executado.
Variáveis Especiais
O Shell também cria automaticamente variáveis especiais:
$0→ nome do script.$1→ primeiro argumento.$2→ segundo argumento.$#→ quantidade de argumentos.$@→ todos os argumentos preservando cada um individualmente.$*→ todos os argumentos como uma única expansão.$$→ PID do processo atual.$!→ PID do último processo em background.$?→ código de retorno do último comando.
Essa coleção de variáveis torna os scripts altamente reutilizáveis.
Condições
Assim como em COBOL existe IF, o Shell possui:
if
then
else
fi
É possível tomar decisões baseadas em:
existência de arquivos;
valores numéricos;
comparação de textos;
permissões;
retorno de comandos.
Loops
O Shell oferece diferentes formas de repetição.
For
Ideal quando conhecemos previamente os elementos.
for arquivo in *.txt
do
echo "$arquivo"
done
While
Executa enquanto uma condição permanece verdadeira.
Until
Executa até que uma condição seja satisfeita.
Funções
Scripts profissionais utilizam funções para evitar repetição.
backup() {
echo "Executando backup..."
}
log() {
echo "$(date) $1"
}
Isso melhora organização, manutenção e reutilização.
Operadores de Arquivos
Antes de manipular arquivos, normalmente verificamos seu estado.
Exemplos:
-f→ arquivo regular.-d→ diretório.-r→ leitura.-w→ escrita.-x→ executável.-e→ existe.-s→ não vazio.-L→ link simbólico.
Esses testes evitam erros durante a execução.
Redirecionamento
Todo processo Linux trabalha com três fluxos principais:
| Stream | Número |
|---|---|
| stdin | 0 |
| stdout | 1 |
| stderr | 2 |
Com isso podemos controlar exatamente para onde cada informação será enviada.
Exemplos:
>
Sobrescreve um arquivo.
>>
Acrescenta conteúdo.
2>
Redireciona apenas mensagens de erro.
&
Permite combinar fluxos.
O Poder do grep
O grep talvez seja o comando mais famoso do Linux.
Seu nome vem de Global Regular Expression Print.
Ele pesquisa padrões em arquivos.
grep ERROR servidor.log
Combinado com expressões regulares torna-se uma poderosa ferramenta de análise de logs.
AWK
Apesar de parecer apenas mais um comando, AWK é uma linguagem completa.
Ela trabalha naturalmente com colunas.
Por isso é muito utilizada em:
arquivos CSV;
relatórios;
processamento de logs;
extração de métricas.
Poucas ferramentas conseguem manipular dados textuais com tanta eficiência.
sed
O Stream Editor permite modificar arquivos sem abrir um editor.
Trocar:
IBM
por
Red Hat
é uma simples linha de comando.
Por isso o sed aparece frequentemente em pipelines de automação.
xargs
Outro comando extremamente poderoso.
Ele transforma a saída de um programa em argumentos para outro.
É muito utilizado em conjunto com find.
Exit Status
No Mainframe conhecemos os Return Codes.
No Linux existe exatamente o mesmo conceito.
Após qualquer comando podemos consultar:
echo $?
Se retornar zero:
Sucesso.
Qualquer outro valor indica algum tipo de erro.
Scripts profissionais nunca ignoram Exit Status.
DevOps e Shell Script
Hoje praticamente toda ferramenta DevOps depende, em algum momento, de Shell Script.
Exemplos:
Docker.
Kubernetes.
GitHub Actions.
GitLab CI.
Jenkins.
Ansible.
Terraform.
OpenShift.
IBM Cloud.
AWS.
Azure.
Google Cloud.
Mesmo quando utilizamos ferramentas sofisticadas, nos bastidores normalmente existem Shell Scripts coordenando processos.
Shell Script no IBM Z
Muitos profissionais acreditam que Shell Script pertence apenas ao Linux.
Não é verdade.
O IBM z/OS UNIX System Services (USS) oferece um ambiente POSIX compatível com Shell.
Isso significa que é possível executar scripts Bash ou Korn Shell diretamente no IBM Z.
Essa integração permite:
automatizar tarefas administrativas;
integrar aplicações COBOL com ambientes UNIX;
manipular arquivos no USS;
chamar programas tradicionais;
trabalhar com OpenSSH, Git, Python e Java.
É um dos pilares da modernização do ecossistema IBM Z.
Curiosidades
O Bash possui milhares de comandos internos (builtins).
O Shell consegue chamar programas escritos em C, COBOL, Java, Python e diversas outras linguagens.
Grande parte dos scripts de inicialização do Linux são Shell Scripts.
O Shell pode controlar processos distribuídos por SSH em centenas de servidores simultaneamente.
Muitos instaladores de software corporativo são escritos em Shell Script.
Easter Eggs
Algumas curiosidades divertidas:
O nome Bash significa Bourne Again Shell, um trocadilho com o Bourne Shell.
O comando
:é um comando válido que não faz absolutamente nada, retornando sucesso (0).O comando
truesempre retorna sucesso.O comando
falsesempre retorna erro.É possível criar scripts de apenas uma linha capazes de automatizar tarefas extremamente complexas.
Muitos administradores brincam dizendo que "um bom Shell Script substitui centenas de cliques".
Releases e Evolução
Ao longo das décadas, o Bash evoluiu significativamente:
suporte aprimorado a arrays;
expansão de parâmetros;
autocompletar inteligente;
histórico avançado;
melhorias em segurança;
compatibilidade POSIX;
otimizações de desempenho.
Novas versões continuam sendo lançadas e mantidas pela comunidade GNU, garantindo correções de bugs, melhorias de segurança e novos recursos.
Por que Aprender Shell Script em 2026?
Porque praticamente toda infraestrutura moderna depende dele.
Empresas utilizam Shell Script para:
automação de Data Centers;
CI/CD;
monitoramento;
backup;
segurança;
observabilidade;
containers;
Kubernetes;
administração Linux;
IBM Z USS;
LinuxONE;
Cloud Computing;
IA e MLOps;
automação de pipelines de dados.
Mesmo linguagens modernas como Python e Go frequentemente executam Shell Scripts durante processos de instalação, build ou deploy.
Compatibilidade com o Mundo Mainframe
Para quem vem do COBOL, aprender Shell Script oferece diversas vantagens:
compreensão rápida da lógica de automação;
facilidade para trabalhar com z/OS UNIX System Services;
integração com Git, DevOps e CI/CD;
modernização de aplicações IBM Z;
comunicação entre ambientes Linux e Mainframe.
Em projetos de transformação digital é comum encontrar pipelines que envolvem simultaneamente COBOL, JCL, Git, Jenkins, Ansible e Shell Script.
Conclusão
Shell Script é muito mais do que uma linguagem de comandos. Ele representa uma filosofia de engenharia que atravessa mais de cinco décadas de evolução da computação. Desde os primeiros laboratórios da Bell Labs até os atuais ambientes de nuvem híbrida, inteligência artificial, IBM Z, LinuxONE e plataformas de automação em escala global, o Shell continua sendo uma das ferramentas mais eficientes para transformar tarefas repetitivas em processos confiáveis e reproduzíveis.
Para um Programador COBOL Padawan, essa jornada é especialmente natural. Conceitos como controle de fluxo, códigos de retorno, automação batch, parametrização e orquestração já fazem parte da experiência adquirida no Mainframe. O Shell Script amplia esse repertório, conectando o universo IBM Z ao ecossistema Linux, DevOps, containers, APIs, pipelines de integração contínua e infraestrutura como código.
Aprender Shell Script hoje não significa apenas dominar comandos como grep, awk, sed, find ou xargs. Significa adquirir a capacidade de construir soluções reutilizáveis, integrar tecnologias distintas, administrar ambientes complexos e participar ativamente da modernização das plataformas corporativas. Assim como o COBOL continua movimentando bilhões de transações diariamente, o Shell Script permanece como uma das engrenagens invisíveis que sustentam servidores, aplicações, clusters e serviços em praticamente todos os grandes ambientes computacionais do mundo.
No fim das contas, o Shell Script ensina uma lição que vale para toda a carreira em tecnologia: automatize o repetitivo, simplifique o complexo e deixe que os computadores façam aquilo para o qual foram criados. Esse é o espírito do UNIX, do Linux, do DevOps e, acima de tudo, da engenharia de software moderna.
Sem comentários:
Enviar um comentário