一。最基本的用法:输入什么,就显示什么。

echo a b c     //打印显示 a b c ,并且默认自动换行



演示:

[root@localhost ~]# echo a b c 

a b c

    echo -n a b c     //打印显示a b c 但是不换行

演示:

[root@localhost ~]# echo -n a b c 

a b c[root@localhost ~]# 

    echo要显示指定的字符串,后面的字符串可以加上双引号,也可以不加双引号,但是建议加上上引号

演示:

[root@localhost ~]# echo  "a b c"

a b c


二。echo $PATH

    会显示PATH路径,这表明$是一个特殊符号

    在$后的字符串是一个变量

echo $HOSTNAME     //系统自带的变量

echo $USER     //当前用户名

echo $UID     //当前用户的UID

变量前面要加符号 $

由于符号$在echo中有特殊的含义,所以要想打印出一个普通的$符号,则我们就需要用到转义字符

演示:

[root@localhost ~]# echo "\$"

$

对比一下:

[root@localhost ~]# echo $UID

0

[root@localhost ~]# echo "\$UID"

$UID

对比echo的双引号"",单引号'',和反向单引号``的区别:


演示:

[root@localhost ~]# echo "$UID"

0


演示:

[root@localhost ~]# echo '$UID'

$UID


演示:

[root@localhost ~]# echo `echo $UID`

0

总结:

单引号为强引用,双引号为弱引用,反向单引号为替换命令。单引号是“傻符号”有什么输出什么,反向单引号是最“聪明的符号”,双引号结余他们之间。

与反向单引号功能相同的还有 $()

演示:

[root@localhost ~]# echo $(whoami)

root

那什么时候用这个反向单引号``,或者 $() 

当我们用一个命令去调用另一个命令的时候,使用它们。被调用的命令写在反向单引号或者$()之中。


三。echo除了回显,还有选项

    -e    //激活转义字符。支持在引号之中写的字符串,有一些特殊的功能。比如说在双引号里面加上转义字符。

    -n    //不在字符的最后自动换行,因为echo默认回显后自动换行  等同于转义字符的 \c

转义字符:

    \a 发出警报

    \b 删除前一个字符

    \c 最后不加上换行符

    \f 换行,但是光标仍旧停留在原来的位置

    \n 换行且光标移动至行首

    \r 光标移动至行首,但不换行, 其实用法是,替换前面的内容。

    \t 插入tab,横向制表符

    \v 与\f相同

    \\ 插入\字符,不用带选项 -e

    \nnn插入nnn(八进制)所代表的ASCII字符


对比演示:

1.[root@localhost ~]# echo  "aaa\c"

aaa\c


2.[root@localhost ~]# echo -e "aaa\c"

aaa[root@localhost ~]# 


3.[root@localhost ~]# echo -e "aaa\a"

aaa


4.[root@localhost ~]# echo -n "aaa"

aaa[root@localhost ~]# 


5.[root@localhost ~]# echo -e "aaa\b"

aaa

[root@localhost ~]# echo -e "aaa\bxyz"

aaxyz

[root@localhost ~]# echo -e "\baaa"                                    aaa


6.[root@localhost ~]# echo -e "aaaa\n"

aaaa


[root@localhost ~]# 


7.[root@localhost ~]# echo -e "aaaa\r"

aaaa

[root@localhost ~]# 

[root@localhost ~]# echo -e "aaa\rzxf"

zxf

[root@localhost ~]# 


8.[root@localhost ~]# echo  -e "aaa\tbbb"

aaabbb

[root@localhost ~]# 


9.[root@localhost ~]# echo  -e "aaa\vbbb"

aaa

   bbb

[root@localhost ~]# 


10.[root@localhost ~]# echo  -e "aaa\fbbb"

aaa

   bbb

[root@localhost ~]# 


11.[root@localhost ~]# echo   "aaa\\bbb"

aaa\bbb

[root@localhost ~]# 


12.[root@localhost ~]# echo -e '\0101'        //用echo打印ASCII表的值,0表示八进制数

A

[root@localhost ~]# 


说明:当echo加上选项 -e 后,在引号中加上转义字符,就会不仅回显,而且还会执行转义字符的含义


四。大括号:{}     //打印重复字符串的简化形式

演示:

1.[root@localhost ~]# echo file{1,2,3}

file1 file2 file3

[root@localhost ~]# 


2.[root@localhost ~]# cd /testdir/

[root@localhost testdir]# ls

dir  dir1  etcback2016-07-27  lost+found

[root@localhost testdir]# touch 1 2 3

[root@localhost testdir]# ls

1  2  3  dir  dir1  etcback2016-07-27  lost+found

[root@localhost testdir]# rm -f {1,2,3}

[root@localhost testdir]# ls

dir  dir1  etcback2016-07-27  lost+found

[root@localhost testdir]# 


五。把一个命令的输出打印,给另一个命令作为参数,其实就是echo中命令的调用,就是反向单引号,或$()的使用

演示:

1.[root@localhost testdir]# echo "This system's name is $(hostname)"

This system's name is localhost.localdomain

[root@localhost testdir]#


2.[root@localhost testdir]# echo "i am" `whoami`

i am root

[root@localhost testdir]# echo "i am `whoami`"

i am root

[root@localhost testdir]# 


六。查看当前系统所用的shell

演示:

[root@localhost testdir]# echo $SHELL

/bin/bash

[root@localhost testdir]# 


查看当前系统支持哪些shell

演示:

[root@localhost testdir]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/bin/dash

/bin/tcsh

/bin/csh

[root@localhost testdir]# 


七。再练习中曾经遇到过的问题

//目的是想一次显示三个文件,下面演示比较,重复的内容合在一起时,file应该与合在一起

[root@localhost testdir]# echo file {1,2,3}

file 1 2 3

[root@localhost testdir]# 

比较

[root@localhost testdir]# echo file{1,2,3}

file1 file2 file3

[root@localhost testdir]# 


//目的是想一次显示三个文件,下面演示比较,说明前面的$echo仅仅是一个变量根本没有赋值,所以显示为空,进而只显示了三个文件。

[root@localhost testdir]# echo $echo file{1,2,3}

file1 file2 file3

[root@localhost testdir]# 

比较

[root@localhost testdir]# echo $echo


[root@localhost testdir]# 

比较

[root@localhost testdir]# echo $echo

1

[root@localhost testdir]# 

比较

[root@localhost testdir]# export echo=2

[root@localhost testdir]# echo $echo file{1,2,3}

2 file1 file2 file3

[root@localhost testdir]#

到此为止,就解开了我的,一个疑问,为什么在一开始没有给echo赋值前,echo $echo file{1,2,3}还是显示三个文件


八。echo 打印带有彩色的文字


文字色:

演示:

 wKioL1eaTsDy1yEOAAAZqzu-A4g774.png

分析:

\e[1;31m    //将颜色设置为红色

\e[0m        //将颜色重新置回

颜色码:

重置 0    黑色 30 红色 31 绿色 32 ××× 33 蓝色 34 洋红 35 青色 36 白色 37


背景色:

演示:

wKiom1eaUEHjJERWAAAaNmRqdPM820.png

分析:

显示背景颜色为绿色

颜色码:重置 0 黑色 40 红色 41 绿色 42 ××× 43 蓝色 44 洋红 45 青色 46 白色 47


文字闪动:

演示:

wKiom1eaVd2BVcrnAAAbdSp3b-4019.png

上面的字体会不停的闪动。

红色数字处还有其他数字参数,0关闭所有属性,1设置高亮度(加粗),4下划线,5闪烁,7反显,8消隐


练习:

用echo命令回显一个闪烁的等边三角形

形如:

            *

           ***          

          *****

         *******

演示:

wKioL1eapjDSi8yUAAAo99hAeBE015.png