Danny
Danny

Reputation: 2291

Pipe direct tty output to sed

I have a script using for a building a program that I redirect to sed to highlight errors and such during the build.

This works great, but the problem is at the end of this build script it starts an application which usually writes to the terminal, but stdout and stderr redirection doesn't seem to capture it. I'm not exactly sure how this output gets printed and it's kind of complicated to figure out.

buildAndStartApp # everything outputs correctly
buildAndStartApp 2>&1 | colorize # Catches build output, but not server output

Is there any way to capture all terminal output? The "script" command catches everything, but I would like the output to still print to my terminal rather than redirecting to a file.

Upvotes: 0

Views: 565

Answers (2)

Danny
Danny

Reputation: 2291

I found out script has a -c option which runs a command and all of the output is printed to stdout as well as to a file.

My command ended up being:

script -c "buildAndStartApp" /dev/null | colorize

Upvotes: 1

Mark Reed
Mark Reed

Reputation: 95315

First, when you use script, the output does still go to the terminal (as well as redirecting to the file). You could do something like this in a second window to see the colorized output live:

tail -f typescript | colorize

Second, if the output of a command is going to the terminal even though you have both stdout and stderr redirected, it's possible that the command is writing directly to /dev/tty, in which case something like script that uses a pseudo-terminal is the only thing that will work.

Upvotes: 0

Related Questions