#!/bin/sh # sn - select numbered screen # Andrew Ho (andrew@tellme.com) # # See http://www.zeuscat.com/andrew/software/desktop_hacks/#named-screens # for some background information about how I use this script. ME=`basename "$0"` USAGE="usage: $ME screen-number" if [ "$#" -ne 1 ]; then echo "$ME: required screen number argument missing" 2>&1 echo "$USAGE" 2>&1 exit 1 fi if [ "x$1" = "x" ]; then echo "$ME: invalid empty screen number argument" 2>&1 echo "$USAGE" 2>&1 exit 1 elif [ ! "$1" -gt 0 ]; then echo "$ME: invalid screen number argument: $1" 2>&1 echo "$USAGE" 2>&1 exit 1 fi tmpfile="/var/tmp/$ME.tmp.$$" screen -list | awk '/(Attached|Detached)/ { print $1 }' | sort -n > "$tmpfile" if [ ! -f "$tmpfile" ]; then echo "$ME: could not create $tmpfile" 2>&1 exit 2 fi screenid="sn$1" if grep "$screenid" "$tmpfile" ; then rm -f "$tmpfile" echo "$ME: reattaching to screen $screenid (detaching others)" 2>&1 exec screen -x "$screenid" else rm -f "$tmpfile" echo "$ME: creating new screen $screenid" 2>&1 exec screen -S "$screenid" fi