引言

    echo是Linux中较为常见的命令,特别是在bash的脚本编写中它的灵活运用是必不可少的。



echo的内容简介

    在man手册中的解释是:display a line of text,翻译过来就是回显或者再通俗点说就是显示字符或数字。解释看起来很简单,不过这个命令可以实现的功能却很丰富。

我之所以写关于echo的内容是因为一项作业,作业的内容是让显示一个由任意字符组成的倒三角图形,且要求字符闪烁并有字体颜色跟背景色。

这个作业先搁置一边稍后再解决。


    先介绍下echo的基本信息

以下是从CentOS-6.8中的man手册里截取的echo命令使用信息。

NAME   命令名
       echo - display a line of text   展示一行文字,即回显

SYNOPSIS   命令的使用格式
       echo [SHORT-OPTION]... [STRING]...  echo [短格式]...[字符串]...
       echo LONG-OPTION                    echo 长格式

DESCRIPTION    命令描述
       Echo the STRING(s) to standard output.  echo字符串至标准输出

       -n     do not output the trailing newline   输出后不换行

       -e     enable interpretation of backslash escapes 使转义字符生效

       -E     disable interpretation of backslash escapes (default) 禁用转义字符

       --help display this help and exit  显示使用帮助即退出信息

       --version                       版本
              output version information and exit  输出所用版本信息
        
        If -e is in effect, the following sequences are recognized: 如果-e生效后,如下的转移字符就可以被识别

       \\     backslash   反斜线转义符
       
       \a     alert (BEL) 提示符

       \b     backspace  退格符

       \c     produce no further output 

       \e     escape 逃逸符

       \f     form feed

       \n     new line  换行符

       \r     carriage return  

       \t     horizontal tab 水平制表符

       \v     vertical tab  垂直制表符

  以上是echo的命令及常用的使用信息。



echo的常用方式及其高级使用


常用表达

1、显示给出的东西比如字母、数字、字符。

[root@centos6 ~]# echo "a1.3fg@1"
a1.3fg@1

2、显示命令结果,比如显示ls /root的执行结果

[root@centos6 ~]# echo $(ls /root)
anaconda-ks.cfg install.log install.log.syslog 公共的 模板 视频 图片 文档 下载 音乐 桌面

3、显示变量内容

[root@centos6 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos6 ~]# echo ${PATH}
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos6 ~]# echo "$PATH"
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos6 ~]# echo '$PATH'
$PATH

上面为什么有“”、‘’、$()、${}、``等包裹内容的符号,这是bash里面的表示几种不同引用的符号标识。

bash里面引用分一下几种

     $()是命令引用

# echo $(date)
2016年 07月 25日 星期一 14:37:12 CST

    它显示的是date这个命令的执行结果信息

    ``跟$()是一样的

   ‘’ 强引用:变量不执行替换

#echo '$PATH'
$PATH

    这里显示的date这个字符串

   “” 弱引用


    ${}是变量引用

#TEX=tex
# echo ${TEX}
tex

    显示变量内容


    这部分内容看完相信大家对于bash的命令引用与替换会有了初步的认识,凭借这些认识,我们应该可以了解为什么在-e模式下使用“”引号吧。实在不知道也没关系,记住就行




echo的高级表达:

    从上面的man帮助里面可以发现echo中有关-e的内容特别多,为什么?因为在-e模式下我们可以丰富字符的输出形式,比如让字符闪烁,有背景色与字体颜色。

下面我展示下我作业的一段命令来详细说明-e模式下的echo功能。

echo -e "\033[0m   \033[45;32;5m***\033[0m\n    \033[45;32;5m*\033[0m"

wKioL1eVskyiTBwIAAAktYOywxI174.gif    

看起来很炫吧。

下面来对该命令

echo -e "\033[0m   \033[45;32;5m***\033[0m\n    \033[45;32;5m*\033[0m"

进行详细的解析,以便大家对其有更清晰的认识


   echo -e前面已有很明确的介绍,这里就不多介绍。它的作用是开启转义字符功能

   "\033" 引导非常规字符序列(即"\033["表示终端转义字符开始,"m"意味着设置属性然后结束非常规字符序列,里面有实际作用的字符是45;32;5和0,修改45;32;5可以修改不同的颜色组合,及显示形式。45;32;5这几个数字位置可以任意改动。

          编码          颜色/动作
          0            重新设置属性到缺省设置
          1            设置粗体
          2            设置一半亮度(模拟彩色显示器的颜色)
          4            设置下划线(模拟彩色显示器的颜色)
          5            设置闪烁
          7            设置反向图象

          22           设置一般密度
          24           关闭下划线
          25           关闭闪烁
          27           关闭反向图象

          30           设置黑色前景
          31           设置红色前景
          32           设置绿色前景
          33           设置×××前景
          34           设置蓝色前景
          35           设置紫色前景
          36           设置青色前景
          37           设置白色(灰色)前景

          38           在缺省的前景颜色上设置下划线
          39           在缺省的前景颜色上关闭下划线

          40           设置黑色背景
          41           设置红色背景
          42           设置绿色背景
          43           设置×××背景
          44           设置蓝色背景
          45           设置紫色背景
          46           设置青色背景
          47           设置白色(灰色)背景
          49           设置缺省黑色背景


我这里使用了45设置其背景色为紫色32设置字体颜色也就是前景颜色为绿色5表示闪烁模式。0m表示字符效果到此结束

第一个\033[0m后有两个空格,因为不想让小三角靠边显示;

第二个\033[45;32;5m***显示背景为紫字体为绿且闪烁的三个***;

第三个\033[om\n之所以加\n是因为最后一个*要换行,换行后还要接三个空格;

第四个\033[45;32;5m*显示背景为紫字体为绿且闪烁的一个*;

第五个\033[0m字符效果到此结束。



对echo命令的感受

echo是回显命令,可以在屏幕显示一些内容,这些内容可以是自己输入的,也可以是命令显示,初学时感觉不到echo这个命令有什么实际的使用价值,不过等再学一阵接触到编写脚本,就会发现echo人性化的地方,它可以显示一些你定义的东西给使用者看。比如你写了个脚本,这个脚本需要用户输入一些内容,此时若没有使用echo,不考虑read命令,就会什么也不显示,如果使用者不知道这个脚本的作用那他根本不知道要输入什么东西。echo是一个很实用且使用率很高的命令,需要自己去细细体会。


查找的资料:

http://blog.csdn.net/qualcent/article/details/7106483 echo使用信息

http://www.linuxidc.com/Linux/2015-05/117259.htm Linu命令引用与替换

CentOS6.8中man手册