O Canivete Suíço do Terminal: Dominando o Shell Bash
Até agora, aprendemos a usar comandos como "frases" isoladas. Agora, vamos aprender a construir "parágrafos" e "textos" completos. O Shell Bash não é apenas um intérprete de comandos; é um ambiente de programação poderoso.
Pense em você como um "Chef de Cozinha de Dados". Você recebe ingredientes brutos (arquivos de log, saídas de comandos) e usa um conjunto de ferramentas de precisão para fatiar, filtrar, ordenar e transformar esses dados no prato final que você deseja: um relatório, uma visão clara de um problema ou uma tarefa automatizada.
A Gramática Avançada do Chef
Para cozinhar como um mestre, você precisa dominar as ferramentas que conectam suas estações de trabalho.
A Esteira Rolante (|
- Pipe)
O Pipe é o conceito mais poderoso. Ele pega o resultado (saída) de um comando e o usa como o ingrediente (entrada) para o comando seguinte. É a sua esteira rolante na cozinha.
Curingas (Wildcards)
*
(asterisco): Representa qualquer sequência de caracteres.rm *.log
-> Apague todos os arquivos que terminam com.log
.
?
(interrogação): Representa um único caractere.ls relatorio_202?.txt
-> Listariarelatorio_2020.txt
,relatorio_2021.txt
, etc.
Aspas (" "
)
- Analogia: Uma "bandeja" para agrupar itens.
- A Dor que Resolve: Nomes de arquivos com espaços. O comando
touch meu arquivo.txt
criaria dois arquivos. O comandotouch "meu arquivo.txt"
cria um arquivo. As aspas transformam múltiplos argumentos em um só.
As Ferramentas de Preparo do Chef
cut
- O Fatiador de Precisão
- Analogia: Um "fatiador de frios" que corta o texto em colunas.
- A Dor que Resolve: "Eu tenho um arquivo CSV com
nome,email,cidade
, mas só quero ver a coluna dos emails." - Como Usar: Você precisa dizer a ele qual é o "separador" (
-d
) e qual "fatia" (-f
) você quer. Cenário Prático na AWS: Extrair apenas os nomes de usuário do arquivo de senhas do seu servidor EC2.
# O separador (-d) do arquivo /etc/passwd é ":" e queremos o primeiro campo (-f1) cut -d: -f1 /etc/passwd
sort
- O Organizador
- Analogia: A "prateleira que se organiza sozinha".
- A Dor que Resolve: "Eu tenho uma lista de IPs que acessaram meu site, mas eles estão fora de ordem e fica difícil analisar."
- Opções Essenciais:
-r
: Ordena em ordem reversa.-n
: Ordena numericamente (em vez de alfabeticamente).-u
: Mostra apenas os resultados únicos (remove duplicatas).
sed
- O Carimbo Mágico de "Procure e Substitua"
- Analogia: Um "carimbo de 'procure e substitua'" que opera em tempo real na sua esteira rolante.
- A Dor que Resolve: "Preciso substituir rapidamente todas as ocorrências da palavra 'desenvolvimento' por 'produção' em um arquivo de configuração, sem precisar abri-lo."
- Sintaxe Mágica:
sed 's/palavra_antiga/palavra_nova/g' nome_do_arquivo.txt
s
= substituir.g
= globalmente (em toda a linha).
awk
- O Processador de Alimentos
- Analogia: Um "processador de alimentos multifuncional". É uma ferramenta complexa que é, na verdade, uma linguagem de programação inteira para processar texto.
- A Dor que Resolve: Tarefas de formatação e análise complexas que vão além do
cut
. "Mostre-me apenas os nomes dos usuários (coluna 1) cujo ID de usuário (coluna 3) é maior que 1000." - Exemplo:
awk -F: '$3 > 1000 {print $1}' /etc/passwd
Dica de Certificação: Para a certificação Linux Essentials, você não precisa programar em
awk
oused
. Você precisa saber para que servem:cut
para colunas simples,sort
para ordenar,sed
para substituições simples, eawk
para processamento complexo baseado em colunas e condições.
A Receita Completa: Um Cenário Real na AWS
Vamos juntar todas as nossas ferramentas de Chef para resolver um problema real em uma instância EC2.
A Dor: "Meu site está lento. Quero descobrir quais são os 10 endereços IP que mais fizeram requisições ao meu servidor web hoje."
A Receita (O Comando Encadeado):
cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
O Passo a Passo do Chef:
-
cat /var/log/nginx/access.log:
Pega o ingrediente bruto (o arquivo de log) e o joga na esteira. -
| awk '{print $1}':
O processador de alimentos (awk) pega cada linha e extrai apenas a primeira coluna ($1), que é o endereço IP. -
| sort:
O organizador (sort) coloca todos os IPs em ordem alfabética. Isso é essencial para o próximo passo. -
| uniq -c:
O removedor de duplicatas (uniq) agrupa os IPs idênticos e, com a opção -c, conta quantas vezes cada um apareceu. -
| sort -nr:
O organizador entra em ação de novo, mas desta vez de forma numérica (-n) e reversa (-r), ordenando a lista pela contagem, do maior para o menor. -
| head -n 10:
O comando head mostra apenas as 10 primeiras linhas do resultado, nos dando o nosso "Top 10".