Tmux: multiplexador de terminal essencial
1. Introdução ao Tmux
Tmux é um multiplexador de terminal que permite gerenciar múltiplas sessões de terminal em uma única janela. Sua principal utilidade reside na persistência de sessões — você pode desanexar uma sessão, fechar o terminal e reanexá-la posteriormente exatamente onde parou. Além disso, oferece divisão de tela em painéis, gerenciamento de janelas e automação via scripts shell.
A instalação é simples. No Linux (Debian/Ubuntu):
sudo apt install tmux
No CentOS/RHEL:
sudo yum install tmux
No macOS via Homebrew:
brew install tmux
A terminologia fundamental do Tmux envolve três níveis hierárquicos:
- Sessão: contêiner principal que agrupa janelas
- Janela: equivalente a uma aba dentro da sessão
- Painel: divisões dentro de uma janela
O prefixo padrão para comandos é Ctrl+b. Após pressioná-lo, você digita um comando específico.
2. Gerenciamento de Sessões
Criar uma sessão nomeada é essencial para organização:
tmux new -s meuservidor
Para desanexar a sessão atual sem encerrá-la, pressione Ctrl+b d. Para reanexar posteriormente:
tmux attach -t meuservidor
Listar todas as sessões ativas:
tmux ls
Para encerrar uma sessão específica:
tmux kill-session -t meuservidor
É possível criar sessões sem anexar imediatamente:
tmux new -s backup -d
Isso é útil em scripts que preparam ambientes para uso futuro.
3. Navegação entre Janelas e Painéis
Dentro de uma sessão, janelas funcionam como abas. Para criar uma nova janela:
Ctrl+b c
Navegar entre janelas:
Ctrl+b n # próxima janela
Ctrl+b p # janela anterior
Listar janelas numericamente:
Ctrl+b w
Para dividir o terminal em painéis:
Ctrl+b % # divisão vertical
Ctrl+b " # divisão horizontal
Navegar entre painéis:
Ctrl+b ← # mover para painel à esquerda
Ctrl+b → # mover para painel à direita
Ctrl+b ↑ # mover para painel acima
Ctrl+b ↓ # mover para painel abaixo
Redimensionar painéis:
Ctrl+b Ctrl+← # redimensionar para esquerda
Ctrl+b Ctrl+→ # redimensionar para direita
4. Comandos Essenciais no Modo de Comando
O modo de comando é acessado com Ctrl+b :. Nele, você digita comandos diretamente.
Redimensionar painel específico (pane 2 para 20 linhas):
resize-pane -t 2 -y 20
Trocar posições entre painéis:
swap-pane -U # trocar com painel acima
swap-pane -D # trocar com painel abaixo
Quebrar um painel em nova janela:
break-pane
Enviar o mesmo comando para todos os painéis da janela:
send-keys -t 1 "ls -la" Enter
Para enviar a todos os painéis simultaneamente:
send-keys -t 0 "uptime" Enter
send-keys -t 1 "uptime" Enter
send-keys -t 2 "uptime" Enter
5. Personalização com Arquivo de Configuração
O arquivo ~/.tmux.conf é carregado automaticamente ao iniciar o Tmux. Exemplo básico:
# Altera o prefixo para Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Aumenta o histórico de scroll para 5000 linhas
set -g history-limit 5000
# Habilita mouse
set -g mouse on
# Ajusta cores da barra de status
set -g status-bg blue
set -g status-fg white
# Exibe data e hora na barra
set -g status-right "#[fg=white]%H:%M #[fg=yellow]%d/%m/%Y"
Para recarregar o arquivo de configuração sem reiniciar:
tmux source-file ~/.tmux.conf
Ou dentro do Tmux: Ctrl+b :source-file ~/.tmux.conf.
6. Automação com Scripts Shell
Criar sessões pré-configuradas via shell script é um dos maiores ganhos de produtividade. Exemplo prático: script que abre um projeto Node.js com três painéis.
#!/bin/bash
SESSION="meuprojeto"
# Verifica se a sessão já existe
tmux has-session -t $SESSION 2>/dev/null
if [ $? != 0 ]; then
# Cria sessão com primeira janela
tmux new-session -d -s $SESSION -n "editor"
# Painel 0: editor (Vim)
tmux send-keys -t $SESSION:editor "cd ~/projeto && vim" Enter
# Divide horizontalmente (painel 1)
tmux split-window -h -t $SESSION:editor
tmux send-keys -t $SESSION:editor.1 "cd ~/projeto && npm run dev" Enter
# Divide verticalmente no painel 1 (painel 2)
tmux split-window -v -t $SESSION:editor.1
tmux send-keys -t $SESSION:editor.2 "cd ~/projeto && git status" Enter
# Cria segunda janela para logs
tmux new-window -t $SESSION -n "logs"
tmux send-keys -t $SESSION:logs "tail -f ~/projeto/logs/app.log" Enter
fi
# Anexa à sessão
tmux attach-session -t $SESSION
Com variáveis e loops, é possível gerenciar múltiplas sessões:
#!/bin/bash
PROJETOS=("api" "frontend" "worker")
for PROJETO in "${PROJETOS[@]}"; do
tmux new-session -d -s $PROJETO -n "main"
tmux send-keys -t $PROJETO:main "cd ~/$PROJETO && ls" Enter
echo "Sessão $PROJETO criada."
done
echo "Sessões criadas:"
tmux ls
7. Dicas Avançadas e Integração
Habilitar o mouse permite selecionar texto e redimensionar painéis com cliques:
set -g mouse on
Para copiar texto com mouse, segure Shift enquanto seleciona.
O plugin tmux-resurrect salva e restaura sessões completas. Instalação via TPM (Tmux Plugin Manager):
# No ~/.tmux.conf
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
# Para salvar: Ctrl+b Ctrl+s
# Para restaurar: Ctrl+b Ctrl+r
Integração com SSH é direta. Crie uma sessão para servidores remotos:
tmux new -s servidores
Ctrl+b % # divide painel
# Em cada painel, faça SSH para servidores diferentes
ssh usuario@servidor1
ssh usuario@servidor2
Scripts de deploy podem usar Tmux para monitorar múltiplos estágios:
#!/bin/bash
tmux new-session -d -s deploy
tmux send-keys -t deploy "cd /app && git pull" Enter
tmux split-window -h -t deploy
tmux send-keys -t deploy.1 "cd /app && npm run build" Enter
tmux split-window -v -t deploy.1
tmux send-keys -t deploy.2 "cd /app && pm2 restart all" Enter
tmux attach -t deploy
O Tmux se torna uma ferramenta indispensável para quem trabalha com terminal intensivamente, oferecendo organização, persistência e automação que elevam a produtividade no desenvolvimento e administração de sistemas.
Referências
- Documentação Oficial do Tmux — Repositório oficial com manual completo, changelog e guia de contribuição
- Tmux Cheat Sheet — Referência visual rápida com todos os comandos essenciais do Tmux
- Tmux Plugin Manager (TPM) — Gerenciador de plugins para Tmux com instruções de instalação e lista de plugins populares
- Tmux Resurrect — Plugin que permite salvar e restaurar sessões completas do Tmux após reboot
- OpenBSD Tmux Manual — Página de manual oficial do Tmux no OpenBSD, referência detalhada de todos os comandos e opções
- Tmux Tutorial do DigitalOcean — Tutorial prático de instalação e uso básico do Tmux no Ubuntu