Gerenciando sessões e janelas no terminal com GNU Screen
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
How to use GNU SCREEN (video)

Excelente!
Muito bom!