Como calcular a saída da tela -ls?

0

tudo. Como posso escrever todas as sessões em um array? (tela -ls) ou seja:

23257.name_session1 (25/06/2017 10:41:18 PM) (Separado)

22011.name_session2 (25/06/2017 07:50:33 PM) (Separado)

arr [0] = 23257.name_session1;

arr [1] = 22011.name_session2;

exemplo comandos: screen -ls | grep -oP '\ d +. \ S +' | grep -oP '(? < = \ d.) \ S +'

    
por user742218 25.06.2017 / 23:03

1 resposta

0

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.

    
por 28.01.2018 / 02:51