Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Tee all output to log file?



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

Attachment: signature.asc
Description: This is a digitally signed message part.



Messages sorted by: Reverse Date, Date, Thread, Author