Linux基础学习教程

Linux 基础教程 47-echo详细讲解

2022-07-24  本文已影响0人  Surpassme

    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.常用示例

[root@Surpass ~]# echo -n "Surpass"
Surpass[root@Surpass ~]#
[root@Surpass ~]# echo -e "S\burpass"
urpass
[root@Surpass ~]# echo -e "Sur\b\b\bpass"
pass

\b\b\b:表示删除前面三个字符

[root@Surpass ~]# echo -e "Surpass\c"
Surpass[root@Surpass ~]# echo -e "Sur\cpass"
Sur[root@Surpass ~]#
[root@Surpass ~]# echo -e "I love \nSurpass"
I love 
Surpass
[root@Surpass ~]# echo -e "I love \fSurpass"
I love 
       Surpass
[root@Surpass ~]# echo -e "I \flove \fSurpass"
I 
  love 
       Surpass
[root@Surpass ~]# echo -e "I love Surpass\rdiana"
dianae Surpass
[root@Surpass ~]# echo -e "Surpa ss\rdiana"
diana ss
[root@Surpass ~]# echo -e "Surpass\t\t\tdiana"
Surpass         diana
[root@Surpass ~]# echo -e "Surpass \\ love \\ Diana"
Surpass \ love \ Diana

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

    最终效果如下所示:

02 echo-02.png
上一篇 下一篇

猜你喜欢

热点阅读