返回顶部

zhangfd

个人博客,仅供学习使用

导航

Linux-echo:打印彩色输出

echo(选项)(参数)选项

-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
-n:不换行输出,常与-e参数结合使用:echo -en "**"

•\a 发出警告声;
•\b 删除前一个字符;
•\c 最后不加上换行符号;
•\f 换行但光标仍旧停留在原来的位置;
•\n 换行且光标移至行首;
•\r 光标移至行首,但不换行;
•\t 插入tab;
•\v 与\f相同;
•\\ 插入\字符;
•\nnn 插入nnn(八进制)所代表的ASCII字符;
  • 常用实例:
echo -e "this is \n test"

echo -n 不换行输出
$echo -n "123"
$echo "456"
最终输出 
123456

终端中生成彩色文本

针对以下彩色文本使用缺陷做一点补充,以下内容在颜色设置功能上没有问题,但在命令行输入超长的字符串时会造成命令行错乱,不能换行

解决方法是将命令添加完整如下:

export PS1='\[\e[1;33m\][\u@\h \W]\$ \[\e[0m\]'
也就是将'\e[1;33m\][\u@\h \W]\$ \e[0m\]'  改成  '\[\e[1;33m\][\u@\h \W]\$ \[\e[0m\]'  既可

以下内容使用时注意添加\[

文本颜色是由对应的色彩码来描述的。其中包括:

重置=0,黑色=30,红色=31,绿色=32,
黄色=33,蓝色=34,洋红=35,青色=36,白色=37。

要打印彩色文本,可输入如下命令:

echo -e "\e[1;31m This is red text \e[0m"

Note:其中 \e[1;31m 是一个转义字符串,可以将颜色设为红色, \e[0m 将颜色重新置回。只需要将 31 替换成想要的色彩码就可以了。

对于彩色背景,经常使用的颜色码是:

重置=0,黑色=40,红色=41,绿色=42,黄色=43,
蓝色=44,洋红=45,青色=46,白色=47。

*要设置彩色背景的话,可输入如下命令:

echo -e "\e[1;42m Green Background \e[0m"

Note:这些例子中包含了一些转义序列。可以使用 man console_codes 来查看相关文档。

示例

[zhangfd@localhost shell]$ cat printf1.sh 
#!/bin/bash
## filename:printf.sh

echo -e "\e[1;32m `printf "%-5s %-10s %-6s\n" No Name Mark` \e[0m"
echo -e "\e[1;46m `printf "%-5s %-10s %-s\n" - --- ---- 
printf "%-5s %-10s %-6.4f\n" 1 Sarath 80.3456 
printf "%-5s %-10s %-6.4f\n" 2 James 90.9989 
printf "%-5s %-10s %-6.4f\n" 3 Jeff 77.564 
printf "%-5s %-10s %-6.4f\n" 4 zhangfd 299999990.33`
\e[0m"

输出

echo 修改终端提示字符串

echo "expport PS1='\e[1;35m][\u@\h \W]$ \e[0m]'" >>/etc/profile
source /etc/profile

PS1='\e[1;35m\][\u@\h \W]\$ \e[0m\]'

输出效果

posted on 2019-11-22 10:43  zhangfd  阅读(1133)  评论(0编辑  收藏  举报