zoukankan      html  css  js  c++  java
  • shell脚本输出带颜色字体

    shell脚本中 echo 和 printf 都可以输出内容。 我们看以下示例

    echo -e "33[43;35m david use echo say Hello World 33[0m 
    " 
    
    printf "33[44;36m david use printf say Hello World 33[0m 
    " 
    
    echo -e "33[47;30;5m david use echo say 33[0m Hello World 
    "

    输出如下: 

    它的格式是这样的:

    1 echo -e "33[字背景颜色;字体颜色m 字符串 33[0m"  或者
    2 printf "33[字背景颜色;字体颜色m 字符串 33[0m"  或者
    3 echo -e "33[字背景颜色;字体颜色m;ascii码m 字符串 33[0m 字符串(can null) 
    " 
    原理

    这里以一个例子来说明:

    1 echo -e "33[47;30;5m david use echo say 33[0m Hello World 
    " 
    作用: 
    42->背景色为白色, 
    30->字体为黑色, 
    5->字体闪烁, 
    0->关闭所有属性 
    输出字符 “david use echo say”,然后重新设置屏幕到缺省设置,输出字符 “Hello World”后颜色回复正常

    -e是echo的一个可选项,用于激活特殊字符的解析器, 也就是对反斜线转义符(即)的解释。33引导非常规字符序列。意味着设置属性然后结束非常规字符序列,这里起效果的字符是
    47;30;5和0。修改47;30;5可以生成不同颜色的组合,数值和编码的前后顺序没有关系。

    组合命令:

    1 echo -e "33[20;1H33[1;4;32m david use echo say 33[0m Hello World 
    "

    这行命令首先33[20;1H将光标移动到终端第20行第1列,之后的33[1;4;32m将文本属性设置为高亮、带下划线且颜色为绿色,然后输出Hello,world;最后33[0m将终端属性设为缺省,这样就不会看到连命令完成后的命令提示符也变了样儿了。

    我们可以通过各种命令的组合可以实现对终端输出地复杂控制。

    范围

    0 重新设置属性到缺省设置
    1 设置粗体
    2 设置一半亮度(模拟彩色显示器的颜色)
    4 设置下划线(模拟彩色显示器的颜色)
    5 设置闪烁
    7 设置反向图象
    8 消隐 
    22 设置一般密度
    24 关闭下划线
    25 关闭闪烁
    27 关闭反向图象
    
    // 字体颜范围(前景颜色):30~39
    30:黑 
    31:红 
    32:绿 
    33:黄 
    34:蓝色 
    35:紫色 
    36:深绿 
    37:白色 
    
    38:在缺省的前景颜色上设置下划线
    39:在缺省的前景颜色上关闭下划线
    
    // 字背景颜色范围(背景颜色):40~49 
    40:黑 
    41:深红 
    42:绿 
    43:黄色 
    44:蓝色 
    45:紫色 
    46:深绿 
    47:白色 
    
    nA 光标上移n行 
    nB 光标下移n行 
    nC 光标右移n行 
    nD 光标左移n行 
    y;xH设置光标位置 
    2J 清屏 
    K 清除从光标到行尾的内容 
    s 保存光标位置 
    u 恢复光标位置 
    ?25l 隐藏光标 
    ?25h 显示光标
    一些颜色
    echo -e "33[0m none 33[0m"
    echo -e "33[30m black 33[0m"
    echo -e "33[1;30m dark_gray 33[0m"
    echo -e "33[0;34m blue 33[0m"
    echo -e "33[1;34m light_blue 33[0m"
    echo -e "33[0;32m green 33[0m"
    echo -e "33[1;32m light_green 33[0m"
    echo -e "33[0;36m cyan 33[0m"
    echo -e "33[1;36m light_cyan 33[0m"
    
    echo -e "33[0;31m red 33[0m"
    echo -e "33[1;31m light_red 33[0m"
    echo -e "33[0;35m purple 33[0m"
    echo -e "33[1;35m light_purple 33[0m"
    echo -e "33[0;33m brown 33[0m"
    echo -e "33[1;33m yellow 33[0m"
    echo -e "33[0;37m light_gray 33[0m"
    echo -e "33[1;37m white 33[0m"
    echo -e "33[0m none 33[0m"
    echo -e "33[0m none 33[0m"
    echo -e "33[0m none 33[0m"
    echo -e "33[0m none 33[0m"
    echo -e "33[0m none 33[0m"
    
    echo -e "33[40;37m 黑底白字 33[0m"
    echo -e "33[41;30m 红底黑字 33[0m"
    echo -e "33[42;34m 绿底蓝字 33[0m"
    echo -e "33[43;34m 黄底蓝字 33[0m"
    echo -e "33[44;30m 蓝底黑字 33[0m"
    echo -e "33[45;30m 紫底黑字 33[0m"
    echo -e "33[46;30m 天蓝底黑字 33[0m"
    echo -e "33[47;34m 白底蓝字 33[0m"
    echo -e "33[4;31m 下划线红字 33[0m"
    echo -e "33[5;31m 红字在闪烁 33[0m"
    echo -e "33[8m 消隐 33[0m "

    效果图如下: 

    扩展
    1. 预先定义颜色变量
    1 RED_COLOR='E[1;31m'  
    2 YELOW_COLOR='E[1;33m' 
    3 BLUE_COLOR='E[1;34m'  
    4 RESET='E[0m'
    5 
    6 #需要使用echo -e
    7 echo -e  "${RED_COLOR}===david say red color===${RESET}"
    8 echo -e  "${YELOW_COLOR}===david say yelow color===${RESET}"
    9 echo -e  "${BLUE_COLOR}===david say green color===${RESET}"

    效果图如下:

    转自https://blog.csdn.net/david_dai_1108/article/details/70478826

    -----------------------------------------------------滴水穿石,非一日之功-----------------------------------------------------

  • 相关阅读:
    作业练习
    作业练习
    作业
    作业
    作业
    作业
    作业
    作业
    作业
    作业
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/9837126.html
Copyright © 2011-2022 走看看