arr=($(screen -ls | egrep -o '\t.+\t' | sort -n))
Сломать:
arr=($(...)): присваивает серии разделенных пробелами значений индексированный массив, например, arr=($(1 2 three 4)) определяет $arr[0]=1 , $arr[1]=2 , $arr[2]=three и $arr[3]=4 .
screen -ls: базовая функция, выход которой должен быть отфильтрован. Это выводит следующие (примерные) строки:
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.
Обратите внимание, что пробелы в строках, содержащих подробности сеанса, представляют собой столбцы с разделителями табуляции.
egrep -o '\t.+\t': выбирает только выходные данные в каждой строке, которые находятся между двумя символами табуляции (включая вкладки). Это изолирует строки pid.tty.host .
sort -n: сортировка каждой строки по числовому порядку, от наименьшего pid к наибольшему pid.
Полученный массив содержит идентификаторы pid.tty.host для каждого сеанса экрана (как присоединенного, так и отсоединенного), с $arr[0] содержащим сеанс, который начался первым, до $arr[n-1] содержащим n- й сеанс, началось совсем недавно.