Comment calculer la sortie de screen -ls?

0

tout. Comment puis-je écrire toutes les sessions dans un tableau? (screen -ls) c'est-à-dire:

23257.name_session1 (06/06/2017 22:41:18) (Détaché)

22011.name_session2 (06/06/2017 19:50:33) (Détaché)

arr [0] = 23257.name_session1;

arr [1] = 22011.name_session2;

Exemple de commandes: screen -ls | grep -oP '\ d +. \ S +' | grep -oP '(? <= \ d.) \ S +'

utilisateur742218
la source

Réponses:

0
arr=($(screen -ls | egrep -o '\t.+\t' | sort -n))

Panne:

arr=($(...)): Affecte une série de valeurs séparées par des espaces à un tableau indexé, par exemple , arr=($(1 2 three 4))définit $arr[0]=1, $arr[1]=2, $arr[2]=three, et $arr[3]=4.

screen -ls: Fonction de base dont la sortie doit être filtrée. Cela génère les lignes suivantes (exemple):

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.

Notez que les espaces sur les lignes contenant les détails de la session sont des colonnes délimitées par des tabulations.

egrep -o '\t.+\t': Sélectionne uniquement la sortie sur chaque ligne comprise entre deux caractères de tabulation (inclut les tabulations). Cela isole les pid.tty.hostchaînes.

sort -n: Triez chaque ligne par ordre numérique, du plus petit pid au plus grand pid.

Le tableau résultant contient les pid.tty.hostidentifiants de chaque session d'écran (à la fois attachés et déconnectés), avec $arr[0]la session qui a commencé en premier, jusqu'à $arr[n-1]la n- session, qui a commencé le plus récemment.

CJK
la source