Guia de Sobrevivência Tmux
1. Introdução ao Tmux
O que é Tmux?
O tmux (Terminal Multiplexer) é uma ferramenta poderosa e versátil que permite a criação, gerenciamento e navegação entre múltiplas sessões de terminal dentro de uma única interface. Ele atua como um ambiente unificado onde todas as sessões são gerenciadas centralmente, permitindo navegação rápida, sincronização de comandos entre múltiplos panes e persistência de estado.
Por que usar Tmux?
- Persistência de Sessões: As sessões do Tmux permanecem ativas mesmo após a desconexão do cliente, ideal para trabalhos de longa duração ou em ambientes com conectividade instável.
- Organização: Permite organizar o trabalho em sessões, janelas e panes, facilitando o gerenciamento de múltiplos projetos ou tarefas simultaneamente.
- Produtividade: Acelera o fluxo de trabalho com atalhos de teclado eficientes, divisão de tela e a capacidade de executar comandos em múltiplos panes ao mesmo tempo.
- Colaboração: Múltiplos usuários podem se conectar à mesma sessão Tmux, facilitando o trabalho em equipe, depuração colaborativa ou treinamento em tempo real.
- Automação: Possibilita a criação de scripts para configurar ambientes de trabalho padronizados, economizando tempo e garantindo consistência.
2. Instalação Rápida
A instalação do tmux é geralmente simples e pode ser feita através dos gerenciadores de pacotes padrão de cada sistema operacional.
- Debian/Ubuntu:
1
sudo apt update && sudo apt install tmux
- Red Hat/CentOS/Oracle Linux:
1 2 3 4
# Para sistemas mais antigos com YUM sudo yum update && sudo yum install tmux # Para sistemas mais recentes com DNF sudo dnf update && sudo dnf install tmux
- macOS (com Homebrew):
1
brew install tmux
Após a instalação, você pode verificar a versão do tmux com tmux -V
.
3. Conceitos Fundamentais
O tmux organiza-se em uma hierarquia de três níveis:
- Sessões: Representam contextos de trabalho completos e independentes. São persistentes e podem ser desconectadas e reconectadas a qualquer momento. Úteis para manter múltiplos projetos ou ambientes de trabalho separados.
- Janelas: Dentro de cada sessão, as janelas funcionam como espaços de trabalho individuais, similares às abas em um navegador. Cada janela possui seu próprio terminal virtual e pode executar processos independentes.
- Panes: No nível mais granular, os panes permitem a divisão de uma janela em múltiplas áreas de visualização. Cada pane é um terminal independente, permitindo a visualização simultânea de múltiplos processos ou outputs.
Hierarquia: Sessão > Janela > Pane
4. Comandos Essenciais (Atalhos)
O prefixo padrão do tmux é Ctrl+b
. Para executar um comando, pressione o prefixo e depois a tecla do comando.
Gerenciamento de Sessões
tmux new -s <nome_sessao>
: Cria uma nova sessão nomeada.tmux ls
: Lista todas as sessões ativas.tmux a -t <nome_sessao>
: Conecta-se a uma sessão existente.Ctrl+b d
: Desconecta da sessão atual (a sessão continua rodando em background).Ctrl+b s
: Exibe um menu interativo para selecionar sessões.Ctrl+b $
: Renomeia a sessão atual.tmux kill-session -t <nome_sessao>
: Termina uma sessão específica.
Gerenciamento de Janelas
Ctrl+b c
: Cria uma nova janela.Ctrl+b ,
: Renomeia a janela atual.Ctrl+b w
: Exibe um menu interativo para selecionar janelas.Ctrl+b n
: Vai para a próxima janela.Ctrl+b p
: Vai para a janela anterior.Ctrl+b <numero>
: Vai para a janela de número específico (ex:Ctrl+b 1
).Ctrl+b &
: Fecha a janela atual (pede confirmação).
Gerenciamento de Panes
Ctrl+b %
: Divide o pane atual verticalmente (cria um novo pane à direita).Ctrl+b "
: Divide o pane atual horizontalmente (cria um novo pane abaixo).Ctrl+b <setas>
: Navega entre os panes (ex:Ctrl+b Seta para Cima
).Ctrl+b o
: Alterna para o próximo pane na sequência.Ctrl+b q <numero>
: Mostra números nos panes; digite o número para ir ao pane.Ctrl+b x
: Fecha o pane atual (pede confirmação).Ctrl+b z
: Alterna o zoom do pane atual (ocupa a tela inteira).Ctrl+b Espaço
: Alterna entre os layouts de panes predefinidos.Ctrl+b Ctrl+<setas>
: Redimensiona o pane atual.
5. Configuração Básica (~/.tmux.conf
)
O tmux pode ser personalizado através do arquivo ~/.tmux.conf
. Se o arquivo não existir, crie-o. Abaixo estão algumas configurações básicas recomendadas:
# Definir prefixo personalizado (Ctrl+a ao invés de Ctrl+b)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# Recarregar configuração com Prefix + r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
# Habilitar mouse
set -g mouse on
# Começar numeração de janelas e panes em 1 (mais intuitivo)
set -g base-index 1
setw -g pane-base-index 1
# Renumerar janelas automaticamente após fechar uma
set -g renumber-windows on
# Cores de 256 bits para melhor visualização
set -g default-terminal "screen-256color"
# Navegação entre panes com Alt + setas (sem prefixo)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Split panes mais intuitivo ( | para vertical, - para horizontal)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Nova janela no diretório atual
bind c new-window -c "#{pane_current_path}"
Para aplicar as mudanças, salve o arquivo ~/.tmux.conf
e execute Prefix + r
em uma sessão tmux.
6. Configurações Avançadas
Navegação Estilo Vim
Para usuários familiarizados com o Vim, é possível configurar a navegação entre panes para usar as teclas h
, j
, k
, l
:
# Navegação entre panes estilo vim
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Redimensionamento de panes com Shift + h/j/k/l
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# Modo de cópia estilo vi
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
Personalização da Status Bar
A status bar (barra de status) do tmux pode ser altamente personalizada para exibir informações úteis e ter uma aparência agradável. Adicione as seguintes linhas ao seu ~/.tmux.conf
:
# Cores da status bar
set -g status-style 'bg=#1e1e1e,fg=#ffffff'
# Configuração da janela ativa
setw -g window-status-current-style 'fg=#00ff00,bg=#000000,bold'
setw -g window-status-current-format ' #I:#W#F '
# Janelas inativas
setw -g window-status-format ' #I:#W '
# Status esquerda - informações da sessão
set -g status-left-length 50
set -g status-left '#[fg=#00ff00,bg=#1e1e1e,bold] 🖥️ #S #[fg=#ffffff,bg=#1e1e1e] | '
# Status direita - data e hora
set -g status-right '#[fg=#ffffff,bg=#1e1e1e] %Y-%m-%d %H:%M:%S '
# Bordas dos panes
set -g pane-border-style fg=colour238
set -g pane-active-border-style fg=colour166
# Cores para mensagens
set -g message-style 'fg=#ffffff,bg=#ff0000,bold'
set -g message-command-style 'fg=#ffffff,bg=#0000ff,bold'
7. Casos de Uso Práticos: Gerenciamento de Múltiplos Servidores
O tmux é extremamente útil para gerenciar múltiplos servidores ou componentes de infraestrutura simultaneamente. A ideia é criar uma sessão dedicada para um projeto ou ambiente, com janelas para diferentes tipos de componentes e panes para cada servidor ou log específico.
Exemplo: Gerenciamento de Ambiente de Produção
Imagine que você precisa monitorar um ambiente de produção que consiste em um servidor web, um servidor de banco de dados e um servidor de logs. Você pode criar uma sessão tmux e organizar suas janelas e panes da seguinte forma:
# Criar uma nova sessão chamada 'producao'
tmux new-session -d -s producao
# Janela 1: Servidor Web
tmux rename-window -t producao:0 'web-server'
tmux send-keys -t producao:web-server 'ssh user@web-prod-01' C-m
# Dividir o pane do servidor web para logs
tmux split-window -t producao:web-server -v
tmux send-keys -t producao:web-server.1 'ssh user@web-prod-01' C-m
tmux send-keys -t producao:web-server.1 'tail -f /var/log/nginx/access.log' C-m
# Janela 2: Servidor de Banco de Dados
tmux new-window -t producao -n 'db-server'
tmux send-keys -t producao:db-server 'ssh user@db-prod-01' C-m
# Dividir o pane do banco de dados para monitoramento de performance
tmux split-window -t producao:db-server -h
tmux send-keys -t producao:db-server.1 'ssh user@db-prod-01' C-m
tmux send-keys -t producao:db-server.1 'top' C-m
# Janela 3: Servidor de Logs Centralizado
tmux new-window -t producao -n 'log-server'
tmux send-keys -t producao:log-server 'ssh user@log-prod-01' C-m
tmux send-keys -t producao:log-server 'tail -f /var/log/syslog' C-m
# Anexar à sessão 'producao'
tmux attach-session -t producao
Este script cria uma sessão producao
com três janelas, cada uma dedicada a um tipo de servidor. A janela web-server
é dividida para mostrar logs de acesso, e a janela db-server
é dividida para monitorar a performance. Isso permite que você tenha uma visão geral do seu ambiente de produção e alterne rapidamente entre os diferentes componentes.
Você pode adaptar este padrão para qualquer cenário, seja Kubernetes, Docker Swarm, ou qualquer outra infraestrutura, focando na organização lógica dos seus terminais.
8. Funcionalidades Avançadas
Sincronização de Panes
Uma funcionalidade poderosa do tmux é a capacidade de sincronizar a entrada de texto em múltiplos panes, enviando o mesmo comando para todos eles simultaneamente. Isso é extremamente útil para executar a mesma operação em vários servidores ao mesmo tempo.
Para ativar ou desativar a sincronização de panes, use o atalho:
Ctrl+b y
: Ativa/desativa a sincronização de panes. Uma mensagem aparecerá na barra de status indicando se a sincronização estáON
ouOFF
.
Quando a sincronização está ativa, qualquer texto digitado no pane ativo será replicado em todos os outros panes da mesma janela.
Navegação no Buffer (Modo de Cópia)
Quando a saída de um comando excede o tamanho da tela, o tmux armazena essa saída em um buffer. Você pode entrar no “modo de cópia” para navegar por esse buffer, selecionar texto e copiá-lo.
Para entrar no modo de cópia:
Ctrl+b [
: Entra no modo de cópia.
Uma vez no modo de cópia, você pode usar as seguintes teclas para navegar (se você configurou o modo vi, as teclas serão as do vi; caso contrário, serão as do Emacs):
Navegação (padrão Emacs):
Ctrl+u
: Rola para cima meia página.Ctrl+d
: Rola para baixo meia página.Ctrl+b
ouPage Up
: Rola para cima uma página.Ctrl+f
ouPage Down
: Rola para baixo uma página.g
: Vai para o início do buffer.G
: Vai para o final do buffer.
Navegação (modo vi, se configurado):
h
,j
,k
,l
: Move o cursor (esquerda, baixo, cima, direita).Ctrl+u
: Rola para cima meia página.Ctrl+d
: Rola para baixo meia página.Ctrl+b
: Rola para cima uma página.Ctrl+f
: Rola para baixo uma página.g
: Vai para o início do buffer.G
: Vai para o final do buffer.
Para sair do modo de cópia:
q
: Sai do modo de cópia.
Para copiar texto no modo de cópia:
- Entre no modo de cópia (
Ctrl+b [
). - Mova o cursor para o início da seleção.
- Pressione
Ctrl+Espaço
(modo Emacs) ouv
(modo vi) para iniciar a seleção. - Mova o cursor para o final da seleção.
- Pressione
Alt+w
(modo Emacs) ouy
(modo vi) para copiar a seleção para o buffer do tmux.
Depois de copiar para o buffer do tmux, você pode colar o conteúdo em qualquer pane com:
Ctrl+b ]
: Cola o conteúdo do buffer do tmux.
Conclusão
O tmux é uma ferramenta indispensável para qualquer profissional que trabalha extensivamente com a linha de comando. Sua capacidade de gerenciar sessões persistentes, organizar o trabalho em janelas e panes, e automatizar tarefas repetitivas pode aumentar significativamente a produtividade e a eficiência. Ao dominar os conceitos fundamentais, os comandos essenciais e as configurações avançadas, você estará apto a criar um ambiente de trabalho personalizado que se adapta perfeitamente às suas necessidades.
Esperamos que este guia de sobrevivência rápido tenha fornecido uma base sólida para você começar sua jornada com o tmux. Continue explorando suas funcionalidades, personalizando seu arquivo .tmux.conf
e descobrindo novas maneiras de otimizar seu fluxo de trabalho. A prática leva à perfeição, e quanto mais você usar o tmux, mais natural e poderosa essa ferramenta se tornará em seu dia a dia.