Ir para o conteúdo

Vamos conversar sobre o TMUX?

Lá está você, conectado via SSH em um servidor remoto e se perguntando coisas como:

“Como eu abro múltiplos terminais aqui?”
“Meu comando está rodando ainda, se cair a luz aqui vai cancelar?”
“Eu preciso sair agora e continuar amanhã. Vou ter que abrir tudo de novo?”
Hoje vamos aprender a usar o TMUX para nos ajudar nestas questões! ?‍?


O TMUX é um terminal multiplexer que nos permite, através do nosso terminal, emular diversos outros, executar processo em background e principalmente, organizar nosso trabalho.

É praticamente uma virtualização de terminais dentro do terminal da máquina em que estamos trabalhando.


Instalando o TMUX

O TMUX pode ser instalado em diversas distribuições Linux (também tem para MacOS). Você pode ver mais neste link aqui:

Neste artigo vamos abordar o seguinte cenário:

  • Conectar via SSH em um Ubuntu 20.04.
  • Instalar o TMUX.
  • Trabalhar no TMUX.
  • Uma vez conectado no servidor, vamos executar o seguinte comando para instalar a tool:

Pronto! Isto é tudo que precisamos neste momento.


Como funciona o TMUX

O TMUX é uma aplicação que vamos utilizar no terminal. Se você já utilizou o VIM alguma vez, muita coisa vai ser semelhante.

É importante entender 3 conceitos do app:

  • Do seu terminal, você vai iniciar o TMUX.
  • O TMUX tem sessões.
  • As sessões tem janelas.
  • As janelas tem painéis.
  • Nós digitamos nossos comandos nos painéis.

As sessões e as janelas servem principalmente para organizar o trabalho.

Você pode ficar trocando de janelas, sessões e painéis sem se preocupar se os comandos foram cancelados. Todo o processo continua em background a menos que você os cancele manualmente.


Começando os trabalhos

Pronto para praticar um pouco? Abra o seu terminal.

Agora digite TMUX e aperte enter:

Com este comando, estamos criando uma sessão.

Você deve estar vendo algo semelhante à isto:

Vamos nos localizar no mapa:

O TMUX usa tudo como índice 0, ou seja, o primeiro item de cada contexto terá o número 0.

Neste momento você está:

  • Logado em sua primeira sessão ([0]).
  • Na sua sessão, tem uma janela (0:bash*).
  • Na sua janela 0, tem um painel (onde está o seu cursor para digitar comandos).

Apenas para relembrar: seus comandos são executados nos painéis, as janelas e as sessões organizam o nosso trabalho.


Trabalhando com Sessões

O primeiro nível de trabalho dentro do TMUX são as sessões.

Então vamos começar com o seguinte exercício:

  • Abrir o terminal.
  • Criar uma sessão (sessão 0).
  • Sair dessa sessão e voltar ao terminal.
  • Criar uma nova sessão (sessão 1).
  • Sair desta nova sessão.
  • Entrar na sessão anterior (sessão 0).
  • Terminar a sessão 1.

Abrir o terminal

Abra seu terminal que está o TMUX instalado.

Criar a primeira sessão

Digite TMUX e aperte enter:

Sair do TMUX e voltar ao terminal

Agora vamos precisar entender um conceito novo.

Se você já trabalhou com VIM ou qualquer outro editor dentro do terminal, sabe que algumas ações como “navegar” e “salvar” precisam ser feitos através de comandos específicos da aplicação.

Um exemplo disso é o famoso “como eu saio do VIM?”.

Onde o ESC foi o responsável por “Ei VIM, vou te dar alguns comandos específicos”.

No TMUX não é diferente.

Quando quisermos dar algum comando, como “crie uma nova janela”, “crie um novo painel”, “vá para a janela número 2”, “me tire daqui por favor”, entre outros. Precisamos indicar para ele que faremos algo deste tipo.

Para colocar o TMUX em modo de comando, usamos o CTRL+bChamamos também isso de PREFIX. Sempre que mencionarmos PREFIX ao longo deste artigo, você pode executar CTRL+b.

Então agora vamos sair da nossa sessão. Use o seguinte comando:

PREFIX+d

Neste momento, nos desanexamos da sessão 0.

É importante ter em mente que desanexar é diferente de terminar. A nossa sessão 0 ainda está viva em background.

E isso é fantástico.

Se você estava com um comando sendo executado lá e fizer o detach, ele continuará rodando lá, você pode fechar o seu terminal e ir embora ou tomar um café se quiser.


Criar uma nova sessão

Criamos a nossa sessão 0 no passo anterior.

Agora vamos executar o comando TMUX novamente e apertar enter:

Perceba que na barra de baixo, o que antes tinha um [0] no canto inferior esquerdo, agora tem um [1].

Isso significa que temos aqui a nossa sessão 1 criada e estamos logados nela. Na verdade, anexada.


Sair da sessão 1 e entrar na sessão 0

Para sair da sessão (sem finalizá-la) você já sabe: PREFIX+d

Agora vamos entrar novamente na sessão 0.

Como já existe a sessão 0, precisamos nos anexar à ela. Para isso usaremos o comando:

Este comando significa: TMUX, me anexe (a) à sessão 0 (-t 0).

E pronto, estamos logados novamente na nossa sessão 0.

Finalizando a sessão 1

Quando fazemos o detach da sessão (PREFIX+d), ela ainda continua em background.

Mas digamos que a gente queira finalizar ela (e todos os processo que estão vinculados a essa sessão).

Para finalizar uma sessão, usamos o comando:

TMUX kill-session -t NOME_SESSAO

No nosso caso: TMUX kill-session -t 1

Se você quiser ver todas as sessões que estão ativas, basta usar o comando:

TMUX ls

Show? Terminamos o nosso exercício.

Agora, ainda com relação às sessões, vamos aprender alguns comandinhos úteis para o cotidiano!

Renomeando uma sessão

Imagine você com 10 sessões ativas e tendo que lembrar o que é o que.

Para nos organizarmos, podemos dar nomes às nossas sessões ao invés de lidar com [0][1], etc.

Para isso, quando estiver logado em uma sessão use o comando:

PREFIX+$

Na parte inferior esquerda, a barra ficará amarela e você poderá renomear a sessão.

Digamos que estamos mexendo no frontend em uma sessão e no backend em outra sessão. Então vamos dar o nome de frontend para esta:

Agora aperte ENTER e você verá que o nome dela muda:

Inclusive, se você estiver fora da sessão e quiser se conectar à ela, você pode usar o nome para isso:

TMUX a -t frontend

Painel de Sessões

Um dos recursos mais legais do TMUX é o painel que nos permite pré-visualizar e navegar entre as sessões rapidamente.

Para fins de demonstração, criei 2 sessões (frontend e backend).

Abra o painel usando o comando:

PREFIX+s

Na parte de cima temos todas as sessões, do meio para baixo temos o preview daquela sessão.

Com a seta podemos navegar entre as linhas amarelas e escolher em qual sessão queremos logar apertando ENTER.

Ainda podemos falar muito de sessões, mas para este artigo está bom por enquanto!

Bora falar das janelas.


Trabalhando com Janelas

As janelas organizam o trabalho dentro de uma sessão.

Vamos nos logar na sessão backend:

TMUX a -t backend

Agora que você está logado, como localizar as janelas?

No canto inferior direito, ao lado do nome da sua sessão estão suas janelas.

Neste caso aqui, você possui apenas uma, a 0:bash*.

Vamos criar uma nova janela usando o comando:

PREFIX+c

Vamos criar uma terceira janela usando o mesmo comando:

PREFIX+c

Vamos entender um pouco as informações que temos aqui:

Temos o nome da nossa sessão e as 3 janelas que fazem parte dela.

Perceba que temos dois símbolos aqui, o traço (-) e o asterisco (*). Eles não estão ali a toa.

asterisco (*) indica a sua janela atual, a que você está vendo neste momento.

traço (-) indica a janela anterior. Ele serve caso você queira ficar trocando entre as janelas ATUAL e ANTERIOR. Este comportamento pode ser feito usando o comando:

PREFIX+l

Veja que agora o asterisco está na janela 1 e o traço na janela 2:

Entendido? Mas como eu navego entre as janelas de forma independente?

Você pode navegar de algumas formas:

Navegar pelo número

PREFIX+Número da Janela (ex: PREFIX+1)

Navegação sequencial

Se quiser ir para a próxima sessão (ex: se está na 1, ir para a 2):

PREFIX+n

Se quiser para a sessão anterior (ex: se está na 1, ir para a 0):

PREFIX+p

Você também pode renomear as janelas exatamente da mesma forma como faz com as sessões usando o comando:

PREFIX+, (vírgula)

Aqui está o exemplo renomeando a janela 1 para “api”:

Para fechar uma janela, basta usar o comando:

PREFIX+&

Vamos fechar a janela 2:

  • Ir para janela 2: PREFIX+2
  • Fechar: PREFIX+&

Show?

Vamos aos painéis agora.


Trabalhando com Painéis

Da mesma forma que uma sessão já nasce com uma janela, uma janela já nasce com um painel. São neles que de fato digitamos nosso código.

Imagino que até este ponto do artigo você já deva ter se acostumado com os comandos e como trabalhar minimamente com o TMUX. Então vamos direto para a prática!


Dividindo Horizontalmente

Para criar um novo painel horizontal, use comando:

PREFIX+%

Dividindo Verticalmente

Para criar um novo painel verticalmente, use o comando:

PREFIX+” (aspas duplas)

Navegando entre painéis

Você deve ter percebido que agora temos 3 terminais.

Refazendo o mapa:

E agora? Nosso cursor está no terminal 2:

Como eu navego para os outros painéis? E como eu sei que esse é o 2?

Vamos por partes.

Primeiro vamos aprender a identificar os painéis. Para isso, use o comando:

PREFIX+q

Ele vai te mostrar visualmente o número de cada painel. O número que estiver em vermelho é o painel ativo no momento, onde seu cursor está.

Para navegar nos painéis pelo seu número, use o comando:

PREFIX+q+NUMERO PAINEL

Exemplo: PREFIX+q, 0 leva o cursor para o painel 0:

Você também pode navegar utilizando as teclas direcionais. Para isso, use:

PREFIX+TECLA DIRECIONAL (⬆ ➡ ️⬇⬅)

Se você for rápido, precisa apertar o PREFIX apenas uma vez e em seguida pode ir apertando apenas os direcionais.


Gerenciando Painéis

Existem alguns outros comandos que podem ser úteis para você:

Converter painel em janela

PREFIX+! (exclamação)

Perceba que nosso painel agora está na janela 2:bash* .

E na Janela 1 ficou apenas aqueles outros 2:

Fechar um painel

PREFIX+x

Com relação aos painéis é isso.

Agora vamos para o último tópico deste artigo.


Modo de Comando

Em várias documentações você verá alguns comandos não usando o PREFIX e sim algo como:

: set -g OPTION

Estes “:” indicam que você deve executá-los em modo de comando.

Para exercitar essa função, vamos direto para a opção de longe a mais utilizada, (e provavelmente você vai me xingar por eu não ter explicado isso logo lá no começo): poder controlar o TMUX usando o mouse.

Para entrar no modo de comando, use:

PREFIX+: (dois pontos)

Você verá que ele ficará com a barra amarela e os “:” aparecendo:

Agora vamos colocar o comando:

: set mouse on

Ao apertar ENTER, você voltará ao tmux e agora você pode clicar nas coisas.

Clicar em um painel ativa ele, clicar em uma janela ativa ela e assim por diante.

Have fun =)


Então pessoas, por hora é isso!

Aproveite o TMUX e ganhe produtividade nos seus terminais remotos.

Ah, e se ajudar, aqui está uma lista de comandos: https://tmuxcheatsheet.com/

Abraço!!

Outras publicações