CLI tools que aumentaram minha produtividade mais que qualquer IDE
1. Fundamentos: Por que CLI tools superam IDEs em produtividade
A filosofia Unix sempre defendeu um princípio simples: cada ferramenta deve fazer uma coisa e fazer bem. Enquanto IDEs modernas acumulam funcionalidades e consomem gigabytes de RAM, as ferramentas de linha de comando permanecem leves, rápidas e focadas. A verdadeira mágica está na composabilidade — a capacidade de encadear comandos simples para criar pipelines complexos que resolvem problemas específicos em segundos.
Um IDE te dá uma interface bonita, mas te prende a um fluxo pré-definido. O terminal te dá poder bruto, sem distrações. Quando você domina CLI tools, sua produtividade dispara porque você para de esperar — esperar o IDE carregar, esperar o indexador terminar, esperar a interface responder.
2. Navegação e manipulação de arquivos turbinada
Nada mata mais produtividade do que perder tempo procurando arquivos. Com fzf e fd, a busca se torna instantânea:
# Busca fuzzy de qualquer arquivo no projeto
fd -t f | fzf --preview 'bat --color=always {}'
# Abre o arquivo selecionado no editor
vim $(fd -t f | fzf)
Para buscar conteúdo dentro de arquivos, ripgrep é imbatível:
# Busca recursiva ignorando .gitignore, com contexto
rg -C 3 "função específica" --type py
# Busca em arquivos específicos com saída formatada
rg -l "TODO" --glob '*.{js,ts}' | xargs bat -l js
O bat com delta transforma a visualização de código:
# Visualização com numeração de linhas e git modifications
bat --paging=never --style=numbers,changes main.py
# Diff inteligente com syntax highlighting
git diff | delta
3. Processamento de texto e dados no terminal
Manipular JSON e YAML sem sair do terminal é um superpoder. Com jq:
# Extrair campos específicos de um JSON gigante
cat dados.json | jq '.usuarios[] | {nome, email, idade}'
# Filtrar e transformar em CSV
cat api_response.json | jq -r '.items[] | [.id, .name, .price] | @csv'
Para YAML, yq faz o mesmo trabalho:
# Extrair valor de chave aninhada
yq '.database.host' config.yaml
# Atualizar valor in-place
yq -i '.server.port = 8080' config.yaml
Quando você precisa processar logs ou CSVs, awk e sed são seus melhores amigos:
# Extrair colunas 2 e 5 de um CSV, filtrando linhas
awk -F',' '$3 > 100 {print $2, $5}' relatorio.csv
# Substituir padrões em múltiplos arquivos
sed -i 's/endpoint_antigo/endpoint_novo/g' src/**/*.js
Para análise tabular de arquivos enormes, xsv e visidata são revolucionários:
# Estatísticas rápidas de um CSV de 2GB
xsv stats dados.csv | xsv table
# Análise interativa com VisiData
vd dados.csv
4. Versionamento e Git sem GUI
lazygit é a ferramenta que mais me surpreendeu. Ela substitui qualquer cliente gráfico de Git:
# Iniciar interface TUI do Git
lazygit
Comandos que antes exigiam múltiplos cliques agora são feitos com teclas: space para stage, c para commit, p para push. Tudo sem tirar as mãos do teclado.
Para navegação de branches e PRs, tig e gh são essenciais:
# Navegar pelo histórico interativamente
tig
# Visualizar diff de um commit específico
tig show abc123
# Criar PR direto do terminal
gh pr create --title "Nova feature" --body "Descrição do PR"
O git-interactive-rebase-tool transforma rebase em algo visual e seguro:
# Configurar como editor de rebase
git config --global sequence.editor interactive-rebase-tool
# Agora ao fazer rebase interativo, abre uma interface TUI
git rebase -i HEAD~5
5. Gerenciamento de processos e monitoramento
htop e btm (bottom) oferecem monitoramento visual rico no terminal:
# Monitor interativo com árvore de processos
htop
# Alternativa moderna com gráficos e temperatura
btm
Para substitutos modernos de comandos clássicos:
# Listar processos com informações detalhadas
procs --sortd cpu
# Verificar espaço em disco formatado
duf
Automatizar reexecução de comandos ao salvar arquivos é um divisor de águas:
# Reexecutar testes quando qualquer arquivo .py mudar
find . -name '*.py' | entr -c pytest
# Usando watchexec para mais opções
watchexec -e py,js -- npm test
6. Automação e produtividade diária
tmux com sessões nomeadas substitui completamente as abas do IDE:
# Criar sessão nomeada
tmux new-session -s projeto-api -d
# Dividir painéis horizontal e verticalmente
tmux split-window -h
tmux split-window -v
# Reatachar sessão depois
tmux attach -t projeto-api
Para gerenciamento de tarefas minimalista, taskell é perfeito:
# Board Kanban no terminal
taskell tasks.md
# Formato do arquivo tasks.md
## To Do
- [ ] Implementar autenticação
- [ ] Corrigir bug no login
## Doing
- [ ] Refatorar API (João)
## Done
- [x] Configurar CI/CD
Testar APIs com httpie é muito mais produtivo que Postman:
# GET com headers customizados
http GET https://api.exemplo.com/users Authorization:"Bearer token123"
# POST com JSON inline
http POST https://api.exemplo.com/users nome="João" email="joao@email.com"
# Salvar resposta para processar depois
http GET https://api.exemplo.com/users > resposta.json
7. Integração e personalização do ecossistema
zoxide aprende seus diretórios mais usados e permite navegação inteligente:
# Navegar para diretório frequentemente acessado
z projeto-api
# Busca fuzzy entre diretórios visitados
zi api
# Listar diretórios mais frequentes
zoxide query -l
Para correção automática de comandos e ajuda rápida:
# Corrigir último comando digitado errado
thefuck
# Ajuda concisa com exemplos práticos
tldr tar
tldr docker-compose
Aliases e funções customizadas transformam comandos longos em atalhos de 2 teclas:
# No ~/.zshrc ou ~/.bashrc
alias gs='git status'
alias gp='git push'
alias gc='git commit -m'
alias dev='cd ~/projects && tmux new-session -A -s dev'
# Função para criar branch e fazer checkout
gbc() {
git checkout -b "$1"
git push -u origin "$1"
}
A verdade é que CLI tools não competem com IDEs — elas as complementam. Enquanto IDEs são ótimas para escrever código e depurar, as ferramentas de terminal são insuperáveis para navegação, busca, processamento de dados e automação. Depois que você integra essas ferramentas ao seu fluxo de trabalho, percebe que a produtividade não está em ter mais botões na tela, mas em ter comandos precisos que fazem exatamente o que você precisa, quando você precisa.
O terminal não é um ambiente ultrapassado — é a interface mais poderosa que existe para quem sabe usá-la.
Referências
- fzf - Fuzzy Finder — Ferramenta de busca fuzzy para terminal, integrada com fd e ripgrep
- ripgrep (rg) - Documentação Oficial — Busca recursiva de texto extremamente rápida, respeitando .gitignore
- jq - Manual Oficial — Processador de JSON leve e flexível para linha de comando
- lazygit - Git TUI — Interface de terminal para Git que substitui clientes gráficos
- tmux - Terminal Multiplexer — Gerenciamento de múltiplas sessões de terminal com persistência
- bat com delta - Diff Syntax Highlighting — Visualizador de diffs com syntax highlighting e integração com Git
- zoxide - Navegação Inteligente — Navegador de diretórios que aprende seus padrões de uso
- thefuck - Correção de Comandos — Corrige automaticamente comandos digitados errado no terminal
- tldr - Páginas de Manual Simplificadas — Versões resumidas e práticas de man pages com exemplos reais
- VisiData - Análise Tabular Interativa — Ferramenta para explorar e analisar dados tabulares no terminal