On Wed, 2 Feb 2011, ZyX wrote: > Reply to message «Tee all output to log file?», > sent 02:41:26 02 February 2011, Wednesday > by Benjamin R. Haskell: > >> Is there something straightforward that I'm overlooking? Is there a >> commonly used utility for this? (`script` comes to mind, but I >> recall klunkiness when trying it in the past.) > If you don't like script, maybe you should try screen: > > (( $+logfile )) && \ > exec screen -L -c =(echo "logfile $logfile") -m -S script-$0 $0 $@ I find `screen` even more annoying than `script` for scripting purposes, wonderful though it is for interactive use. I really just want the redirection, not the many extra features that `screen` adds. Adding > Does anybody know, why it does not work when I start screen in detached mode? Cf. above annoyance. For doing something with Vim under Apache (using :TOhtml), I recently resorted to this hackery: screen -q -d -m -S $sessionname vim -u NONE -N +'so $scriptname' (Then, loop, waiting for one of: 1: the Vim script to touch a marker file that indicated completion 2: a specified timeout, in case something errored out, preventing a clean Vim exit ) screen -X -S $sessionname quit Despite my annoyance (I'm easily annoyed), I tried your above suggestion. It didn't capture stderr, so I added a flag that logging was in progress and added a redirect for it (also added '-q' to the `screen` commands): (( $+logfile && ! $+doinglogging )) \ && exec env doinglogging=true screen -L -c =(echo "logfile $logfile") -q -m -S script-$0 $0 $@ (( $+doinglogging )) && exec 2>&1 Seems okay for what I'm doing. Thanks, Ben