Julian
Julian

Reputation: 395

quickly switch between gnu screens

I would like to quickly switch between different gnu screen sessions (not windows). Right now I can detach from one session with screen -d and reattach to the next one with screen -r <sessionname>, but is there not a way to do this in one command? Something like screen -d && screen -r <sessionname>?

Upvotes: 1

Views: 243

Answers (2)

Chris Johnson
Chris Johnson

Reputation: 21956

This is easy enough to do via a utility script:

#!/usr/bin/env bash

set -eu
set -o pipefail
unset CDPATH
: "${BASH:?bash shell is required}"


screen -ls || true

for s in $(screen -ls | tail -n +2 | head -n -2 | sort -R | cut -f2)
do
    read -n 1 -s -r -p '[y/n] switch to '"$s"'?' REPLY
    if [[ "$REPLY" == "y" ]]
        then
            screen -DR "$s"
        else echo
    fi
done

Save that on your path as cycle-screen and make it executable. Usage example:

There are screens on:
    43094.27    (Detached)
    47415.12    (Attached)
    54922.31    (Detached)
3 Sockets in /var/folders/r5/7_prvssx301dyz4jz2pbky5w0000gn/T/.screen.

[y/n] switch to 54922.31?

Type y to enter the screen named in the prompt, or anything else to skip over it. When you leave the screen (via ^a^d, ^d, exit or whatever) you get the prompt for the subsequent screen.

Upvotes: 1

gutierri
gutierri

Reputation: 87

No, unfortunately there is no such thing on the GNU Screen.

Upvotes: 0

Related Questions