coluna do aurélio 07 screen (janelizando o modo texto - parte 1) http://aurelio.net/doc/coluna 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. -- este texto pode ser copiado livremente na íntegra ou em parte, desde que indicado o endereço do original: http://aurelio.net/doc/coluna