Conteúdos

Tmux

Olá a todos,

Já faz algum tempo que estou para escrever sobre essa ferramenta excelente que descobri em minha andanças pela internet. Vou dividir em duas partes as explicações aqui, uma sobre o tmux e outra sobre o tmuxinator (num próximo post)

Tmux

O tmux é um multiplexador de terminais, a explicação vem do site do programa:

What is a terminal multiplexer? It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more.

Ele basicamente transforma o seu terminal em várias instancias.

Mas aí você me diz: O meu emulador de terminal já permite eu ter várias abas e até mesmo dividir a tela em quantas partes eu quiser.

Sim, eu te respondo, mas o tmux tem algumas vantagens aí:

  • Com ele você pode criar várias instancias dentro de um único túnel de ssh, eu seja, você não precisa fazer várias conexões no ssh para ter multiplas janelas do servidor
  • Você pode “ataxar” e “desataxar” de um tmux em execução, podendo assim, entrar numa conexão, abrir todas as janelas que você quiser, “desataxar” do tmux, fechar a conexão, e poder continuar a qualquer hora, da onde parou (mais explicações abaixo).
  • Um conjunto de atalhos rápidos para as configurações do tmux (split de tela, nova janela, redimencionamento…), sem precisar tirar a mão do teclado
  • Um bom nível de customização (e tudo isso em dotfiles)

O Básico

Vamos começar instalando o tmux:

1
sudo apt-get install tmux

Com isso já teremos o tmux para começar a brincadeira. Abra seu terminal e digite tmux:

Tela inicial do Tmux

Tela inicial do Tmux

Podemos ver que apareceu uma barra de status no final da tela, parabéns você já está usando o tmux!

Mas o que isso muda a minha vida? Nessa barra de status nós temos:

  • O número entre conchetes “[ 0 ]”, indica qual a sessão do tmux estamos usando
  • O segundo zero é o número da janela que estamos usando
  • Logo depois vem o nome do terminal “bash”, que vai mudar conforme o programa em execução, ou podemos alterar para o nome que quisermos
  • Já do lado direito, temos o nome da máquina “packer-virtualbox-iso-”
  • Data e hora do sistema

Essa barra é customizável, como veremos mais a frente.

Conceitos sobre o Tmux

O tmux se organiza por meio de sessions, windows e panels. Dentro de uma session podemos ter várias windows e diversas panels. Todos os comandos do Tmux começam com Ctrl+b (para facilitar aqui vou colocar sempre como C-b), ou seja, para criar uma window é C-b C (Ctrl+b juntos e depois a letra c sozinha). Para criar uma window utilize C-b c:

Uma janela foi adicionada

Uma janela foi adicionada

Reparou como apareceu mais um “bash” na barra de status, agora temos duas janelas (0 e 1), ele vai abrir um sessão nova no seu interpretador de comandos (bash, zsh, fish…), é mais ou menos como criar uma tab nova no seu navegador.

Podemos passear pelas janelas usando o número delas, C-b 0 para ir para a primeira janela, C-b 1 e vamos para a segunda, ou C-b n para ir para a próxima (next) e C-b p para ir para a anterior (previous)

Só aqui já temos dois terminais abertos dentro de uma única conexão ssh, por exemplo. Vamos continuar brincando

Agora vamos criar panels, que nada mais são do que splits de telas, onde podemos dividi-las na horizontal ou vertical. Fazendo C-b % dividimos o terminal ao meio verticalmente:

Tela dividida verticalmente

Tela dividida verticalmente

Já com C-b " dividimos a tela horizontalmente:

Tela dividida verticalmente e horizontalmente

Tela dividida verticalmente e horizontalmente

Usando o comando C-b d podemos “destacar” da sessão que está ativa, voltando ao terminar original. A sessão continua rodando normalmente, você só não está conectada a ela

Mensagem quando 'destacar' da sessão

Mensagem quando 'destacar' da sessão

Para mostrar as sessões ativas, rode o comando:

1
tmux list-sessions

Ele vai retornar algo do tipo:

Mensagem com as sessões ativas

Mensagem com as sessões ativas

Com esse retorno podemos ver:

0: - É o “id” da sessão, é com ele que você poderá retornar a sessão 2 windows - Tem duas janelas nessa sessão (C-b c)

Então, para retornar a sessão rode o comando:

1
tmux attach -t 0 #Ou o nome da sessão

Quando estivermos usando o tmuxinator, o nome da sessão será diferente

Dessa forma podemos, acessar um servidor qualquer via ssh, abrir várias janelas no tmux, deixar algum comando (um script de backup por exemplo), “destacar” da sessão, deslogar do servidor, e o comando vai continuar rodando e todas as suas janelas também.

Vou terminar por aqui essa primeira parte, no próximo post veremos como usar o tmuxinator para automatizar coisas no tmux.