Linux的shell中echo改变输出显示样式

转自:http://hi.baidu.com/visual_art/item/803ba20f8b3a83f1a01034a1

Linux的shell中echo改变输出显示样式 shell中echo输出改变颜色 在shell中使用echo命令输出带颜色的文本

echo -e "\033[32;49;1m [DONE] \033[39;49;0m"或echo -e "\e[32;49;1m [DONE] \033[39;49;0m"

输出结果 :[DONE]


文本终端的颜色可以使用“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 命令试试,或者直接重启机器。

********************************************************************

有些时候,需要为Linux服务的配置截个图,然后打印出来,结果在字符界面下就只有黑色背景,白色字体,打印出来费墨~~改改背景可能好点。

首先要知道在linux中,一些常用的颜色代码:(这些颜色是ANSI标准颜色)
前景色:30黑 31红 32绿 33黄 34蓝 35紫 36青 37白
背景色:40黑 41红 42绿 43黄 44青 45蓝 46青 47白

#前景颜色各数字是对应背景颜色减去10.

命令:   echo   -e   "\033[background_number;foreground_numberm"  
如设置白色背景黑色前景字体应该是   echo   -e   "\033[47;30m"

background_number=背景色
foreground_number=前景色
m要紧跟foreground_number,没有空格。

(说是白色背景,黑色字体。字体颜色我同意,可背景色咋看也不像是白色呀?o(∩_∩)o...)

\033   即退出键<esc>的ascii码(27),所以上面的命令也可写成如下形式  
echo   "^[[47;30m"         其中的“^[”是先按ctrl-V,然后再按<esc>键(就是键盘左上角的键)产生的。

这种方法只能暂时改变一下,logout一下就没有了。不过可以vi /root/.bashrc, 在后面加上刚才的命令。

echo -e '\033[47;30m'

************************************************************************

用的是终端控制字符,比如这个,就是光标跳到第60列,然后显示一个OK

echo   -en    '\033[60G '   &&   echo   OK

\033[就是终端转义字符开始,60G是命令。
echo的-e选项就是让echo不自己处理终端转义字符
 
内建命令echo 输出他的参数,以空格来分隔,以换行符来结束。返回值总为0。echo 使用的一
些选项:
-e:转义反斜杠字符。
-n:禁止换行。

echo 命令使用的转义序列

序列 意义
\a 闹铃
\b 退格
\c 强制换行
\e 退出
\f 清除屏幕
\n 新行
\r Carriage return.
\t 水平制表符
\v 垂直制表符
\\ 反斜杠

$#传递到脚本的参数个数

$*传递到脚本的参数,与位置变量不同,此选项参数可超过9个

$$脚本运行时当前进程ID号,常用作临时变量的后缀。如hash.$$

$!后台运行的&最后一个进程的ID号

$@与$#相同,使用时加引号,并在引号中返回参数的个数

$-上一个命令的最后一个参数

$?最后命令的推出状态,0表示没有错误。其他任何值表示有错误。





格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m" 

例如: 
echo "\033[41;36m something here \033[0m" 

其中41的位置代表底色, 36的位置是代表字的颜色 


那些ascii code 是对颜色调用的始末. 
\033[ ; m …… \033[0m 



字背景颜色范围:40----49 
40:黑 
41:深红 
42:绿 
43:黄色 
44:蓝色 
45:紫色 
46:深绿 
47:白色 

字颜色:30-----------39 
30:黑 
31:红 
32:绿 
33:黄 
34:蓝色 
35:紫色 
36:深绿 
37:白色 

===============================================ANSI控制码的说明 
\33[0m 关闭所有属性 
\33[1m 设置高亮度 
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m -- \33[37m 设置前景色 
\33[40m -- \33[47m 设置背景色 
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标









echo -e "\033[32;49;1m [DONE] \033[39;49;0m"或echo -e "\e[32;49;1m [DONE] \033[39;49;0m"

输出结果 :[DONE]


文本终端的颜色可以使用“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 命令试试,或者直接重启机器。

********************************************************************

有些时候,需要为Linux服务的配置截个图,然后打印出来,结果在字符界面下就只有黑色背景,白色字体,打印出来费墨~~改改背景可能好点。

首先要知道在linux中,一些常用的颜色代码:(这些颜色是ANSI标准颜色)
前景色:30黑 31红 32绿 33黄 34蓝 35紫 36青 37白
背景色:40黑 41红 42绿 43黄 44青 45蓝 46青 47白

#前景颜色各数字是对应背景颜色减去10.

命令:   echo   -e   "\033[background_number;foreground_numberm"  
如设置白色背景黑色前景字体应该是   echo   -e   "\033[47;30m"

background_number=背景色
foreground_number=前景色
m要紧跟foreground_number,没有空格。

(说是白色背景,黑色字体。字体颜色我同意,可背景色咋看也不像是白色呀?o(∩_∩)o...)

\033   即退出键<esc>的ascii码(27),所以上面的命令也可写成如下形式  
echo   "^[[47;30m"         其中的“^[”是先按ctrl-V,然后再按<esc>键(就是键盘左上角的键)产生的。

这种方法只能暂时改变一下,logout一下就没有了。不过可以vi /root/.bashrc, 在后面加上刚才的命令。

echo -e '\033[47;30m'

************************************************************************

用的是终端控制字符,比如这个,就是光标跳到第60列,然后显示一个OK

echo   -en    '\033[60G '   &&   echo   OK

\033[就是终端转义字符开始,60G是命令。
echo的-e选项就是让echo不自己处理终端转义字符
 
内建命令echo 输出他的参数,以空格来分隔,以换行符来结束。返回值总为0。echo 使用的一
些选项:
-e:转义反斜杠字符。
-n:禁止换行。

echo 命令使用的转义序列

序列 意义
\a 闹铃
\b 退格
\c 强制换行
\e 退出
\f 清除屏幕
\n 新行
\r Carriage return.
\t 水平制表符
\v 垂直制表符
\\ 反斜杠

$#传递到脚本的参数个数

$*传递到脚本的参数,与位置变量不同,此选项参数可超过9个

$$脚本运行时当前进程ID号,常用作临时变量的后缀。如hash.$$

$!后台运行的&最后一个进程的ID号

$@与$#相同,使用时加引号,并在引号中返回参数的个数

$-上一个命令的最后一个参数

$?最后命令的推出状态,0表示没有错误。其他任何值表示有错误。

 

你可能感兴趣的:(Linux的shell中echo改变输出显示样式)