Conceitos essenciais: shell, comandos, pipes, JSON
Domine os fundamentos práticos que todo usuário de CLI precisa: anatomia de comandos, pipes e redirecionamento, processamento de JSON, navegação de arquivos, busca/filtragem e variáveis de ambiente.
📝 Anatomia de um comando
Todo comando no terminal segue uma estrutura consistente. Entender essa anatomia é como aprender a gramática de uma língua — uma vez que você domina a estrutura, qualquer comando novo se torna intuitivo.
Conceito Principal
A estrutura universal de um comando CLI:
# Estrutura geral:
comando [subcomando] [flags] [argumentos]
# Exemplo real:
git commit -m "mensagem do commit"
git=comando | commit=subcomando | -m=flag | "mensagem..."=argumento
Comando
O programa
Subcomando
A ação
Flags
Modificadores
Argumentos
Os alvos
Flags curtas usam um traço (-v) e podem ser combinadas (-la = -l -a). Flags longas usam dois traços (--verbose) e são mais legíveis. Use --help em qualquer comando para ver as opções disponíveis, e man comando para a documentação completa.
💡 Dica Prática
Quando encontrar um comando desconhecido, use tldr comando (instale via npm install -g tldr) para ver exemplos práticos resumidos. É muito mais rápido que ler a man page completa e suficiente para 90% dos casos.
🔗 Pipes e redirecionamento
Pipes e redirecionamento são o superpoder da CLI. Eles permitem conectar programas simples em pipelines complexas e controlar para onde vai a saída de cada comando.
Operadores Essenciais
|
Pipe
Conecta a saída (stdout) de um comando à entrada (stdin) do próximo.
ls -la | grep ".js" | wc -l
>
Redireciona (sobrescreve)
Envia a saída para um arquivo, substituindo o conteúdo existente.
echo "hello" > arquivo.txt
>>
Redireciona (append)
Adiciona a saída ao final de um arquivo, sem substituir.
echo "nova linha" >> log.txt
2>&1
Stderr para stdout
Redireciona mensagens de erro para a mesma saída do stdout. Útil para capturar tudo em logs.
npm build 2>&1 | tee build.log
📊 JSON no terminal
JSON é o formato que conecta humanos, APIs e agentes de IA. Dominar ferramentas de processamento de JSON no terminal é uma das habilidades mais valiosas na era dos agentes.
jq — O "sed para JSON"
jq é a ferramenta essencial para filtrar, transformar e extrair dados de JSON no terminal:
# Extrair nomes de todos os usuários
cat dados.json | jq '.users[].name'
# Filtrar usuários com mais de 30 anos
cat dados.json | jq '.users[] | select(.age > 30)'
# Contar itens em um array
cat dados.json | jq '.users | length'
# Transformar formato
cat dados.json | jq '.users[] | {nome: .name, email: .email}'
📊 Ferramentas JSON
💡 Dica Prática
Agentes de IA operam com JSON internamente — dominar jq é essencial para inspecionar, debugar e validar o que agentes estão fazendo. Quando um agente retorna dados estruturados, jq permite que você verifique rapidamente se o resultado está correto.
📁 Navegação e manipulação de arquivos
Navegar e manipular arquivos pelo terminal é mais rápido que qualquer file manager gráfico — especialmente quando combinado com ferramentas modernas que substituem os utilitários clássicos por versões mais rápidas e informativas.
📊 Comandos Essenciais
ls / eza
Listar arquivos. eza é o substituto moderno com ícones e cores.
cd / z
Navegar entre diretórios. z (zoxide) aprende seus caminhos frequentes.
mkdir / cp / mv / rm
Criar diretórios, copiar, mover e remover arquivos.
find / fd
Buscar arquivos. fd é mais rápido e com sintaxe mais simples.
tree
Visualizar estrutura de diretórios em árvore.
pwd
Mostrar o diretório atual (print working directory).
💡 Dica Prática
Use aliases para comandos frequentes. Adicione ao seu .zshrc: alias ll='eza -la --git', alias ..='cd ..'. Cada segundo economizado por comando se multiplica ao longo do dia.
🔍 Busca e filtragem
Encontrar informação rapidamente é talvez a habilidade mais prática no terminal. As ferramentas modernas de busca são ordens de magnitude mais rápidas que seus equivalentes gráficos.
Ferramentas de Busca
grep / ripgrep (rg)
Busca por padrão dentro de arquivos. Ripgrep é o substituto moderno: respeita .gitignore, busca recursiva por padrão, e é 10-100x mais rápido que grep em projetos grandes.
rg "TODO" --type js
awk e sed
Processamento de texto avançado. awk para extrair colunas e computar dados; sed para substituições em massa. Poderosos mas com curva de aprendizado.
awk '{print $1, $3}' dados.txt
fzf — Busca fuzzy interativa
Game changer para produtividade. Busca fuzzy em qualquer lista: arquivos, histórico de comandos, branches git, processos. Integra-se com qualquer comando.
vim $(fzf) # Abre arquivo buscado no vim
📊 Velocidade Comparativa
Em um projeto com 100.000 arquivos, ripgrep (rg) encontra resultados em milissegundos enquanto grep tradicional pode levar segundos. Para agentes que executam dezenas de buscas por sessão, essa diferença é transformadora.
⚙️ Variáveis e ambiente
Variáveis de ambiente são o mecanismo que o sistema operacional usa para configurar o comportamento de programas — incluindo agentes de IA. Entender como elas funcionam é fundamental para configurar qualquer ferramenta CLI.
Conceitos Essenciais
PATH
A variável mais importante: lista de diretórios onde o shell procura executáveis. Quando você digita git, o shell procura em cada diretório do PATH até encontrar o binário.
echo $PATH
export e .env
export CHAVE=valor define uma variável para a sessão atual e processos filhos. Arquivos .env armazenam variáveis por projeto (API keys, configurações).
.bashrc / .zshrc
Arquivo de configuração que roda toda vez que uma nova sessão de shell inicia. Aliases, variáveis, funções customizadas — tudo fica aqui para persistir entre sessões.
💡 Dica Prática
Use direnv para gerenciar variáveis de ambiente por diretório. Quando você entra em uma pasta de projeto, direnv carrega automaticamente as variáveis do .envrc local. Muito útil com agentes: cada projeto pode ter sua API key, modelo preferido e configurações específicas carregadas automaticamente.
⚠️ Alerta de Segurança
Nunca commite arquivos .env no Git — eles contêm API keys e segredos. Adicione .env ao seu .gitignore imediatamente. Use .env.example com valores fictícios para documentar as variáveis necessárias.
Resumo Final
Próximo módulo: Com os fundamentos dominados, vamos colocar a mão na massa: instalar seu primeiro agente, conversar com IA no terminal, e entender segurança básica.