Linux 基础教程 47-echo详细讲解
echo命令是Linux中最基础和最常用的命令,特别是在Shell脚本经常用来打印输出调试信息等,功能比较丰富,现来总结一下,方便后续查看。
1.基本语法
echo [参数] 字符串
主要参数解释如下所示:
参数 | 功能 |
---|---|
-e | 激活转义字符 |
-n | 输出不进行换行 |
- 转义符详细解释如下所示:
转义符 | 含义 |
---|---|
\a | 发出警告声 |
\b | 转义后相当于退格键(Backspace),前提是\b后面存在字符 |
\c | 不进行换行,若后面有字符也不输出,若没有与echo -n等效 |
\n | 输出换行 |
\f | 换行,但换行后新行的开头位置连接着上一行的行尾 |
\v | 与\f相同 |
\r | 光标移到行首,但不换行,相当于使用\r后面的字符覆盖\r之前同等长度的字符 |
\t | 插入TAB符 |
\ | 插入 \ 字符 |
使用选项-e参数后,除了可以输出转义字符,还可以输出彩色的字符和带有彩色背景的字符。示例如下所示:
echo -e "\033[43;31m Surpass \033[0m"
- \033[43;31m和\033[0m:专业名词叫做ANSI控制码,\033[表示开始输出设定颜色的字符,\033[0m表示结束输出设定的字符
- 43;表示输出字符的背景颜色
- 31表示输出字符的字体颜色
ASNI控制码不仅可以控制颜色的输出,还有其他一些功能的控制码,如下所示:
ANSI控制码 | 功能 |
---|---|
\033[0m | 关闭所有属性 ,也就是说此控制码前面的控制码将会失效,此控制码中的0可以省略 |
\033[1m | 设置高亮度 |
\033[4m | 添加下划线 |
\033[5m | 闪烁 |
\033[7m | 反显 ,撞色显示,显示为白底黑字,或者显示为黑底白字 |
\033[8m | 消隐 ,字符颜色将会与背景颜色相同 |
\033[30m — \033[37m | 设置字符字体颜色 |
\033[40m — \033[47m | 设置字符背景颜色 |
- 常用字符字体颜色如下所示:
数字 | 颜色 | 数字 | 颜色 |
---|---|---|---|
30 | 黑色 | 31 | 红色 |
32 | 绿色 | 33 | 黄色 |
34 | 蓝色 | 35 | 紫色 |
36 | 浅蓝色 | 37 | 灰色 |
- 常用字符背景颜色如下所示:
数字 | 颜色 | 数字 | 颜色 |
---|---|---|---|
40 | 黑色 | 41 | 红色 |
42 | 绿色 | 43 | 黄色 |
44 | 蓝色 | 45 | 紫色 |
46 | 浅蓝色 | 47 | 灰色 |
2.常用示例
- 1、-n输出不换行
[root@Surpass ~]# echo -n "Surpass"
Surpass[root@Surpass ~]#
- 2、\b删除前一个字符
[root@Surpass ~]# echo -e "S\burpass"
urpass
[root@Surpass ~]# echo -e "Sur\b\b\bpass"
pass
\b\b\b:表示删除前面三个字符
- 3、\c输出不换行,但当\c后存在字符时,其后面的字符将不会输出,若\c后面没有字符时,功能与echo -n等效
[root@Surpass ~]# echo -e "Surpass\c"
Surpass[root@Surpass ~]# echo -e "Sur\cpass"
Sur[root@Surpass ~]#
- 4、\n表示输出换行
[root@Surpass ~]# echo -e "I love \nSurpass"
I love
Surpass
- 5、\f,换行,但新行的行首连接前一行的行尾
[root@Surpass ~]# echo -e "I love \fSurpass"
I love
Surpass
[root@Surpass ~]# echo -e "I \flove \fSurpass"
I
love
Surpass
- 6、\r相当于\r后面的字符覆盖\r之前同等长度的字符
[root@Surpass ~]# echo -e "I love Surpass\rdiana"
dianae Surpass
[root@Surpass ~]# echo -e "Surpa ss\rdiana"
diana ss
- 7、\t插入TAB分隔符
[root@Surpass ~]# echo -e "Surpass\t\t\tdiana"
Surpass diana
- 8、输出\
[root@Surpass ~]# echo -e "Surpass \\ love \\ Diana"
Surpass \ love \ Diana
- 9、输出同时带有字体和背景颜色的字符
3.脚本封装示例
根据今天的笔记,封装一个打印输出日志记录脚本,如下所示:
#!/bin/bash
function printMessage(){
dt=$(date '+%F %T')
type=$([ -z "$1" ] && echo "INFO" || echo "$1" | tr [:lower:] [:upper:])
message=$([ -z "$2" ] && echo "NONE" || echo "$2")
if [ "${type}" == "INFO" ]
then
echo -e "\033[32m ${dt} ${type} ${message}\033[0m"
elif [ "${type}" == "WARNING" ]
then
echo -e "\033[33m ${dt} ${type} ${message}\033[0m"
elif [ "${type}" == "ERROR" ]
then
echo -e "\033[31m ${dt} ${type} ${message}\033[0m"
else
echo -e "\033[34m ${dt} ${type} or ${message} error \033[0m"
fi
}
function main(){
printMessage info "I love Surpass"
printMessage WARNING "I love Surpass"
printMessage errOR "I love Surpass"
printMessage Test "I love Surpass"
}
main
最终效果如下所示:
原文地址:https://www.jianshu.com/p/6dbb04e56e60
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
作者: Surpassme
来源: http://www.jianshu.com/u/28161b7c9995/
http://www.cnblogs.com/surpassme/
声明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接 ,否则保留追究法律责任的权利。如有问题,可发送邮件 联系。让我们尊重原创者版权,共同营造良好的IT朋友圈。