coluna do aurelio 07: screen (janelizando o modo texto - parte 1)

https://aurelio.net/doc/coluna

Escrito por Aurelio Jargas em 2001-04-12

olás. como começar a escrever sobre o screen? ele tem tantas vantagens e seu uso pode ser para tantos fins diferentes que realmente é difícil encontrar um ponto de partida. por definição, ele é um gerenciador de console que cria "janelas" e permite toda sorte de facilidades e interações entre elas, como alternar, copiar, colar, monitorar, capturar, travar, dividir, redimensionar, interromper, guardar, restaurar e destruir.

então com apenas um acesso ("login") na máquina, você pode ter várias janelas, independentes, cada uma com seu próprio ambiente, como no X. o efeito é parecido com ter várias seções abertas nos alt+F1, alt+F2 da vida, mas sem precisar ficar informando usuário e senha a cada seção nova e com possibilidade de interação total entre elas.

essa "janela", não é gráfica ou visual, portanto o modo texto continua o mesmo de sempre, em tela cheia. se preferir, você pode sacrificar a última linha da tela para ter uma "barra de tarefas", podendo colocar nela a data, horário, informações de consumo de memória e CPU da máquina, e nomes para cada janela criada. vale a pena, é muito útil.

bem, vamos dar uma brincada com ele então? a página do programa está em http://www.gnu.org/software/screen, mas ele também vem com a grande maioria (todas?) das distribuições de linux, procure na sua. instalado o programa, simplesmente o chame na linha de comando:

$ screen

apareceu uma tela de boas-vindas. aperte ENTER. pronto, este é o screen! apareceu nada? então está certo &:) como já dito, ele é tela cheia, então não interfere na aparência de seu console, mas já está funcionando. para saber os comandos mais usados, digite ctrl+a ?. este ctrl+a é a tecla-chave do screen e precede todos os seus comandos. esta combinação será referenciada como ^a daqui adiante, então ^a ? é a ajuda, use-a sempre que precisar.

primeiramente, para ficar mais "visual" o processo de criação e troca de janelas, vamos colocar a "barra de tarefas". como o vi, o screen tem uma linha de comando própria, para aceitar comandos literais ou que recebem parâmetros, invocada pelo comando :. então, primeiro chame a linha de comando com o ^a : (veja a linha láááá embaixo) e digite hardstatus alwayslastline "%c %w". agora temos uma barra permanente com o horário e as janelas abertas, por enquanto apenas uma "0* bash", sendo zero o número da janela, o asterisco indica que é esta a janela ativa e "bash" é o nome desta janela.

para Criar uma janela nova, ^a c. note que ela apareceu na barra lá embaixo também, com o número 1 e com o mesmo nome da janela anterior. para não confundir, vamos trocar o nome desta janela: ^a A (note que é um "a" maiúsculo), e aparecerá um prompt para você digitar o nome novo da janela, suponhamos "www", e nesta janela você chama o lynx para navegar.

para Alternar entre duas janelas (igual com os canais da tv), ^a ^a. este além de útil no uso diário é bom para se ter um diff bem visual entre dois arquivos, abrindo um em cada janela e simplesmente segurando o ^a até cansar.

crie uma terceira janela ^a c, e a nomeie como "email" por exemplo. agora vamos ver mais de uma janela simultaneamente na tela ("Split"), apertando ^a S para dividir a tela em 2 partes. para mais partes, siga apertando ^a S até se satisfazer. ao dividir a tela, a janela atual fica na parte de cima e na parte debaixo, NÃO há janelas, ela se inicia vazia. então vamos com o cursor para a parte de baixo ^a TAB e colocar a janela do lynx (que tem número 1) nela ^a 1. quer voltar para a parte superior? ^a TAB novamente.

se por acaso você apertou por engano ^a s, com o "s" minúsculo, verá que a tela "congelou". basta apertar ^a q pra ela se descongelar. esta é a função de "scroll lock", igual como apertar a tecla de mesmo nome do teclado. ela é praticamente inútil pois o próprio ctrl+s já faz isso (além de existir a tecla física), então podemos anular este comando para evitar apertá-lo sem querer: ^a :bind s, ou ainda redefini-lo para outra função qualquer: ^a :bind s help. e assim pode-se anular ou redefinir qualquer outro comando. e note que ao consultar a ajuda, suas redefinições aparecerão lá!

para voltar à tela cheia, ^a Q "maximizará" a tela ativa, voltando à condição anterior à da divisão. cada janela desaparecerá normalmente quando você der o "logout" do shell, ou para forçar, ou melhor dizer, "matar" uma janela, ^a k. muito útil caso você tenha rodado algum programa que travou na tela. ao invés de ir numa outra console, ter que descobrir o PID dele e dar um kill -9, simplesmente mate a janela e tudo o que estiver rodando (ou zumbi) nela será morto também.

ao sair da última janela, o screen também se encerrará e você volta ao shell normal. ou melhor ainda, o screen conta com o recurso de guardar uma seção, então você pode começar a baixar aquele arquivo gigantesco da internet no trabalho, guardar a seção do screen ("Detach") ^a d, sair com seu usuário do sistema normalmente ("logout"), e dia seguinte, como todos os dias, você acessa o sistema ("login") e Restaura a seção screen do dia anterior:

$ screen -r

mágica! os processos continuaram rodando durante a noite mesmo você não estando na máquina. essa funcionalidade de guardar e restaurar a seção é com certeza uma das melhores do screen, e útil em várias situações onde você não pode estar o tempo todo acessando a máquina. se houver mais de uma seção guardada, um screen -ls lhe listará as disponíveis.

e como última dica de hoje, para capturar a tela toda e gravar em um arquivo, ^a h. o nome do arquivo gravado aparecerá no rodapé, algo como "hardcopy.1".

há listas de discussão em português (screen-br@yahoogroups.com) e em inglês (gnu-screen@yahoogroups.com) para usuários iniciantes e gurus.

na próxima coluna a continuação com dicas avançadas de uso, como copiar e colar texto sem o mouse, fazer monitoração de janelas, rodar programas automaticamente e ter um ~/.screenrc incrementado.