Gerenciando sessões e janelas no terminal com GNU Screen

Last modified date

Comments: 2

Multiplexadores de terminal são ferramentas que permitem gerenciar múltiplas sessões (de um terminal).

As sessões são um conjunto de janelas. Uma analogia pertinente é considerar que uma sessão seja como um espaço de trabalho em ambiente desktop, e cada janela como se fosse um programa dentro de um espaço. A multiplexação de terminal funciona por este mesmo conceito, mas dentro de um terminal. Além disso, as sessões de um multiplexador podem ser desconectadas e recuperadas posteriormente.

Os multiplexadores são populares em servidores, acessados remotamente, onde pode ser necessário preservar sessões mesmo que o administrador se desconecte dele. Entretanto, também podem ser úteis para uso doméstico:

  • Funcionalidade de ‘abas’ em qualquer terminal, mesmo os que não implementam essa funcionalidade (por exemplo, o Alacritty)
  • Funcionalidade de ‘scroll’ também em qualquer terminal
  • Layout de janelas da sessão (divisão horizontal ou vertical)
  • Salvar uma sessão em um terminal, restaurar em outro ou deixar o terminal livre para ser fechado

Neste post, vou apresentar o multiplexador GNU Screen. Eu o utilizo para executar processos temporários, mas long-running, como servidores de desenvolvimento (Django, node, Jupyter notebook) e poder liberar o terminal, sem criar serviços de sistema. E também para usar múltiplas janelas no Alacritty.

Instalação

O Screen pode ser instalado no Debian pelo apt: sudo apt install screen e executado pelo comando screen. Será apresentada uma tela de boas-vindas, e logo após estará pronto para uso.

Por padrão, não há nenhuma indicação visual de que o Screen esteja executando. Não há uma linha de status mostrando as janelas, por exemplo. Mas isso pode ser configurado no arquivo ~/.screenrc com as linhas:

hardstatus on
hardstatus alwayslastline
hardstatus string "%{= kG}%-w%{= KW}%n %t%{-}%+w"

Uso interativo

O Screen possui uma tecla prefixo para comandos, que é C-a (Ctrl+a). Para ver a lista completa de combinação de teclas, pressione C-a ?. As combinações que eu considero mais úteis são:.

Combinação de teclas Descrição
C-a c Nova janela
C-a [num] Alternar para a janela número [num]
C-a " Selecionar janelas a partir de uma lista
C-a | Divisão vertical
C-a S Divisão horizontal
C-a d Desvincular sessão do terminal
C-a k Fechar a janela atual
C-a \ Encerrar a sessão inteira
C-a A Alterar o título da janela
C-a n Alternar para a janela seguinte
C-a p Alternar para a janela anterior
C-a TAB Alternar entre regiões das divisões
C-a X Fechar a região atual
C-a ESC Modo ‘copy’
C-a ? Ajuda

Ao invés de combinações de teclas, os comandos também podem ser executados pelo nome através do colon (modo de comando), ativado pela combinação C-a :. Neste modo, é possível digitar o nome do comando, como title para alterar o título da janela.

O modo ‘copy’ habilita a movimentação na janela do terminal usando as teclas vim. Até onde sei, não há uma ajuda interna com as teclas disponíveis no copy-mode, mas o manual tem a lista completa.

Linha de comando

Após desvincular a sessão do terminal (C-a d), é possível utilizar a linha de comando do Screen das seguintes formas:

screen -ls: Mostra as sessões criadas
screen -S [nome]: Cria uma nova sessão chamada [nome]
screen -r [nome]: Vincula novamente uma sessão desvinculada, [nome] pode ser apenas os caracteres iniciais

Outras opções mais avançadas podem ser vistas no manual: man screen.

Configuração

O Screen pode ser configurado através do arquivo .screenrc. Um exemplo com as configurações padrão pode ser encontrado em /usr/share/doc/screen/examples/screenrc. O mais importante seria ter uma linha hardstatus informativa, como visto na seção de instalação.

Conclusão

Multiplexadores de terminal são úteis para aumentar a eficiência e controle ao trabalhar na linha de comando. Permitem organizar sessões e janelas por contexto, desvincular as sessões do terminal e dividir a tela e alternar entre múltiplos painéis.

Referências

Manual do Screen

How to use GNU SCREEN (video)

2 Responses

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Post comment