How do I tell when my CLI output is piped?

D

David Landrith

I've written several simple command line tools in ruby to display
standard reports. These are all placed in the PATH, so that they can
be executed like this:

jobstatus.rb -j1233

to show the status for job 1233 (I'm using the getoptlong library.)
The default output is in fixed width, ASCII character built tables
(e.g., | for vertical line, - for horizontal line, and + for corners).
I'd like to be able to automatically sense when the output is being
piped to somewhere else, so that I can automatically make the report
switch to a tab delimited format a la the mysql command line client.
This, for example, allows for much easier use of command line tools
such as cut, uniq, sort, etc.

I've tried trapping signal 13 (SIGPIPE) and this doesn't work. In
fact, I've tried trapping every signal from 0 to 64; 26 throws an
error, 0 executes on exit (of course), but none of them seem to
register for any kind of pipe; viz., '<', '>', and '|' all fail to pass
a signal to the ruby program.

Am I doing something wrong here, or am I going about this entirely the
wrong way?

Best,

Dave
-------------------------------------------------------
David King Landrith
(w) 617.227.4469x213
(h) 617.696.7133

One useless man is a disgrace, two
are called a law firm, and three or more
become a congress -- John Adams
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,521
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top