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
-
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;
...
-
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.
-
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)
-
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)
-
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
-
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
-
Se tudo correr bem, tente sem echo
.
for s in 'screen -ls | \
grep Detached | grep data | \
cut -d' ' -f2'; do \
screen -r $s; \
done
-
Voila. Cada tela que você separa leva você para a próxima.
Feliz exibição !!