Ir para o conteúdo

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 -> Listaria relatorio_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 comando touch "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 ou sed. Você precisa saber para que servem: cut para colunas simples, sort para ordenar, sed para substituições simples, e awk 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:

  1. cat /var/log/nginx/access.log: Pega o ingrediente bruto (o arquivo de log) e o joga na esteira.

  2. | awk '{print $1}': O processador de alimentos (awk) pega cada linha e extrai apenas a primeira coluna ($1), que é o endereço IP.

  3. | sort: O organizador (sort) coloca todos os IPs em ordem alfabética. Isso é essencial para o próximo passo.

  4. | uniq -c: O removedor de duplicatas (uniq) agrupa os IPs idênticos e, com a opção -c, conta quantas vezes cada um apareceu.

  5. | 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.

  6. | head -n 10: O comando head mostra apenas as 10 primeiras linhas do resultado, nos dando o nosso "Top 10".