Reply to message «Re: Tee all output to log file?», sent 20:28:13 02 February 2011, Wednesday by Benjamin R. Haskell: > && exec env doinglogging=true ... I used to write this as «doinglogging=true exec ...» or with doinglogging=true exec ... Any reason why env command should envoked here I am not aware of? Original message: > 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