Como usar o tmux no Linux (e por que é melhor que a tela)

Publicados: 2022-01-29
Um terminal Linux estilizado em um laptop com sessões de shell em segundo plano.
fatmawati achmad zaenuri/Shutterstock.com

O comando tmux do Linux é um multiplexador de terminal, como screen . Seus defensores são muitos e vocais, então decidimos comparar os dois. O tmux é realmente melhor ou é apenas um caso de preferir o que você conhece?

tmux vs. tela

Ambos os comandos de screen tmux e GNU são multiplexadores de terminal. Eles permitem que você tenha várias janelas em uma única janela de terminal e salte para frente e para trás entre elas. Uma janela pode ser dividida em painéis, cada um dos quais fornece uma linha de comando independente.

10 comandos básicos do Linux para iniciantes
RELACIONADOS 10 comandos básicos do Linux para iniciantes

Você também pode desanexar uma sessão e ela se torna uma entidade sem cabeça em execução em segundo plano - você pode até fechar a janela do terminal que a iniciou. Quando estiver pronto, você pode abrir uma nova janela de terminal e reconectar a sessão ainda em execução. Você também pode fazer isso por meio de uma conexão SSH.

Você pode desanexar uma sessão em um computador, ir para casa e fazer login no computador remoto. Quando reconectado, você pode reconectar a sessão em segundo plano e usá-la interativamente novamente.

Qual é o comando da tela?

O comando screen também é um multiplexador de terminal e está repleto de opções. Para saber tudo o que você pode fazer com ele, confira nosso artigo detalhado.

Propaganda

Desta vez, vamos nos concentrar no tmux . À medida que avançamos, mencionaremos como a screen lida com o mesmo recurso ou função.

Apenas uma coisa nos incomodou sobre a screen . Vamos cobrir isso quando chegarmos a isso, e ver se tmux se sai melhor.

RELACIONADO: Como usar o comando screen do Linux

Instalando o tmux

Embora screen seja geralmente instalada por padrão em distribuições Linux populares, o tmux não é. Para instalar tmux no Ubuntu, digite o seguinte:

 sudo apt-get install tmux 

No Manjaro você pode usar o pacman :

 sudo pacman -Sy tmux 

No Fedora 31, tmux já está instalado.

Iniciando uma sessão do tmux

Para iniciar tmux , basta digitá-lo e pressionar Enter:

 tmux 

A janela do terminal mostrará uma barra de status quando você estiver em uma sessão do tmux .

O lado direito da barra de status mostra o nome do host, a hora e a data. O lado esquerdo mostra as seguintes informações relacionadas à sessão:

  • [0]: Este é o nome da sessão. Por padrão, eles são numerados, começando com zero. A seguir, abordamos como você pode dar nomes significativos às sessões.
  • 0:bash*: O 0 indica que esta é a primeira janela nesta sessão. O único processo em execução nesta sessão é o bash . Se você executar um programa, seu nome aparecerá aqui. O asterisco (*) significa que esta é a janela que você está olhando. Cada vez que você cria uma nova janela em uma sessão do tmux , o número da janela e o nome do programa em execução são adicionados à barra de status.

O comando screen não fornece uma barra de status por padrão. Você tem que voar às cegas e confiar em sua inteligência para saber o que está acontecendo, o que requer um pouco de prática. (A menos que você configure sua própria barra de status.)

No lado positivo, você não perderá uma linha de imóveis para janelas de terminais. Claro, você normalmente expandiria sua janela de terminal para fazer valer a pena usar um multiplexador de terminal. Nesse caso, a perda de uma linha para a barra de status não é um grande problema. Deixamos as imagens das janelas do terminal aqui no tamanho padrão para que você possa ver as informações.

Propaganda

Os comandos são dados ao tmux usando teclas, e há duas partes para isso. Primeiro, você pressiona Ctrl+B para chamar a atenção do tmux . Você então pressiona rapidamente a próxima tecla para enviar um comando para tmux . Os comandos são dados pressionando letras, números, sinais de pontuação ou teclas de seta.

É o mesmo em screen , exceto que você pressiona Ctrl+A para chamar sua atenção.

Para fechar a janela, pressione Ctrl+B e, em seguida, pressione X rapidamente. A barra de status fica âmbar. Você será solicitado a confirmar que deseja matar a janela.

Pressione Y para fechar a janela ou N se mudar de ideia. Você não precisa pressionar Enter depois; S ou N é suficiente para registrar sua escolha.

Se você pressionar Y, a janela será fechada. Como esta é a única janela nesta sessão, a sessão é encerrada.

A sessão do tmux é fechada e você retorna à linha de comando a partir da qual iniciou o tmux . Você verá “[exited]” na janela do terminal.

Propaganda

Isso pode parecer óbvio, mas é uma confirmação de que você fechou a sessão e não a deixou desanexada e em execução. Discutiremos as sessões de separação abaixo.

Iniciando uma sessão tmux nomeada

Se você iniciar regularmente várias sessões tmux , apreciará rapidamente a funcionalidade de dar a cada uma delas um nome significativo. Você também pode nomear sessões em screen , mas elas não são exibidas em nenhum lugar das janelas de sessão.

Para iniciar tmux com um nome de sessão, use o comando new (nova sessão) e a opção -s (nome da sessão). Nossa sessão será chamada de “geek-1”, então digitamos o seguinte:

 tmux new -s geek-1 

Quando a sessão do tmux carregada, “geek-1” é exibido como a primeira entrada na barra de status, na extrema esquerda.

Uma sessão do tmux com o nome "geek-1" no lado esquerdo da barra de status.

Adicionando mais janelas

Para criar uma nova janela na sessão atual, pressione Ctrl+B e depois C. Você obterá uma janela de terminal em branco na sessão atual. Então teremos algo rodando nesta nova janela, vamos iniciar o comando dmesg com a opção -w (follow):

 dmesg -w 

Agora temos duas janelas na sessão; um está rodando top e o outro dmesg . No entanto, só podemos ver um de cada vez (mais sobre isso daqui a pouco).

Propaganda

Dê uma olhada no lado esquerdo da barra de status. Ainda estamos na sessão “geek-1” tmux . Na janela zero, top está rodando, e na janela um, dmesg está rodando. O asterisco (*) após dmesg nos diz qual janela está visível.

Para alternar entre janelas, pressione Ctrl+B e, em seguida, uma das seguintes teclas:

  • N : Exibe a próxima janela.
  • P: Exibe a janela anterior.
  • 0 a 9: Exibe uma janela numerada de 0 a 9.

Você também pode escolher uma janela de uma lista. Se você pressionar Ctrl+B e W, uma lista de janelas será exibida.

Para mover a barra de realce âmbar, pressione as setas para cima ou para baixo, Home ou End. A seção inferior da tela mostra uma visualização do conteúdo na janela destacada.

Pressione Enter para ir para a janela realçada ou Esc para sair da lista de janelas sem alternar.

Desanexando e Anexando Sessões

Se você pressionar Ctrl+B e depois D, você desvinculará a sessão. Ele continuará sendo executado em segundo plano, mas você não poderá vê-lo ou interagir com ele.

Propaganda

Começamos no top da sessão, então temos um processo em execução para demonstrar. Em seguida, pressionamos Ctrl+B e depois D. A sessão desaparece e se torna uma sessão em segundo plano.

Voltamos à janela do terminal original. Há uma mensagem do tmux nos dizendo que a sessão foi desconectada. Também nos lembra o nome que demos à sessão. Isso é útil porque é isso que usamos para anexar a uma sessão em segundo plano e depois restaurá-la para uma sessão interativa.

Para anexar uma sessão desanexada, usaremos o comando autoexplicativo attach-session com a opção -t (sessão de destino). Também forneceremos o nome da sessão que desejamos recuperar.

Digitamos o seguinte:

 tmux anexar-sessão -t geek-1 

Nossa sessão retorna e se torna uma sessão interativa e visível novamente.

Quaisquer processos de execução longa ou contínuos que você iniciou antes de desanexar a sessão ainda estarão sendo executados em segundo plano (a menos que tenham terminado) quando você anexar a sessão.

screen pode fazer isso, mas não tão intuitivamente.

Lidando com várias sessões

Vamos abrir outra janela de terminal e iniciar uma nova sessão tmux chamada “geek-2”:

 tmux new -s geek-2 

Nessa sessão, iniciaremos o dmesg :

 dmesg -w 

Propaganda

Agora, temos nossa sessão tmux “geek-1” original e uma nova chamada “geek-2”.

A barra de status nos mostra que esta sessão é chamada de “geek-2”, e tem uma janela que roda dmesg .

Se pressionarmos Ctrl+B e depois D, desanexamos essa sessão.

Sessão geek-2 do tmux desanexada em um terminal widnow.

De volta à sessão tmux “geek-1”, pressionamos Ctrl+B e depois S para ver uma lista de sessões tmux .

Para ser claro, esta é uma lista de sessões. A exibição semelhante que vimos anteriormente era uma lista de janelas em uma única sessão.

Você pode mover a barra de realce âmbar pressionando as setas para cima e para baixo, Home e End. A seção inferior exibe uma visualização do conteúdo na sessão realçada.

Propaganda

Se você pressionar a seta para a direita, as janelas da sessão realçada serão exibidas.

Pressione Enter para ir para a sessão ou janela realçada ou Esc para sair da lista de sessões sem alterar as sessões. Se você selecionar uma nova sessão, a atual será desvinculada e a que você selecionou será anexada.

Destacamos a sessão “geek-2” antes de fazermos isso. No entanto, você pode fazer isso com sessões que ainda estão conectadas às janelas de terminal originais. Quando você fizer isso, todas as alterações de tela aparecerão simultaneamente em ambas as sessões do tmux .

O comando screen também pode fazer isso por meio de um conjunto semelhante de comandos.

Trabalhando com painéis de janela

Se você pressionar Ctrl+B e depois aspas duplas (“”), você dividirá a janela horizontalmente em dois painéis.

Isso afeta apenas a janela atual; os outros na sessão não serão alterados. Usamos o comando tmux ls no painel superior para listar as janelas nesta sessão. Existem dois, e a linha de status nos diz que estamos na janela um. Se pularmos para a janela zero pressionando Ctrl+B e depois 0 (zero), veremos que ela está exatamente como a deixamos.

Propaganda

Estas são duas linhas de comando independentes, não duas visualizações em uma janela; são conchas distintas e separadas. Podemos mostrar isso executando um comando diferente em cada painel.

Digitamos o seguinte:

uname -a

ls -hl

Para mover de um painel para outro, pressione Ctrl+B e, em seguida, a seta para cima, para baixo, para a esquerda ou para a direita.

Dois comandos diferentes em dois painéis em uma sessão tmux em uma janela de terminal.

Se você pressionar Ctrl+B e, em seguida, o sinal de porcentagem ( %) , ele divide o painel atual verticalmente.

Pressione Ctrl+B e, em seguida, Q para fazer com que o tmux brevemente o número de cada painel.

Esses números são usados ​​em prompts e mensagens do tmux . Pressione Ctrl+B e depois X para fechar o painel atual. A barra de status muda para âmbar e você é solicitado a confirmar que deseja fechar esse número de painel. Pressione Y para remover o painel ou N para deixar as coisas como estão.

Se você pressionar Y, o painel será removido.

Propaganda

O comando screen também possui painéis, mas, novamente, eles são menos intuitivos de usar. O que nos incomoda na screen é que, se você desconectar uma sessão com painéis, eles desaparecem quando você reconecta essa sessão. Isso envelhece muito rapidamente.

Uma folha de dicas Ctrl+B

Incluímos uma folha de dicas dos diferentes comandos que você pode usar no tmux abaixo.

Comandos de sessão

  • S: Listar sessões.
  • $: Renomeia a sessão atual.
  • D: Desanexar a sessão atual.
  • Ctrl+B e depois ?: Exibe a página de Ajuda no tmux .

Comandos da janela

  • C: Crie uma nova janela.
  • ,: Renomeia a janela atual.
  • W: Liste as janelas.
  • N: Mover para a próxima janela.
  • P: Move para a janela anterior.
  • 0 a 9: Move para o número da janela especificado.

Comandos do painel

  • %: cria uma divisão horizontal.
  • “: Crie uma divisão vertical.
  • H ou Seta para a esquerda: Mova para o painel à esquerda.
  • I ou Seta para a direita: Move para o painel à direita.
  • J ou Seta para baixo: Mova para o painel abaixo.
  • K ou Seta para cima: Move para o painel acima.
  • P : Mostra brevemente os números dos painéis.
  • O: Mova-se pelos painéis em ordem. Cada pressionamento leva você para o próximo, até você percorrer todos eles.
  • }: Troque a posição do painel atual com o próximo.
  • {: Troca a posição do painel atual com o anterior.
  • X: Fecha o painel atual.

Como eles se comparam

Em termos de funcionalidade, screen e tmux funcionam de forma semelhante e oferecem os mesmos recursos principais. É a maneira como você acessa esses recursos que é marcadamente diferente. tmux oferece maneiras mais fáceis e confortáveis ​​de acessar as várias funções. No entanto, essa não é a única diferença.

A capacidade de renomear sessões e janelas no tmux é legal, e o fato de reter os painéis quando você reconecta uma sessão é um divisor de águas.

screen , por outro lado, perde completamente os painéis quando você desconecta e reconecta uma sessão. Isso é quase irritante o suficiente para evitar que você se desprenda em primeiro lugar.

Há muito mais no tmux , incluindo seus recursos de script incrivelmente flexíveis. Você deve isso a si mesmo para verificá-lo.

RELACIONADO: Melhores laptops Linux para desenvolvedores e entusiastas