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