Запускайте оболочку с tmux и прикрепляйте только к сеансу, если он не прикреплен

Мои выкрутасы:

  • pure awk

    awk 'BEGIN{for(;n<31;)print ++n"|"n","}'
    
  • printf + xargs

    printf '%s\n' {0..31} | xargs -I {} echo "{}|{},"
    
  • repeat loop in zsh

    n=0; repeat 32 echo "$n|$((n++)),"
    
2
04.10.2018, 22:03
1 ответ

Я думаю, вы можете добиться того, что ищете, используя соответствующий формат с tmux list-sessionи анализируя вывод:

if [ -z "$TMUX" ]; then
    attach_session=$(tmux 2> /dev/null ls -F \
        '#{session_attached} #{?#{==:#{session_last_attached},},1,#{session_last_attached}} #{session_id}' |
        awk '/^0/ { if ($2 > t) { t = $2; s = $3 } }; END { if (s) printf "%s", s }')

    if [ -n "$attach_session" ]; then
        tmux attach -t "$attach_session"
    else
        tmux
    fi
fi

Приведенный здесь формат для tmux lsдает для каждого сеанса количество подключенных клиентов, время последнего подключения (или 1, если оно никогда не подключалось ранее, например, после tmux new -d), и идентификатор сеанса. Сценарий AWK использует эту информацию для поиска самого последнего подключенного сеанса без подключенных в данный момент клиентов и выводит его идентификатор. Затем мы либо присоединяемся к этому сеансу, либо создаем новый, если такой сеанс не найден, например, когда сервер не запущен или все существующие сеансы подключены.

4
27.01.2020, 22:08

Теги

Похожие вопросы