Weblog entry #9 for uroboros

How to colorize BASH script output easily...
Posted by uroboros on Sat 29 Jul 2006 at 00:02
Tags: none.

For those that are looking for something looking...

#!/bin/bash

# by Matous Jan Fialka

CPREFIX='<'
CSUFFIX='>'

cecho(){
  local message=$@                                  # the message
  # CLEAR COMMANDS
  message="${message//${CPREFIX}c$CSUFFIX/\e[2J}"   # screen
  message="${message//${CPREFIX}cl$CSUFFIX/\e[K}"   # rest of line
  # ATTRIBUTES
  message="${message//${CPREFIX}n$CSUFFIX/\e[2m}"   # normal
  message="${message//${CPREFIX}v$CSUFFIX/\e[7m}"   # reverse
  message="${message//${CPREFIX}b$CSUFFIX/\e[1m}"   # bold
  message="${message//${CPREFIX}u$CSUFFIX/\e[4m}"   # underline
  message="${message//${CPREFIX}i$CSUFFIX/\e[8m}"   # invisible
  message="${message//${CPREFIX}l$CSUFFIX/\e[5m}"   # blink
  message="${message//${CPREFIX}r$CSUFFIX/\e[0m}"   # reset (white/black)
  # FOREGROUND COLOURS
  message="${message//${CPREFIX}C$CSUFFIX/\e[36m}"  # cyan
  message="${message//${CPREFIX}M$CSUFFIX/\e[35m}"  # magenta
  message="${message//${CPREFIX}Y$CSUFFIX/\e[33m}"  # yellow
  message="${message//${CPREFIX}K$CSUFFIX/\e[30m}"  # black
  message="${message//${CPREFIX}R$CSUFFIX/\e[31m}"  # red
  message="${message//${CPREFIX}G$CSUFFIX/\e[32m}"  # green
  message="${message//${CPREFIX}B$CSUFFIX/\e[34m}"  # blue
  message="${message//${CPREFIX}W$CSUFFIX/\e[37m}"  # white
  # BACKGROUND COLOURS
  message="${message//${CPREFIX}bC$CSUFFIX/\e[46m}" # cyan
  message="${message//${CPREFIX}bM$CSUFFIX/\e[45m}" # magenta
  message="${message//${CPREFIX}bY$CSUFFIX/\e[43m}" # yellow
  message="${message//${CPREFIX}bK$CSUFFIX/\e[40m}" # black
  message="${message//${CPREFIX}bR$CSUFFIX/\e[41m}" # red
  message="${message//${CPREFIX}bG$CSUFFIX/\e[42m}" # green
  message="${message//${CPREFIX}bB$CSUFFIX/\e[44m}" # blue
  message="${message//${CPREFIX}bW$CSUFFIX/\e[47m}" # white

  builtin echo -n -e "$message"
}

ccat(){
  cecho $(</dev/stdin)$'\n' # read stdin
}

# small demo
ccat<<:wq
<C>UN<M>I<l>T<Y>E<u>D<r> <b><R>CO<G>L<l>O<B>R<u>S<r>
:wq

# the end
exit 0

I hope it helps.

--
MJF

 

Comments on this Entry

Posted by goeb (84.184.xx.xx) on Sun 6 Aug 2006 at 21:15
[ Send Message | View Weblogs ]
Nice. But is there any way to save the current background- and textcolor so it can be restored after the coloured output (instead of simply setting background to black and text to grey)?

[ Parent | Reply to this comment ]

User Login

Username:

Password:

[ Advanced Login ]

Register Account

Quick Site Search