echo
shell 中有个内置的命令 echo
用来输出信息,在默认情况下输出位置是屏幕。
1 | [user1@study ~]$ echo "Hello World" |
此外 echo
命令还可以改变样式,以输出不同颜色的文本,但是必须有 -e
选项(开启 echo 中的转义)。
格式如下
1 | echo -e "\033[字背景颜色;文字颜色m 字符串\033[0m" |
\033
代表键盘的Ctl
键或Esc
键- 1 代表字体行为(高亮,闪烁,下划线等);
- 36 代表字体的颜色
- 41 的位置代表背景色
注意:字背景颜色和文字颜色之间是英文的分号 ;
,并且文字颜色后面有个 m
,字符串前后可以没有空格,如果有的话,输出也是同样有空格
在 Bash 中,Esc
字符可以用以下的语法来表示:
\e
\033
\x1B
文字和背景颜色搭配
字体颜色范围是 30~37
1 | echo -e "\033[30m 黑色字 \033[0m" |
字体背景颜色范围是 40~47
1 | echo -e "\033[40;37m 黑底白字 \033[0m" |
不同的控制选项决定了字体输出的属性
1 | \033[0m # 关闭所有属性 |
一些需要注意的地方
- 前景颜色各数字是对应背景颜色减去10
- 结束非常规字符序列的
m
要紧跟前面的数字,不能有空格 - 命令也可以写 成
echo -e "^[[44;37;5m ME \033[0m COOL"
,其中的^[
需要先按Ctrl
+V
键 ,然后再按ESC
键生成
参考
在 RedHat 系统的 /etc/sysconfig/init
文件中有事先设置好的输出方式
1 | # color => new RH6.0 bootup |
拓展
文字颜色
对于在文本颜色上使用 256 种颜色之一,控制序列是 <Esc>[38;5;ColorNumberm
,其中 ColorNumber
是下列颜色值之一:
示例:
1 | echo -e "\e[38;5;82mHello \e[38;5;198mWorld" |
1 | for i in {16..21} {21..16} ; do echo -en "\e[38;5;${i}m#\e[0m" ; done ; echo |
背景颜色
对于在背景上使用 256 种颜色之一,控制序列是 <Esc>[48;5;ColorNumberm
,其中 ColorNumber
是下列颜色值之一:
示例:
1 | echo -e "\e[40;38;5;82m Hello \e[30;48;5;82m World \e[0m" |
1 | for i in {16..21} {21..16} ; do echo -en "\e[48;5;${i}m \e[0m" ; done ; echo |
示范
16中颜色值的颜色与格式
下面的 colors_and_formatting.sh
脚本显示了许多可能的属性组合(但不是全部,因为它一次只使用一个格式化属性)。
1 |
|
256 种颜色值
以下 256-colors.sh
脚本显示某些终端和终端模拟器(如 xterm 和 gnome 终端)上可用的 256 中颜色。
1 |
|
一个不错的网站