目录

1、关机和重启命令

     shutdown,reboot,half,poweroff,init #

2、日期和时间

     date,clock,hwclock,cal,TZ,

3、显示当前系统已经登录的用户及中终端

     tty,whoami,who,who am i,w,  

4、hash,PATH,which,whereis,whatis,file,echo


1、关机和重启命令

安全关机方式:把当前文件系统上所有数据保存到磁盘上并关机或重启

shutdown

    shutdown  [OPTION]...  TIME [MESSAGE]

      -r 重启

      -h 关机

      -t 秒数 : 设定在切换至不同的runlevel之前, 警告和删除二讯号之间的延迟时间(秒)

      -k 仅送出警告讯息文字, 但不是真的要 shutdown

      -c 将已经正在 shutdown 的动作取消.

TIME:

    now

    +m          m分钟后关机,+0表立即

    hh:mm    下个hh:mm关机或重启

[root@Node3 src]# shutdown -r +10

Broadcast message from root@Node3
	(/dev/pts/0) at 10:05 ...

The system is going down for reboot in 10 minutes!
^Cshutdown: Shutdown cancelled
[root@Node3 src]# shutdown -c
shutdown: Cannot find pid of running shutdown
[root@Node3 src]# shutdown -r +10 hello

Broadcast message from root@Node3
	(/dev/pts/0) at 10:05 ...

The system is going down for reboot in 10 minutes!
hello 
^Cshutdown: Shutdown cancelled

poweroff   相当于shutdown -h now

halt           相当于shutdown -h now

init 0          相当于shutdown -h now

reboot       相当于shutdown -r now

init 6          相当于shutdown -r now


2、日期时间命令

先介绍几个概念

Atomic Clock:   原子钟

       现在计算时间最准确的是使用原子震荡周期所计算的物理时钟(Atomic Clock),因此也被定义为标准时间(International Atomic Time)

UTC(coordinated Universal Time):协和标准时间

      就是利用 Atomic Clock 为基准定义出来的正确时间;

      也叫世界统一时间、世界标准时间,国际协调时间。

硬件时钟: 

      硬件时钟是指嵌在主板上的特殊的电路, 它的存在就是平时我们关机之后还可以计算时间的原因

系统时钟: 

      就是操作系统的kernel所用来计算时间的时钟. 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值;时间戳

时区:

    为什么会将地球分为不同时区呢?因为地球总是自西向东自转,东边总比西边先看到太阳,东边的时间也总比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算。

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。

UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。

关于时间的几个标准,如下所示,具体可以Google、Baidu搜索一下。

     CST:中国标准时间(China Standard Time),这个解释可能是针对RedHat Linux。

     UTC:协调世界时,又称世界标准时间,简称UTC,从英文国际时间/法文协调时间”Universal Time/Temps Cordonné”而来。中国大陆、香港、澳门、台湾、蒙古国、新加坡、马来西亚、菲律宾、澳洲西部的时间与UTC的时差均为+8,也就是UTC+8。

     GMT:格林尼治标准时间(旧译格林威治平均时间或格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的×××格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

在中国,正确的时区应为 CST(Chinese Standard Time),也就是我们通常所说的北京时间.

那么中国当地的时间晚上8点的话,我们可以有下面两种表示方式

20:00 CST

12:00 UTC

因为中国处在UTC+8时区,依次类推,在UTC标准时间,就是12:00了.

不管通过任何渠道我们想要同步系统的时间,通常提供方只会给出UTC+0的时间值而不会提供时区(因为它不知道你在哪里).所以当我们设置系统时间的时候,设置好时区是首先要做的工作

查看当前时区:

[root@Node3 ~]# date
2016年 11月 28日 星期一 10:54:47 CST
[root@Node3 ~]# date -R
Mon, 28 Nov 2016 10:54:50 +0800
[root@Node3 ~]# cat /etc/sysconfig/clock 
ZONE="Asia/Shanghai"

设置当前时区:

1)通过修改/etc/localtime文件

[root@Node3 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

再此查看当前时区已经修改成功,但/etc/sysconfig/clocl里的内容不会发生变化,但无影响。

2)通过设置环境变量TZ

[root@Node3 ~]# echo $TZ               #这个变量默认没有设置

[root@Node3 ~]# export TZ=America/New_York
[root@Node3 ~]# date
2016年 11月 27日 星期日 22:10:01 ES
[root@Node3 ~]# echo "export TZ=Asia/Shanghai" >>/etc/profile    #保存至配置文件,否则重启失效

        $TZ环境变量的优先级要比/etc/localtime要高,并且在设置该全局环境变量后

查看当前相应时区的时间:

[root@Node3 ~]# date -u
2016年 11月 28日 星期一 03:32:04 UTC
[root@Node3 ~]# zdump utc
utc  Mon Nov 28 03:17:00 2016 utc
[root@Node3 ~]# zdump cst
cst  Mon Nov 28 03:17:03 2016 cst
[root@Node3 ~]# zdump CST
CST  Mon Nov 28 03:17:14 2016 CST
[root@Node3 ~]# zdump gmt
gmt  Mon Nov 28 03:17:55 2016 gmt
[root@Node3 ~]# zdump utc-8
utc-8  Mon Nov 28 11:19:16 2016 utc
[root@Node3 ~]# zdump Asia
Asia  Mon Nov 28 03:20:42 2016 Asia
[root@Node3 ~]# zdump Asia/Shanghai
Asia/Shanghai  Mon Nov 28 11:20:49 2016 CST
[root@Node3 ~]# zdump America
America  Mon Nov 28 03:21:38 2016 America
zdump: warning: zone "America" abbreviation "America" has more than 6 alphabetics
[root@Node3 ~]# zdump America/New_York
America/New_York  Sun Nov 27 22:21:46 2016 EST

上面为什么CST时区表示的时间也和本地时间不同呢?

CST:CST同时可以代表如下 4 个不同的时区:
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00

可见,CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

EDT - Eastern Daylight Time 东部夏令时间 

CDT - Central Daylight Time 中部夏令时间


date

       显示或设置时间、日期

date [OPTION]...   [+FORMAT]             #格式化显示时间日期

date  [-u|--utc|--universal]  [MMDDhhmm[[CC]YY][.ss]]              #设置时间日期

     utc   一般不设置     月 日 时 分 2位数年或4位数年 .秒

显示当前系统时间、日期:

[root@Node3 ~]# date
2016年 11月 28日 星期一 10:26:54 CST    
[root@Node3 ~]# date -d "20101010"        #显示给定的时间
2010年 10月 10日 星期日 00:00:00 CST

       date 命令的 -d 选项,该选项非常有用。使用这个功能强大的选项,通过将日期作为引号括起来的参数提供,您可以快速地查明一个特定的日期。-d 选项可以告诉您,相对于当前日期若干天的究竟是哪一天,从现在开始的若干天或若干星期以后,或者以前(过去)。通过将这个相对偏移使用引号括起来,作为 -d 选项的参数,就可以完成这项任务。

具体说明如下:

date -d "nov 22"  今年的 11 月 22 日是星期三

date -d '2 weeks' 2周后的日期

date -d 'next monday' (下周一的日期)

date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d

date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d

date -d last-month +%Y%m(上个月是几月)

date -d next-month +%Y%m(下个月是几月)

使用 ago 指令,您可以得到过去的日期:

date -d '30 days ago' (30天前的日期)

使用负数以得到相反的日期:

date -d 'dec 14 -2 weeks' (相对:dec 14这个日期的两周前的日期)

date -d '-100 days' (100天以前的日期)

date -d '50 days'(50天后的日期)

设置当前系统的时间、日期:

[root@Node3 ~]# date 
2016年 11月 28日 星期一 11:28:41 CST
[root@Node3 ~]# date 01010101              
2016年 01月 01日 星期五 01:01:00 CST
[root@Node3 ~]# date
2016年 01月 01日 星期五 01:01:06 CST
[root@Node3 ~]# date 020210102011.55
2011年 02月 02日 星期三 10:10:55 CST
[root@Node3 ~]# date
2011年 02月 02日 星期三 10:10:55 CST        #设置的太离谱会报错
[root@Node3 ~]# date 020210103011.55
date: 无法设置日期: 无效的参数
3011年 02月 02日 星期六 10:10:55 CST
[root@Node3 ~]# date 020210101911.55
date: 无法设置日期: 无效的参数

                  date   无法只修改时间,至少要加上月,日才行

date -s 也可以设置时间,日期:

[root@Node3 ~]# date -s 101010              #只设置日期,那时间为0
2010年 10月 10日 星期日 00:00:00 CST
[root@Node3 ~]# date -s "101010 10:10:10"
2010年 10月 10日 星期日 10:10:10 CST

[root@Node3 ~]# date -s "20101010 10:10:10"  #设置日期和时间
2010年 10月 10日 星期日 10:10:10 CST
[root@Node3 ~]# date -s "20001010 10:10:10"
2000年 10月 10日 星期二 10:10:10 CST
[root@Node3 ~]# date -s 11:11:11           #只设置时间
2050年 10月 10日 星期一 11:11:11 CST

date [OPTION]...   [+FORMAT]      #格式化显示时间日期

FORMAT:

    %F:YYYY-MM-DD    日期

    %D:MM/DD/YY       日期

    %y:2位的年

    %Y:4位的年

    %m:月

    %d:日

    %T: HH:MM:SS        时间

    %H,%k    小时

    %M    分

    %S     秒

    %s:  时间戳   从Unix元年(1970年1月1号 00:00:00)至此刻所经过的秒数

[root@Node3 ~]# date +%F
2016-11-28
[root@Node3 ~]# date +%D
11/28/16
[root@Node3 ~]# date +%y
16
[root@Node3 ~]# date +%Y
2016
[root@Node3 ~]# date +%m
11
[root@Node3 ~]# date +%d
28
[root@Node3 ~]# date +%Y%m%d
20161128

[root@Node3 ~]# date "+%F %T"
2016-11-28 12:21:17

[root@Node3 ~]# date '+%Y-%m-%d-%H-%M-%S'
2016-11-28-12-26-16
[root@Node3 ~]# date '+%F-%H-%M-%S'
2016-11-28-12-26-24

clock或hwclock     

             获取或设置硬件时钟

    hwclock  -w,--systohc      从系统时间同步硬件时间,

    hwclock   -s,--hctosys       从硬件时间同步系统时间

hwclock 和clock 不加区分使用

显示当前硬件时间:

[root@Node3 ~]# clock
2016年11月27日 星期日 23时27分31秒  -0.704731 seconds
[root@Node3 ~]# hwclock
2016年11月27日 星期日 23时27分35秒  -0.752325 seconds

设置硬件时间:

[root@Node3 ~]# date -s "101010"
2010年 10月 10日 星期日 00:00:00 CST
[root@Node3 ~]# date
2010年 10月 10日 星期日 00:00:00 CST
[root@Node3 ~]# clock -w
[root@Node3 ~]# date
2010年 10月 10日 星期日 00:00:12 CST
[root@Node3 ~]# clock
2010年10月10日 星期日 00时00分14秒  -0.595390 seconds

cal  

       显示日期

cal  [[[day] month] year]

[root@Node3 ~]# cal         #默认显示本月
     十一月 2016    
日 一 二 三 四 五 六
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

[root@Node3 ~]# cal 2015    #显示指定年
                               2015                               

        一月                   二月                   三月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
             1  2  3    1  2  3  4  5  6  7    1  2  3  4  5  6  7
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    8  9 10 11 12 13 14
11 12 13 14 15 16 17   15 16 17 18 19 20 21   15 16 17 18 19 20 21
18 19 20 21 22 23 24   22 23 24 25 26 27 28   22 23 24 25 26 27 28
25 26 27 28 29 30 31                          29 30 31

        四月                   五月                   六月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
          1  2  3  4                   1  2       1  2  3  4  5  6
 5  6  7  8  9 10 11    3  4  5  6  7  8  9    7  8  9 10 11 12 13
12 13 14 15 16 17 18   10 11 12 13 14 15 16   14 15 16 17 18 19 20
19 20 21 22 23 24 25   17 18 19 20 21 22 23   21 22 23 24 25 26 27
26 27 28 29 30         24 25 26 27 28 29 30   28 29 30
                       31
        七月                   八月                   九月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
          1  2  3  4                      1          1  2  3  4  5
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    6  7  8  9 10 11 12
12 13 14 15 16 17 18    9 10 11 12 13 14 15   13 14 15 16 17 18 19
19 20 21 22 23 24 25   16 17 18 19 20 21 22   20 21 22 23 24 25 26
26 27 28 29 30 31      23 24 25 26 27 28 29   27 28 29 30
                       30 31
        十月                  十一月                 十二月       
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
             1  2  3    1  2  3  4  5  6  7          1  2  3  4  5
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    6  7  8  9 10 11 12
11 12 13 14 15 16 17   15 16 17 18 19 20 21   13 14 15 16 17 18 19
18 19 20 21 22 23 24   22 23 24 25 26 27 28   20 21 22 23 24 25 26
25 26 27 28 29 30 31   29 30                  27 28 29 30 31


[root@Node3 ~]# cal 11 2015      #指定年月
     十一月 2015    
日 一 二 三 四 五 六
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

[root@Node3 ~]# cal 11 11 2015   #指定年月日
     十一月 2015    
日 一 二 三 四 五 六
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

3、显示当前系统已经登录的用户及中终端

whoami        显示当前用户

who              显示登录至当前系统的所有用户及终端

who am i      显示当前用户和终端

who [选项]... [ 文件 | 参数1 参数2 ]

  -a, --all等于-b -d --login -p -r -t -T -u 选项的组合

  -b, --boot上次系统启动时间

  -d, --dead显示已死的进程

  -H, --heading输出头部的标题列

  -l,--login显示系统登录进程

      --lookup尝试通过 DNS 查验主机名

  -m只面对和标准输入有直接交互的主机和用户

  -p, --process显示由 init 进程衍生的活动进程

  -q, --count列出所有已登录用户的登录名与用户数量

  -r, --runlevel显示当前的运行级别

  -s, --short只显示名称、线路和时间(默认)

  -T, -w, --mesg用+,- 或 ? 标注用户消息状态

  -u, --users列出已登录的用户

[root@Node3 ~]# who -d
[root@Node3 ~]# who -p
[root@Node3 ~]# who -q
root root root
# 用户数=3
[root@Node3 ~]# who -s
root     pts/1        2016-11-28 11:03 (192.168.10.10)
root     pts/2        2016-11-28 11:03 (192.168.10.10)
root     pts/3        2016-11-28 11:03 (192.168.10.10)
[root@Node3 ~]# who -T
root     + pts/1        2016-11-28 11:03 (192.168.10.10)
root     + pts/2        2016-11-28 11:03 (192.168.10.10)
root     + pts/3        2016-11-28 11:03 (192.168.10.10)
[root@Node3 ~]# who -u   #当前用户进程号
root     pts/1        2016-11-28 11:03 01:38        1504 (192.168.10.10)
root     pts/2        2016-11-28 11:03   .          1505 (192.168.10.10)
root     pts/3        2016-11-28 11:03 01:38        1516 (192.168.10.10)
[root@Node3 ~]# who -l
登录   tty1         2016-11-28 11:03              2249 id=1
登录   tty2         2016-11-28 11:03              2251 id=2
登录   tty3         2016-11-28 11:03              2253 id=3
登录   tty4         2016-11-28 11:03              2255 id=4
登录   tty5         2016-11-28 11:03              2257 id=5
登录   tty6         2016-11-28 11:03              2263 id=6

[root@Node3 ~]# whoami
root
[root@Node3 ~]# who am i
root     pts/2        2016-11-28 11:03 (192.168.10.10)

w    

-:只显示头信息。

-h:不显示各栏位的标题信息列。 

[root@Node3 ~]# whoami
root
[root@Node3 ~]# who
root     pts/1        2016-11-28 11:03 (192.168.10.10)
root     pts/2        2016-11-28 11:03 (192.168.10.10)
root     pts/3        2016-11-28 11:03 (192.168.10.10)
[root@Node3 ~]# who am i
root     pts/2        2016-11-28 11:03 (192.168.10.10)
[root@Node3 ~]# w
 12:44:08 up  1:40,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    192.168.10.10    11:03    1:31m  0.01s  0.01s -bash
root     pts/2    192.168.10.10    11:03    0.00s  0.25s  0.00s w
root     pts/3    192.168.10.10    11:03    1:31m  0.04s  0.00s bash
#用户    终端     终端ip       什么时候登录的 空闲时间 占用CPU的时间     正在运行的进程

      JCPU指的是与该tty终端连接的所由进程占用的时间,不包括过去的后台作业时间;

      PCPU 指的是当前进程(即w项中显示的)所占用的时间

例如:
user3     pts/39  192.168.0.5    07Jul13  2:11m  1.62s  1.58s ssh 10.1.1.2
user3用户2013年7月7日从IP 192.168.0.5登录到本机,终端号pts/39,已经2小时11分没有操作了,登录后其所有进程占用CPU时间1.62秒,当前执行的程序是ssh 10.1.1.2,占用CPU时间1.58秒


3、hash

          记录或显示程序位置

      shell通过环境变量PATH来定义应用程序文件查找路径:路径通常使用冒号且查找次序从左至右

      系统在执行外部命令时,会先查看shell 的命令hash缓存表,如果存在,就直接使用路径引用,否 则,需要遍历PATH环境变量所指向的目录来查找

[root@Node3 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

哈希:

       key value:以键为查找标准比对,找到对应的键后,其对应的值则为所需要的结果


hash -r:情况缓存

hash -d NAME:清除指定名称对应的缓存

[root@Node3 ~]# hash -r
[root@Node3 ~]# hash
hash: hash table empty
[root@Node3 ~]# date
2016年 11月 28日 星期一 13:58:06 CST
[root@Node3 ~]# hash
hits	command              #缓存命中的次数  路径路径
   1	/bin/date
[root@Node3 ~]# date
2016年 11月 28日 星期一 13:58:14 CST
[root@Node3 ~]# hash
hits	command
   2	/bin/date
[root@Node3 ~]# hash -d date
[root@Node3 ~]# hash
hash: hash table empty

4、which 和 whereis

[root@Node3 ~]# type ls
ls is aliased to `ls --color=auto'
[root@Node3 ~]# type cd
cd is a shell builtin
[root@Node3 ~]# which cd
/usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@Node3 ~]# type date
date is hashed (/bin/date)
[root@Node3 ~]# type ifconfig
ifconfig is /sbin/ifconfig

which 

          显示应用程序文件的位置

[root@Node3 ~]# which date
/bin/date
[root@Node3 ~]# which cd
/usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@Node3 ~]# which passwd
/usr/bin/passwd
[root@Node3 ~]# which inittab
/usr/bin/which: no inittab in (/usr/lib64/qt-3.3/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@Node3 ~]# which /etc/inittab      #只能查找命令的文件位置
/usr/bin/which: no inittab in (/etc)

whereis

    显示指定命令或文件的帮助信息   

[root@Node3 ~]# whereis cd
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
[root@Node3 ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@Node3 ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz
[root@Node3 ~]# whereis inittab
inittab: /etc/inittab /usr/share/man/man5/inittab.5.gz
[root@Node3 ~]# whereis tab
tab:

5、file  

         查看文件的内容格式

[root@Node3 ~]# file /etc/inittab
/etc/inittab: ASCII English text
[root@Node3 ~]# file /tmp/src/test.sh 
/tmp/src/test.sh: ASCII text
[root@Node3 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
[root@Node3 ~]# file inittab
inittab: cannot open `inittab' (No such file or directory)
[root@Node3 ~]# file ls
ls: cannot open `ls' (No such file or directory)

6、echo命令

echo  [SHORT-OPTION]...  [STRING]...

echo  LONG-OPTION

      回显                          

-n:关闭自动换行功能

-e:启动转义符

   \t:tab键

  \n:new line 换行

  \b:退格键,删除前一个字符,但是不能放在最后一个位置,WHY?    #和显示终端有关

颜色控制:  

echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"

例如: 

echo -e "\033[41;37m TonyZhang \033[0m"
其中41的位置代表底色, 37的位置是代表字的颜色

注:字符串前后可以没有空格,如果有的话,输出也是同样有空格

[root@Node3 ~]# echo -e "\033[41;37mabcde\bf\033[0m"
abcdf
[root@Node3 ~]# echo -e "\033[41;37m abcde\bf \033[0m"
 abcdf

控制选项说明 :

\033[0m 关闭所有属性 
\033[1m 设置高亮度 
\033[4m 下划线 
\033[5m 闪烁 
\033[7m 反显 
\033[8m 消隐 
\033[30m -- \33[37m 设置前景色: 

    echo -e "\033[30m 黑色字 \033[0m"
     echo -e "\033[31m 红色字 \033[0m"
     echo -e "\033[32m 绿色字 \033[0m"
     echo -e "\033[33m ×××字 \033[0m"
     echo -e "\033[34m 蓝色字 \033[0m"
     echo -e "\033[35m 紫色字 \033[0m"
     echo -e "\033[36m 天蓝字 \033[0m"
     echo -e "\033[37m 白色字 \033[0m" 

\033[40m -- \033[47m 设置背景色 

    echo -e "\033[40;37m 黑底白字 \033[0m"
     echo -e "\033[41;37m 红底白字 \033[0m"
     echo -e "\033[42;37m 绿底白字 \033[0m"
     echo -e "\033[43;37m 黄底白字 \033[0m"
     echo -e "\033[44;37m 蓝底白字 \033[0m"
     echo -e "\033[45;37m 紫底白字 \033[0m"
     echo -e "\033[46;37m 天蓝底白字 \033[0m"
     echo -e "\033[47;30m 白底黑字 \033[0m"

\033[nA 光标上移n行 

\033[nB 光标下移n行 
\033[nC 光标右移n行 
\033[nD 光标左移n行 
\033[y;xH设置光标位置 
\033[2J 清屏 
\033[K 清除从光标到行尾的内容 
\033[s 保存光标位置 
\033[u 恢复光标位置 
\033[?25l 隐藏光标 
\033[?25h 显示光标 

[root@Node3 ~]# echo -e "\033[45 TonyZhang \033[0m"
onyZhang 
[root@Node3 ~]# echo -e "\033[45m TonyZhang \033[0m"
 TonyZhang 
 
[root@Node3 ~]# echo -e "\033[31;42mTonyZhang\033[0m"
TonyZhang
[root@Node3 ~]# echo -e "\033[42;31mTonyZhang\033[0m"
TonyZhang
[root@Node3 ~]# echo -e "\033[41;32mTonyZhang\033[0m"

可以看到跟顺序无关,就是4[0-7]是背景色,3[0-7]是前景色