Ferramentas de linha de comando indispensáveis para devs
1. Navegação e manipulação de arquivos no terminal
O terminal é o ambiente onde desenvolvedores passam grande parte do tempo, e dominar ferramentas de navegação é essencial. O comando ls tradicional já é útil, mas alternativas modernas como exa e lsd oferecem coloração semântica, ícones e visualização em árvore com a flag --tree.
# Listar arquivos com exa (cores e ícones)
exa -la --icons
# Visualização em árvore com lsd
lsd --tree --depth 2
Para busca, fd é uma alternativa rápida ao find com sintaxe intuitiva, enquanto ripgrep (rg) substitui grep com performance superior e suporte nativo a regex.
# Encontrar arquivos .py que contêm "def main"
fd -e py -x rg -l "def main"
# Busca recursiva ignorando .git
rg "TODO" --type-add 'web:*.{html,css,js}' -t web
O bat substitui cat com syntax highlighting, numeração de linhas e integração com Git. Já fzf é um fuzzy finder que permite filtrar interativamente qualquer lista.
# Visualizar arquivo com syntax highlight
bat --style=numbers,changes main.py
# Usar fzf para navegar no histórico de comandos
history | fzf --tac --reverse
2. Visualização e edição de código no terminal
Editores leves como vim/neovim e micro permitem edição sem sair do terminal. O micro é mais amigável para iniciantes, com atalhos similares ao Ctrl+C/V.
# Abrir arquivo no micro com syntax highlight
micro app.js
# Neovim com configuração mínima para edição remota
nvim --cmd "set number" server.log
Para diff e revisão, delta transforma saídas do Git em diffs estilizados com destaque de palavras. O tig oferece navegação interativa em repositórios Git.
# Diff estilizado com delta
git diff | delta
# Navegar pelo histórico com tig
tig
Para dados estruturados, jq processa JSON com queries poderosas, e csvkit (comando csvjson) converte CSV para JSON.
# Extrair campos específicos de JSON
curl -s https://api.github.com/users/octocat | jq '{login, name, public_repos}'
# Converter CSV para JSON
csvjson dados.csv | jq '.[] | {nome, email}'
3. Gerenciamento de processos e monitoramento
O htop é o monitor de processos clássico, mas btm (bottom) oferece visualização moderna com gráficos. O glances fornece uma visão geral em tempo real.
# Monitorar processos com bottom
btm --color nord
# Visão geral do sistema com glances
glances --time 2
Para análise de rede, curl é o padrão, mas httpie (comando http) simplifica requisições HTTP. O nmap escaneia portas e serviços.
# Requisição POST com httpie
http POST https://httpbin.org/post nome="João" idade=30
# Escanear portas comuns
nmap -sS -p 80,443,22 scanme.nmap.org
Sessões persistentes são gerenciadas com tmux (mais moderno) e screen (clássico).
# Iniciar sessão tmux com nome
tmux new -s dev-session
# Desanexar e reanexar
tmux detach
tmux attach -t dev-session
4. Automação e scripts no shell
awk e sed são ferramentas clássicas para processamento de texto em pipelines.
# Extrair segunda coluna de um CSV com awk
awk -F',' '{print $2}' usuarios.csv
# Substituir "foo" por "bar" com sed
sed -i 's/foo/bar/g' config.txt
Para automação de tarefas, make é o padrão em projetos C/C++, mas just oferece sintaxe mais limpa para comandos arbitrários.
# Justfile para automação
build:
cargo build --release
test:
cargo test -- --nocapture
deploy: build test
rsync -avz target/release/ user@server:/opt/app
dateutils e when calculam datas e horários.
# Calcular diferença entre datas
dateutils.ddiff 2024-01-01 2024-12-31
# Executar comando em horário específico
when 14:30 -- notify-send "Hora da reunião"
5. Ferramentas para versionamento (Git)
lazygit e gitui oferecem interfaces TUI completas para Git, com staging, commit e push via teclado.
# Abrir lazygit no diretório atual
lazygit
Para análise de histórico, git log --graph mostra branches visualmente, e gitk fornece uma interface gráfica.
# Visualizar histórico com gráfico
git log --oneline --graph --all --decorate
# Abrir gitk para navegação visual
gitk --all
Para debugging, git blame identifica autores de linhas, e git bisect encontra commits que introduziram bugs.
# Encontrar autor de uma linha específica
git blame -L 10,20 main.py
# Iniciar bisect para encontrar bug
git bisect start
git bisect bad HEAD
git bisect good v1.0
6. Utilidades para produtividade diária
trash-cli envia arquivos para a lixeira do sistema (seguro), e rename renomeia arquivos em lote com expressões regulares.
# Mover para lixeira
trash-put arquivo-temp.log
# Renomear todos .txt para .md
rename 's/\.txt$/.md/' *.txt
Para backup e transferência, tar compacta, rsync sincroniza eficientemente, e restic faz backups criptografados.
# Backup incremental com rsync
rsync -avz --progress /home/user/projetos/ user@server:/backup/
# Backup criptografado com restic
restic -r s3:https://s3.amazonaws.com/bucket backup /home/user
Integração com desktop: xclip/wl-clipboard acessam a área de transferência, e notify-send envia notificações.
# Copiar saída para clipboard
cat relatorio.txt | xclip -selection clipboard
# Notificação ao finalizar tarefa
notify-send "Backup concluído" "$(date)"
7. Segurança e acesso remoto
Conexões SSH são otimizadas com atalhos no arquivo ~/.ssh/config. O mosh mantém conexões em redes instáveis.
# Configuração SSH no .ssh/config
Host servidor-producao
HostName 192.168.1.100
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
# Conectar com atalho
ssh servidor-producao
# Usar mosh para conexão resiliente
mosh servidor-producao
Gerenciamento de chaves com ssh-keygen e gpg para criptografia.
# Gerar chave SSH Ed25519
ssh-keygen -t ed25519 -C "email@exemplo.com"
# Criptografar arquivo com GPG
gpg --symmetric --cipher-algo AES256 dados.conf
Auditoria de permissões com ls -la, find e comandos avançados de chmod/chown.
# Encontrar arquivos com permissão 777
find /home -type f -perm 0777
# Alterar permissões recursivamente (apenas diretórios)
find /app -type d -exec chmod 755 {} \;
Referências
- Documentação oficial do ripgrep — Guia completo de uso e opções do rg, com exemplos de busca avançada.
- Bat: A cat clone with wings — Repositório oficial com documentação, temas e integrações.
- Tmux: Terminal Multiplexer — Wiki oficial com tutoriais, atalhos e configuração avançada.
- jq: Command-line JSON processor — Manual completo com todos os filtros, funções e exemplos práticos.
- Lazygit: Simple terminal UI for git commands — Repositório oficial com guia de instalação e atalhos de teclado.
- Restic: Backup program — Documentação oficial com exemplos de backup para diferentes backends (local, S3, SFTP).
- HTTPie: Human-friendly CLI HTTP client — Documentação com exemplos de requisições, autenticação e formatação de saída.
- GNU sed manual — Referência completa para comandos sed, incluindo expressões regulares e scripts.