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\]'
输出效果
作者:moox
出处:http://www.cnblogs.com/moox/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。