星期四, 十月 26, 2006

摘录:在 echo 中控制输出颜色

使用 echo 来向控制台输出指定的颜色

echo -e '\e[44;33;1m colors \e[0m'
在echo输出时使用ESC序列来控制输出的颜色和样式
-e 用来开启echo中的转义
\e 或 \033 来输出Esc符号
设置颜色 \e[4背景色;3前景色;高亮m
Esc[background;foreground;1m
恢复默认 \e[0m
Esc[0m
Foreground colors: 30=black, 31=red, 32=green, 33=yellow, 34=blue 35=purple, 36=turquoise, 37=white
Background colors: 0=transparent, 40=back, 41=red, 42=green, 43=yellow, 44=blue 45=purple, 46=turquoise, 47=white

原文
-- http://www.linuxforum.net/forum/showflat.php?Cat=&Board=vrml&Number=624453&page=0&view=collapsed&sb=5&o=31&fpart=
-- http://www.linuxforum.net/forum/files/345507-colors.txt
如果需要在shell脚本里打印不同颜色的字符,可以使用ESC序列。

echo -e '\e[44;33;1m colors \e[0m'

echo -e表示启用\字符转义;\e即打印ESC控制符;[固定格式;44设置

背景为蓝色;33设置前景为白色;1设置加亮显示;m固定格式;colors

要打印的字符串;\e[0m设回开始的shell环境颜色设置。

连起来就是打印背景蓝色、前景高亮白色的字符串colors。
#! /bin/bash
# show colors (version 2)

FG='30 31 32 33 34 35 36 37'
BG='40 41 42 43 44 45 46 47'

NORMALSTR=' Normal '
BOLDSTR=' Bold '

echo

# Row Title
echo -n " "
for i in $FG ; do
echo -n " ${i} "
done
echo

# Row Title Line
echo -n "== "
for i in $FG ; do
echo -n " ========"
done
echo

# Color Map
for i in $BG ; do
echo -n "${i} "
for j in $FG ; do
echo -ne "\e[${j};${i}m${NORMALSTR}"
done
echo -e '\e[0m'

echo -ne " "
for j in $FG ; do
echo -ne "\e[${j};${i};1m${BOLDSTR}"
done
echo -e '\e[0m'
done

echo

没有评论: