Weblog entry #9 for uroboros
#9
How to colorize BASH script output easily...
Posted by uroboros on Sat 29 Jul 2006 at 00:02
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
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 ]