文本终端的颜色可以使用“ANSI非常规字符序列”来生成。举例: 
echo -e "\033[44;37;5m ME \033[0m COOL" 
以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”。“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器。“\033”引导非常规字符序列。“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 “44;37;5” 和“0”。 
修改“44;37;5”可以生成不同颜色的组合,数值和编码的前后顺序没有关系。可以选择的编码如下所示:

编码 颜色/动作 
0 重新设置属性到缺省设置 
1 设置粗体 
2 设置一半亮度(模拟彩色显示器的颜色) 
4 设置下划线(模拟彩色显示器的颜色) 
5 设置闪烁 
7 设置反向图象 
22 设置一般密度 
24 关闭下划线 
25 关闭闪烁 
27 关闭反向图象 
30 设置黑色前景 
31 设置红色前景 
32 设置绿色前景 
33 设置棕色前景 
34 设置蓝色前景 
35 设置紫色前景 
36 设置青色前景 
37 设置白色前景 
38 在缺省的前景颜色上设置下划线 
39 在缺省的前景颜色上关闭下划线 
40 设置黑色背景 
41 设置红色背景 
42 设置绿色背景 
43 设置棕色背景 
44 设置蓝色背景 
45 设置紫色背景 
46 设置青色背景 
47 设置白色背景 
49 设置缺省黑色背景

其他有趣的代码还有: 

\033[2J  清除屏幕 
\033[0q  关闭所有的键盘指示灯 
\033[1q  设置“滚动锁定”指示灯 (Scroll Lock) 
\033[2q  设置“数值锁定”指示灯 (Num Lock) 
\033[3q  设置“大写锁定”指示灯 (Caps Lock) 
\033[15:40H 把关闭移动到第15行,40列 
\007 发蜂鸣生beep 
#######################

RedHat的字体和背景颜色的改变方法:

命令: 
PS1="[\e[32;1m\u@\h \W]\\$" 
或 
export PS1="[\e[32;1m\u@\h \W]\\$" 两者的区别请查看环境变量的相关资料 
解释: 
\e[32;1m:这就是控制字体和背景颜色的转义字符,30~37是字体颜色、40~47是背景颜色 
例子中的32;1m数字的位置是可以对调的如\e[1;32m,如果是在X环境下可以更换一下1的范围0~10,可能有的没用处:0或者不写(\e [0;32m或\e[;32m)显示浅颜色,1:显示高亮 4:加下划线.....如果改后的效果不好,但是又还原不了,那就不写m前面的数字,如\e[32;m,或者直接注销再登陆

\u \h \W:这是一些转义字符,下面详细解释: 
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1" 
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux 
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 
\t :显示时间为24小时格式,如:HH:MM:SS 
\T :显示时间为12小时格式 
\A :显示时间为24小时格式:HH:MM 
\u :当前用户的账号名称 
\v :BASH的版本信息 
\w :完整的工作目录名称。家目录会以 ~代替 
\W :利用basename取得工作目录名称,所以只会列出最后一个目录 
\# :下达的第几个命令 
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$ 
\n :新建一行 
字体并不局限于一个颜色,可以有多个颜色: 
PS1="[\e[32;1m\u@\e[35;1m\h \e[31;1m\W]\\$" 
以上两个命令在注销后再登陆就失效了,用下面方法使其永久生效: 
vi /etc/profile 
在“export PATH .....”下面添加一行:export PS1="[\e[32;1m\u@\h \W]\\$" 
注销再登陆,就成功了,如果没生效,使用source /etc/profile 命令试试,或者直接重启机器。

转载于:http://www.jb51.net/article/33480.htm

Shell脚本关于屏幕输出的字符进行颜色控制的问题的更多相关文章

  1. Oralce SQLPlus 以及shell脚本中spool输出到文件时的格式化输出

    http://blog.csdn.net/gyanp/article/details/7903056 1) 格式调整有以下参数 set echo on/off                     ...

  2. shell脚本按当前日期输出日志

    shell脚本基本技能是设置变量,输出信息.如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash t ...

  3. Java实践-远程调用Shell脚本并获取输出信息

    1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-s ...

  4. shell脚本监控Flume输出到HDFS上文件合法性

    在使用flume中发现由于网络.HDFS等其它原因,使得经过Flume收集到HDFS上得日志有一些异常,表现为: 1.有未关闭的文件:以tmp(默认)结尾的文件.加入存到HDFS上得文件应该是gz压缩 ...

  5. 《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    一些控制脚本的方式:向脚本发送信号.修改脚本优先级,在脚本运行时切换到运行模式 16.1 处理信号 linux利用信号与运行在系统中的进程进行通信. 也可以通过对脚本进行编程,使其在收到特定信号时执行 ...

  6. Shell脚本 (三) 条件判断 与 流程控制

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 六.条件判断 1.基本语法 [ condition ](注意condition 前后要有空格) 注意:条 ...

  7. Shell脚本——cat/EOF输出多行

    在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...

  8. shell脚本使用技巧4--读取字符,重复执行

    ls | cat -n > out.txt 给输出的信息加行号并导出到out.txt 利用shell生成一个独立的进程 pwd; (cd /bin; ls); pwd; 开启一个子shell,不 ...

  9. shell脚本(3)-格式化输出

    一个程序需要有0个或以上的输入,一个或更多输出 一.echo语法 1.功能:将内容输出到默认显示设备. echo命令功能在显示器上显示一段文字,一般提到提示的作用 2.语法:echo[-ne][字符串 ...

随机推荐

  1. php 安装memcacheq

    berkeley: http://download.oracle.com/otn/berkeley-db/db-6.1.19.tar.gz?AuthParam=1408431634_4887d4468 ...

  2. IIS7 + mysql + php + wordPress 在win7下部署

    最近在玩WordPress.wiki等开源平台的站点部署.通过一下实践和资料学习,为了以后少走弯路,觉得有必要把这个过程记录下来. 用到的东西: IIS服务: mysql; php; wordpres ...

  3. Java中系统属性Properties介绍 System.getProperty()参数大全

       在JDK文档中System类中有这样的方法getProperties()在此方法的详细介绍中有下面的参数可供使用: java.version Java 运行时环境版本 java.vendor J ...

  4. Connect模块解析

    Connect模块背景 Node.js的愿望是成为一个能构建高速,可伸缩的网络应用的平台,它本身具有基于事件,异步,非阻塞,回调等特性,这在前几篇专栏中有过描述. 正是基于这样的一些特性,Node.j ...

  5. [CareerCup] 17.5 Game of Master Mind 猜字游戏

    17.5 The Came of Master Mind is played as follows: The computer has four slots, and each slot will c ...

  6. php 将查询出的数组数据存入redis

    我们从数据库查询出来的数据一般为数组的形式, 而redis是不支持存入数组的, 一种解决办法是将数组转化为json数据,再将json存入redis,之后取出时再将json转化为php数组. 但将取出的 ...

  7. 您的服务器没有安装这个PHP扩展:OpenSSL(其他平台API同步需要)

    今天在安装一个博客系统的时候提示这个错,在网上找了半天,自己慢慢弄出来的,具体如下: 1.找到你的php.ini 文件,将“;extension=php_openssl.dll”前面分号去掉. 2.复 ...

  8. java动态编译类文件并加载到内存中

    如果你想在动态编译并加载了class后,能够用hibernate的数据访问接口以面向对象的方式来操作该class类,请参考这篇博文-http://www.cnblogs.com/anai/p/4270 ...

  9. java中的反射

    1.何为java反射机制: 在运行过程中,对于任意一个类都能够知道这个类的属性和方法:对于任意一个对象都能调用其属性和方法:这种动态获取信息和动态调用方法 就称为java反射 2.获取Class对象的 ...

  10. Java封装

    面向对象的三大特征:封装.继承.多态.封装在书面上来说,他无非就是set和get方法罢了.为什么要用到封装,比如买主机如果没有机箱只有内存条.CPU.主板等等那些零件买回到家,你还得一个个的去装那些零 ...