Re: multi-window searching, newer screen versions

Aaron Davies <[email protected]>
Newsgroups gmane.comp.gnu.screen.user
Message-ID <[email protected]>
On Aug 13, 2011, at 4:46 AM, Artur Skonecki wrote:

> #!/bin/sh
> # screen_hardcopy.sh
> # print window scrollbacks from all GNU Screen sessions
> # it breaks when session names contain spaces *sigh*
> 
> SCREENDIR=/tmp/screens/S-$USER
> HARDCOPYDIR=/tmp/screen-hardcopy-$USER
> 
> mkdir -p $HARDCOPYDIR
> 
> for session in $SCREENDIR/*
> do
>    session=$(basename "$session")
>    mkdir -p "$HARDCOPYDIR/$session"
>    screen -S "$session" -X eval "hardcopydir '$HARDCOPYDIR/$session'" "at '\#' hardcopy -h"
> done
> 
> for session in $SCREENDIR/*
> do
>    session="$(basename "$session")"
>    for hardcopy in $HARDCOPYDIR/$session/*
>    do
>        winnum=$(echo "$(basename $hardcopy)" | cut -d '.' -f 2)
>        sed "s/.*/$session : $winnum &/" "$hardcopy"
>        rm "$hardcopy"
>    done
>    rmdir "$HARDCOPYDIR/$session"
> done
> 
> rmdir "$HARDCOPYDIR"

nice first cut, but doesn't work on the stock copy of screen apple ships with snow leopard macs (Screen version 4.00.03 (FAU) 23-Oct-06)

first problem is session files go in some pseudo-secure /var space with a randomized name; i hacked up this to find them:

case $(uname) in
   Darwin) SCREENDIR=$(for w in $(screen -ls|tr -d \\r|cat -v|grep .|tail -1); do echo $w; done|tail -1|sed 's/.$//');;
   *)      /tmp/screens/S-$USER;;
esac

(why on earth are there CRs in the output of "screen -ls"?!?)

second is that this screen wants "at" to take an argument of "#", not "\#"

third is that this screen interprets "hardcopy -h" as "write a hardcopy of the current screen (without scrollback) to a file named "-h" (relative to screen's pwd). i'm not entirely sure how to fix that one, as i'm not sure how to get the number of windows in a screen back out to the script. (otherwise the brute-force way would be to iterate over them, generating the name variations myself.)

(i was originally going to try to fix the spaces issue, but got stuck on getting it to work at all....)
-- 
Aaron Davies
[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.