Como ir para a próxima tela na tela

5

Eu tenho 10 telas sendo executadas no modo desanexado. Quando eu faço screen -r pid eu posso ver a saída de um deles. A man page diz que ctrl-a + n vai me mostrar a próxima tela, mas quando eu faço isso diz: No other window.

O que estou perdendo?

    
por P Guardario 17.10.2013 / 05:48

3 respostas

2

A seqüência de teclas é Ctrl + a e então solte as teclas e pressione n .

Sempre me refiro a esta folha de dicas, intitulada: referência rápida da tela .

Se você estiver tentando percorrer as 10 sessões de tela como se fossem janelas, elas não são e não podem ser do meu conhecimento. Uma sessão e uma janela são duas coisas completamente diferentes na terminologia da tela.

    
por 17.10.2013 / 05:59
1

Você pode tentar executar uma sessão screen com várias janelas e configurar cada janela antecipadamente por meio de ~/.screenrc . Aqui está um exemplo de trabalho:

# Automatically running some programs in windows on screen startup.
# The following will open top in the first window, an ssh session to
# monkey in the next window, and then open mutt and tail in windows 8 
# and 9 respectively.

screen top
screen -t monkey ssh monkey
screen -t mail 8 mutt
screen -t daemon 9 tail -f /var/log/daemon.log

Roubou de /etc/screenrc - um monte de exemplos limpos e documentados de screen configs.

    
por 17.10.2013 / 13:45
-1

Você pode fazer isso com um script de shell simples como

    for s in 'screen -ls | grep Detached | grep <regex to your screen names>'; do screen -r $s; done 
  1. Vamos supor que você tenha poucas telas abertas. Vamos também supor que você os tenha categorizado como trabalho e dados.

    for i in {10..13}; do screen -S 'printf data%02d $i'; done;
    for i in {0..5}; do screen -S 'printf work%02d $i'; done;
    ...
    
  2. Aplicando screen -ls , você deve ter suas telas assim

    There are screens on:
        81592.data13    (Detached)
        81539.work04    (Detached)
        81527.work02    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81533.work03    (Detached)
        81488.work00    (Detached)
        81607.ttys014.Mo    (Attached)
        81545.work05    (Detached)
        81580.data11    (Detached)
        81521.work01    (Detached)
        81515.work00    (Detached)
    12 Sockets in /var/folders/qs/cvlbhpr54fnb96vtx01bs9k00000gn/T/.screen.
    
  3. Agora vamos isolar as telas desanexadas usando grep .

    screen -ls | grep Detached
    

Você deve ter algo assim

        81592.data13    (Detached)
        81539.work04    (Detached)
        81527.work02    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81533.work03    (Detached)
        81488.work00    (Detached)
        81545.work05    (Detached)
        81580.data11    (Detached)
        81521.work01    (Detached)
        81515.work00    (Detached)
  1. Agora, selecione os que você deseja (por exemplo, dados), novamente usando grep .

    screen -ls | grep Detached | grep data
    

Isso isolará apenas as telas de dados. Você pode alterar a palavra-chave grep com expressões regulares para pesquisar para personalizar sua pesquisa.

        81592.data13    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81580.data11    (Detached)
  1. Felizmente, o resultado é bem estruturado e delimitado por tabulações. Agora vamos dividir as colunas em campos e escolher o segundo campo usando cut .

    screen -ls | grep Detached | grep data | cut -d'       ' -f2
    

Você precisará pressionar a guia ctrl+v para inserir um tab após o parâmetro delimitador -d . Os resultados devem ser assim.

81592.data13
81586.data12
81574.data10
81580.data11
  1. Agora coloque isso em um comando usando as ... quotes e faça um loop sobre os resultados como este. Sempre verifique os comandos formulados primeiro antes de executá-lo. Eu usei echo screen -r

    for s in 'screen -ls | \
    grep Detached | grep data | \
    cut -d'     ' -f2'; do \
        echo screen -r $s; \
    done
    
  2. Se tudo correr bem, tente sem echo .

    for s in 'screen -ls | \
    grep Detached | grep data | \
    cut -d'     ' -f2'; do \
        screen -r $s; \
    done
    
  3. Voila. Cada tela que você separa leva você para a próxima.

Feliz exibição !!

    
por 29.11.2017 / 17:14

Tags