How to set font color for STDIN,STDOUT and STDERR?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users How to set font color for STDIN,STDOUT and STDERR?
# 1  
Old 07-27-2011
MySQL How to set font color for STDIN,STDOUT and STDERR?

I want to differentiate the STDOUT and STDERR messages in my terminal .
If a script or command is printing a message in terminal I want to differentiate by colors,
Is it possible ?


Example:
Code:
$date
Wed Jul 27 12:36:50 IST 2011
$datee
bash: datee: command not found
$alias ls
alias ls='ls --color=auto -F '
$aliass ls
bash: aliass: command not found


Last edited by ungalnanban; 07-27-2011 at 06:00 AM..
# 2  
Old 07-27-2011
The terminal can't tell what's printing to standard output vs standard error -- they both go to literally the same file. You could intercept standard error with a fifo and process it...
Code:
#!/bin/bash

# On exit, close stderr and delete the fifo so we don't leave dangling background processes.
trap "exec 2<&- ; rm ~/.tmpfifo" EXIT

rm -f ~/.tmpfifo

mkfifo ~/.tmpfifo
# Create a subshell that reads from fifo, writes to stderr.
# it gets its own copy of stderr, so redirecting stderr later won't change this.
(       while read LINE
        do
                printf "\x1b[01;31m%s\x1b[01;m\n" "$LINE"
        done < ~/.tmpfifo ) &

exec 2>~/.tmpfifo

# Thing that should print standard error in red
touch /

Code:
$ ./errfilter.sh
touch: setting times of `/': Permission denied
$

This only works for scripts, not for interactive terminals, because bash frequently uses stderr for its own things when in interactive mode.

---------- Post updated at 10:27 AM ---------- Previous update was at 10:11 AM ----------

Actually, here's a way that'll work in interactive mode:

Code:
trap "exec 5>~/.tmpfifo-$$ ; rm -f ~/.tmpfifo-$$ ; exec 5<&-" EXIT

mkfifo ~/.tmpfifo-$$

(       while [ -e ~/.tmpfifo-$$ ]
        do
                while read LINE
                do
                        printf "\x1b[01;31m%s\x1b[01;m\n" "$LINE"
                done < ~/.tmpfifo-$$ >&2
        done
 ) &

function err
{
        "$@" 2>/.tmpfifo-$$
}

Do this in your shell:
Code:
$ source errfilter.sh
$ err touch /
touch: setting times of `/': Permission denied
$

and any commands you run with err will have stderr color-coded.
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 07-28-2011
I found this, if it can help somehow, too.

Other than that, another, very simple example (from the WWW):
Code:
command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m"; done)

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Redirect string from bash stderr to user stdin

Hi there, I need to execute a command in the bash. The program prints some standard (output and) error and then wants the user to choose one of several options and type the according input. I am trying to solve this issue in a bash script but also running into some circular dependency. How can I... (7 Replies)
Discussion started by: fredestet
7 Replies

2. Shell Programming and Scripting

stdout, stderr redirection

Hi all, can someone help me with the next redirection? i want to redirect the stdout+stderr of a command to the same file (this i can do by prog &> file) but in addition i want to redirect only the stderr to a different file. how can i do this please? (in BASH) thanks. (4 Replies)
Discussion started by: eee
4 Replies

3. UNIX for Dummies Questions & Answers

STDIN and STDOUT

Hallo, i have a script like: if ;then echo "OK" else echo "ERROR $2 is missing" fi; if ;then touch $2 fi; if ;then cat $1 | grep xy > $2 (1 Reply)
Discussion started by: eightball
1 Replies

4. Shell Programming and Scripting

stderr/stdout

Can somebody explain to me why the diff output is not going to stderr? Yet when I issue a diff from the command line the return code is -ne 1. I am guessing diff always writes to stdout??? Is there away I can force the difff to write to stderr USING THE CURRENT template. If possible, I... (5 Replies)
Discussion started by: BeefStu
5 Replies

5. Shell Programming and Scripting

can't close stdin/stdout in shell

#!/bin/sh exec 0</dev/null exec 1>/dev/null ls -l /proc/self/fd >&2 produces total 0 lr-x------ 1 tyler users 64 Feb 18 10:38 0 -> /proc/7886/fd lrwx------ 1 tyler users 64 Feb 18 10:38 1 -> /dev/pts/4 lrwx------ 1 tyler users 64 Feb 18 10:38 2 -> /dev/pts/4 I've verified the shell is... (10 Replies)
Discussion started by: Corona688
10 Replies

6. Shell Programming and Scripting

How to use tee with stdout and stderr?

I have been doing this: make xyz &> xyz.log &; tail -f xyz.log The problem with this is that you never can ge sure when "make xyz" is done. How can I pipe both stderr and stdout into tee so both stderr and stdout are copied both to the display and to the log file? Thanks, Siegfried (3 Replies)
Discussion started by: siegfried
3 Replies

7. Programming

stdout/stdin + flushing buffers

Hi all I've run into a snag in a program of mine where part of what I entered in at the start of run-time, instead of the current value within printf() is being printed out. After failing with fflush() and setbuf(), I tried the following approach void BufferFlusher() { int in=0;... (9 Replies)
Discussion started by: JamesGoh
9 Replies

8. Shell Programming and Scripting

precedence of stderr and stdout

#!/usr/bin/perl open(STDOUT, ">>$Textfile") open(STDERR, ">>$Textfile") print "program running\n"; $final = join("+", $initial,$final) #5 close (STDOUT); close (STDERR);Hi all, above is my perl code. Notice i have captured the stdout and stderr to the same textfile. my code is expected to... (1 Reply)
Discussion started by: new2ss
1 Replies

9. Shell Programming and Scripting

Redirect stdout and stderr

How can I redirect and append stdout and stderr to a file when using cron? Here is my crontab file: */5 * * * * /dir/php /dir/process_fns.php >>& /dir/dump.txt Cron gives me an 'unexpected character found in line' when trying to add my crontab file. Regards, Zach Curtis POPULUS (8 Replies)
Discussion started by: zcurtis
8 Replies
Login or Register to Ask a Question