arr=($(screen -ls | egrep -o '\t.+\t' | sort -n))
Divisão:
arr=($(...)) : Atribui uma série de valores delimitados por espaço em branco a uma matriz indexada, por exemplo, arr=($(1 2 three 4)) define $arr[0]=1 , $arr[1]=2 , $arr[2]=three e $arr[3]=4 .
screen -ls : A função base cuja saída deve ser filtrada. Isso gera as seguintes linhas (exemplo):
There are screens on:
79481.ttys000.macbook (Detached)
80513.ttys004.macbook (Attached)
79513.ttys002.macbook (Detached)
3 Sockets in /var/folders/ht/0ty_c8mx16v69csh949g3rvr0000gn/T/.screen.
Observe que o espaço em branco nas linhas que contêm os detalhes da sessão são colunas delimitadas por tabulação.
egrep -o '\t.+\t' : Seleciona apenas a saída em cada linha que fica entre dois caracteres de tabulação (inclui as guias). Isso isola as strings pid.tty.host .
sort -n : Classifique cada linha por ordem numérica, desde o menor pid até o maior pid.
A matriz resultante contém os identificadores pid.tty.host para cada sessão de tela (anexada e desanexada), com $arr[0] contendo a sessão iniciada primeiro, até $arr[n-1] contendo o n th sessão, iniciada mais recentemente.