Bash脚本中使用颜色

类别:    标签: bash   阅读次数:   版权: (CC) BY-NC-SA

2014-03-21 16:40:35

在bash脚本的输出中适当使用颜色可以使结果呈现得更直观, 便于快速获取信息. 试想, 从一堆黑色文字中获取某个数字, 你可能要花点时间查看, 分析, 才能知道答案. 若这个数字是以红色标识出来的, 那大多数人一眼就可以得到答案, 所花的时间也要少得多.

利用echo命令可以设置输出的颜色和效果, 格式为:

echo -e "\033[前景色;背景色;效果m输出字符\033[0m"

\033为ASCII码ESC(八进制33, 十进制27), 也可用\e代替, 即

echo -e "\e[前景色;背景色;效果m输出字符\e[0m"

30-37设置前景色, 40-47设置背景色, 颜色为ANSI标准色

模式中设置字符的特殊效果, 常用的有

例:

echo -e "\e[41;37m 红底白字 \e[0m"

echo -e "\e[37;41;1m 红底白字+高亮 \e[0m"

测试代码

# Language: bash
echo
T='RGB'
echo " B\F" {30..37}m" "
for BACK in {40..47}; do
    echo -en "  $BACK"
    for FORE in {30..37}m; do
        echo -en "\e[$BACK;$FORE $T \e[0m"
    done
    echo
done
echo

for MODE in 1 4 5 7 8; do
    echo " B\F" {30..37}";${MODE}m "
    for BACK in {40..47}; do
        echo -en "  $BACK"
        for FORE in {30..37}";${MODE}m"; do
            echo -en "\e[$BACK;$FORE  $T  \e[0m"
        done
        echo
    done
    echo
done

echo "F\B" {40..47}m" "
for FORE in {30..37}; do
    echo -en " $FORE"
    for BACK in {40..47}m; do
        echo -en "\e[$FORE;$BACK $T \e[0m"
    done
    echo
done
echo

for MODE in 1 4 5 7 8; do
    echo "F\B" {40..47}";${MODE}m "
    for FORE in {30..37}; do
        echo -en " $FORE"
        for BACK in {40..47}";${MODE}m"; do
            echo -en "\e[$FORE;$BACK  $T  \e[0m"
        done
        echo
    done
    echo
done

输出

bash echo颜色

bash echo颜色

注意

  1. 利用echo设置输出颜色与模式后, 命令行中所有的输出都会以设置的格式输出, 除非再利用echo设置为默认格式.
  2. 由于所用数字不重复, 背景, 前景, 模式三个数字顺序无关紧要, 可以任意顺序指定.
  3. CygWin中使用时效果4, 5, 7功能不全.
随意赞赏

微信

支付宝
◆本文地址: , 转载请注明◆
◆评论问题: https://jerkwin.herokuapp.com/category/3/博客, 欢迎留言◆


前一篇: Origin相关
后一篇: 利用sort与uniq过滤文件

访问人次(2015年7月 9日起): | 最后更新: 2017-09-26 07:50:25 UTC | 版权所有 © 2008 - 2017 Jerkwin