REFERÊNCIA RÁPIDA DE GNU SCREEN
Sessões, janelas, divisões, modo de cópia e compartilhamento
Gerenciamento de Sessões
Criar e Listar Sessões
screen # new unnamed session
screen -S work # new session named "work"
screen -ls # list all sessions
screen -list # same as -ls
Comandos de Sessão
| screen -S name | Iniciar nova sessão nomeada |
| screen -r name | Reconectar à sessão desanexada |
| screen -x name | Conectar à sessão já conectada (compartilhar) |
| screen -d name | Desanexar sessão remota |
| screen -d -r name | Desanexar de outro lugar, reconectar aqui |
| screen -D -RR | Forçar desanexação e reconexão (agressivo) |
| screen -ls | Listar todas as sessões com PIDs |
| screen -wipe | Limpar sessões mortas |
Janelas
Noções Básicas de Janelas
| Ctrl-a c | Criar nova janela |
| Ctrl-a n | Próxima janela |
| Ctrl-a p | Janela anterior |
| Ctrl-a 0-9 | Alternar para janela por número |
| Ctrl-a " | Listar todas as janelas (interativo) |
| Ctrl-a ' | Alternar para janela por nome/número |
| Ctrl-a A | Renomear janela atual |
| Ctrl-a k | Fechar janela atual |
Gerenciamento de Janelas
| Ctrl-a w | Mostrar lista de janelas na barra de status |
| Ctrl-a Ctrl-a | Alternar entre as duas últimas janelas |
| Ctrl-a N | Mostrar número e nome da janela |
| exit / Ctrl-d | Fechar janela (sair do shell) |
Divisões e Regiões
Comandos de Divisão
| Ctrl-a S | Dividir horizontalmente (cima/baixo) |
| Ctrl-a | | Dividir verticalmente (esquerda/direita) |
| Ctrl-a Tab | Mover foco para a próxima região |
| Ctrl-a X | Fechar região atual |
| Ctrl-a Q | Fechar todas as regiões exceto a atual |
Fluxo de Trabalho com Regiões
Ctrl-a S # split horizontal
Ctrl-a Tab # move to new region
Ctrl-a c # create window in region
Ctrl-a :resize 20 # set region to 20 lines
Modo de Cópia
Rolagem e Cópia
| Ctrl-a [ | Entrar no modo de cópia/rolagem |
| Space | Iniciar/finalizar seleção (no modo de cópia) |
| Enter | Copiar seleção e sair do modo de cópia |
| Ctrl-a ] | Colar texto copiado |
| h/j/k/l | Mover cursor (teclas vi no modo de cópia) |
| Ctrl-u / Ctrl-d | Rolar meia página acima/abaixo |
| / or ? | Buscar para frente/trás |
| Esc | Sair do modo de cópia |
Fluxo de Cópia
Ctrl-a [ # enter copy mode
Space # mark start (navigate first)
Space # mark end + copy (navigate first)
Ctrl-a ] # paste into current window
Desanexar e Reconectar
Desanexar
| Ctrl-a d | Desanexar sessão atual |
| Ctrl-a D D | Desanexar e sair |
| Ctrl-a z | Suspender screen (como Ctrl-Z) |
| screen -d PID | Desanexar sessão remotamente por PID |
Reconectar
screen -r # reattach (if only one session)
screen -r work # reattach by name
screen -r 12345 # reattach by PID
screen -d -r work # steal session from other terminal
Fluxos de Trabalho Persistentes
# Start long-running task, detach, reconnect later
screen -S build
make -j4 all # start build
Ctrl-a d # detach, go home
screen -r build # reattach later
Compartilhamento
Modo Multi-Usuário
# Host enables multiuser
Ctrl-a :multiuser on
Ctrl-a :acladd alice # grant access to user alice
# Alice attaches
screen -x hostuser/sessionname
Controle de Acesso
| :multiuser on | Habilitar modo multi-usuário |
| :acladd user | Conceder acesso total ao usuário |
| :aclchg user -w '#' | Tornar usuário somente leitura (todas as janelas) |
| :acldel user | Remover acesso do usuário |
| screen -x user/sess | Conectar à sessão compartilhada |
Configuração
Essenciais do ~/.screenrc
startup_message off # skip splash screen
defscrollback 10000 # scrollback buffer lines
hardstatus alwayslastline
hardstatus string '%{gk}%H %{wk}%?%-Lw%?%{bw}%n*%f %t%{wk}%?%+Lw%?'
shell -$SHELL # use login shell
Configurações Úteis
| startup_message off | Suprimir mensagem de inicialização |
| defscrollback N | Definir buffer de rolagem (padrão 100) |
| escape ^Bb | Mudar tecla de prefixo para Ctrl-b |
| shelltitle '$ |bash' | Definir títulos de janela automaticamente |
| caption always '%n %t' | Sempre mostrar legenda com info da janela |
| autodetach on | Desanexar automaticamente ao desconectar (padrão ativado) |
| vbell on | Usar sino visual em vez de sonoro |
Padrões Comuns
Configuração de Desenvolvimento
# Auto-create windows in .screenrc
screen -t editor 0 vim
screen -t server 1 python -m http.server
screen -t shell 2 bash
select 0 # start on editor window
Log e Monitoramento
Ctrl-a H # toggle logging to screenlog.N
Ctrl-a M # monitor window for activity
Ctrl-a _ # monitor window for silence
Referência Rápida
| Ctrl-a ? | Mostrar todos os atalhos de teclado |
| Ctrl-a :help | Ajuda integrada |
| Ctrl-a :source file | Carregar arquivo de configuração |
| Ctrl-a :screen cmd | Executar comando em nova janela |
| Ctrl-a :quit | Fechar todas as janelas e sair da sessão |