[sf-lug] Fwd: stderr and stdout, merged in a single file, in different colors
Asheesh Laroia
asheesh at asheesh.org
Sun Sep 28 00:51:18 PDT 2008
On Sat, 27 Sep 2008, Jeffrey Malone wrote:
> Definitely not part of any standard tool set I know.
If you read to the bottom of my
http://www.asheesh.org/note/software/stderred.html you'll see it's a
fairly straight-forward trick in zsh. (-;
> It is possible, in a round-about way, to get what you want:
>
> You need to write a utility that does this, and it's not foolproof.
>
> For my example, let's say you have a program called "logtest" that
> takes 2 arguments.
> The first identifies a string that tells the program which lines are
> stdout (and all others are then stderr). Let's say for this test all
> stdout lines will have a \t prepended.
> The second is say the logfile name to write to.
>
> Okay, and say "blah" is the program you want to log like this:
>
> (./blah | sed s:^:\\t: ) 2>&1 | logtest "\t" test.log
Oh, if you're doing that, you could have sed insert the colorizing control
codes!
And if you're allowed to change the program doing the outputting, heck -
that program could itself print the colorizing control codes! (-:
> Another, perhaps crazy idea, is a wrapper program. It starts the
> child process with say popen, gets its pid, and then makes a fd for
> /proc/pid/fd/2. A select loop could then work...
> You could also just use fifos and a tool with a select loop:
> mkfifo stderr
> mkfifo stdout
> ./blah >stdout 2>stderr
> And then with a select loop, open stderr and stdout and watch for incoming data.
>
>
> If there's a more eloquent way of doing this, I'd be quite interested
> to hear it..
Well I'd be happy to hear what you make of my LD_PRELOAD crazy idea.
(Does that count as "standard unix power techniques"?)
-- Asheesh.
P.S. Context-switches are expensive. Ask me about salsamixer sometime.
--
Always do right. This will gratify some people and astonish the rest.
-- Mark Twain
More information about the sf-lug
mailing list