echo命令使用说明

1、命令概述

echo命令用于在终端设备上输出字符串或变量提取后的值,Linux系统中最常用的几个命令之一,操作简单。使用echo命令输出一段字符串到屏幕上,起到给用户提示的作用。

2、命令语法

echo【选项】 【字符串】 

3、命令选项

-n        不输出结尾的换行符

-e “\a” 发出警告音

-e “\b” 删除前面的一个字符

-e “\c” 结尾不加换行符,不换行输出,若 "\c" 后面不存在字符,作用相当于 echo -n;若 "\c" 后面存在字符,后面的字符不会输出

-e “\f” 换行,但是换行后的新行开头位置连接着上一行的行尾

-e “\n” 换行,光标移至行首

-e “\r” 表示 "\r" 后面的字符覆盖 "\r" 前面的同等长度的字符(从首字符开始覆盖)

-e "\t" 插入 tab

-e "\v" 与 "\f" 相同

-e "\\" 插入 \ 字符

-E      禁止反斜杠转移,与-e参数功能相反

4、命令示例

4.1 输出一段字符串

1 [root@localhost ~]# echo "hello world!"       #输出字符串
2 hello world!
3 [root@localhost ~]# echo '"hello world!"'     #输出字符串,带 "" 双引号
4 "hello world!"

4.2 输出变量提取后的值

1 [root@localhost ~]# echo $PATH
2 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
3 [root@localhost ~]# echo $PS1
4 [\u@\h \W]\$
5 [root@localhost ~]# echo $LANG
6 zh_CN.UTF-8
7 [root@localhost ~]# 

4.3 对内容进行转义,不让$符号的提取变量值功能生效:

1 [root@localhost ~]# echo \$PATH1
2 $PATH1
3 [root@localhost ~]# echo \$PS1
4 $PS1
5 [root@localhost ~]# echo \$LANG
6 $LANG
7 [root@localhost ~]# 

4.4 结合输出重定向符,将字符串信息导入文件中:

1 [root@localhost ~]# echo "abcd" > a.txt     #若 a.txt 不存在,直接创建;若 a.txt 存在,直接覆盖原内容。
2 
3 [root@localhost ~]# echo "abcd" >> b.txt    #若 b.txt 不存在,直接创建;若 b.txt 存在,追加到原内容最后。

4.5 使用 ` ` 反引号符(键盘左上角),可执行命令,并输出其结果到终端:

[root@localhost ~]# echo `date`
Wed Oct 16 11:29:35 CST 2019
[root@localhost ~]# echo `ifconfig`
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 183.232.197.8 netmask 255.255.255.224 broadcast 183.232.197.31 inet6 fe80::ed01:ae56:a39:82b8 prefixlen 64 scopeid 0x20<link> ether 00:50:56:82:b1:44 txqueuelen 1000 (Ethernet) RX packets 989075 bytes 379924582 (362.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 784756 bytes 82511244 (78.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 96 bytes 8320 (8.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 96 bytes 8320 (8.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# 

以上可见 ifconfig 命令执行输出结果文本格式改变,不便于读写,如果想要按照 ifconfig 命令原格式输出,可加 " " 双引号:

 1 [root@localhost ~]# echo "`ifconfig`"
 2 ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 3         inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.1
 4         inet6 fe80::ed01:ae56:a39:82b8  prefixlen 64  scopeid 0x20<link>
 5         ether 00:50:00:82:00:44  txqueuelen 1000  (Ethernet)
 6         RX packets 989254  bytes 379937326 (362.3 MiB)
 7         RX errors 0  dropped 0  overruns 0  frame 0
 8         TX packets 784902  bytes 82522758 (78.6 MiB)
 9         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
10 
11 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
12         inet 127.0.0.1  netmask 255.0.0.0
13         inet6 ::1  prefixlen 128  scopeid 0x10<host>
14         loop  txqueuelen 1  (Local Loopback)
15         RX packets 96  bytes 8320 (8.1 KiB)
16         RX errors 0  dropped 0  overruns 0  frame 0
17         TX packets 96  bytes 8320 (8.1 KiB)
18         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
19 [root@localhost ~]# 

4.6 -e “\n” 换行,光标移至行首,输出带有换行符的内容:

1 [root@localhost ~]# echo -e "a\nb\nc\nd"
2 a
3 b
4 c
5 d
6 [root@localhost ~]# 

4.7 -e “\b” 删除前面的一个字符,输出信息中删除 \b 前面的字符(\b 后面还有字符才能执行):

1 [root@localhost ~]# echo -e "1234567\b"      #\b 后面没有字符,所以不执行
2 1234567
3 [root@localhost ~]# echo -e "123\b4567"      #\b 后面有字符,删除 \b 前面的字符3
4 124567
5 [root@localhost ~]# echo -e "123456\b7"      #\b 后面有字符,删除 \b 前面的字符6
6 123457
7 [root@localhost ~]# 

如果要删除多个字符,可使用\b\b、\b\b\b,以此类推,注意 \b 的数量只能小于等于后面的字符数和前面的字符数:

 1 [root@localhost ~]# echo -e "123456\b\b789"
 2 1234789
 3 [root@localhost ~]# echo -e "123456\b\b\b789"
 4 123789
 5 [root@localhost ~]# echo -e "123456\b\b\b\b789"     #\b 的数量大于后面的字符数,命令规则改变。
 6 127896
 7 [root@localhost ~]# echo -e "12\b3456\b\b789"
 8 134789
 9 [root@localhost ~]# 

4.8 -n 不输出结尾的换行符,不换行输出:

 1 [root@localhost ~]# echo "hello world"
 2 hello world
 3 [root@localhost ~]# echo -n "hello world"
 4 hello world[root@localhost ~]#                                   #没有换行,直接输出
 5 [root@localhost ~]# echo "hello world" ; echo "hello world" 
 6 hello world
 7 hello world
 8 [root@localhost ~]# echo -n "hello world" ; echo "hello world" 
 9 hello worldhello world                                           #没有换行,直接输出
10 [root@localhost ~]# 

4.9 -e "\t" 插入 tab键:

1 [root@localhost ~]# echo -e "01234\t56789"
2 01234    56789                                #中间有个 tab键
3 [root@localhost ~]# 

4.10 -c 不换行输出,若 "\c" 后面不存在字符,作用相当于 echo -n;若 "\c" 后面存在字符,后面的字符不会输出:

1 [root@localhost ~]# echo -e "123\c"
2 123[root@localhost ~]# 
3 [root@localhost ~]# echo -n "123"
4 123[root@localhost ~]# 
5 [root@localhost ~]# echo -e "123\c456"
6 123[root@localhost ~]# 
7 [root@localhost ~]# 

4.11 -e “\f” 换行,但是换行后的新行开头位置连接着上一行的行尾:

1 [root@localhost ~]# echo -e "123\f4567"
2 123
3    4567
4 [root@localhost ~]# echo -e "123\f4567\fabcd"
5 123
6    4567
7        abcd
8 [root@localhost ~]# 

4.12 -e “\r” 表示 "\r" 后面的字符覆盖 "\r" 前面的同等长度的字符(从首字符开始覆盖)

1 [root@localhost ~]# echo -e "abcdefg\r123"
2 123defg
3 [root@localhost ~]# echo -e "abc\r123"
4 123
5 [root@localhost ~]# echo -e "abcdefg\r12345"
6 12345fg
7 [root@localhost ~]# echo -e "abcdefg\r123456789"
8 123456789
9 [root@localhost ~]# 

4.13 -e "\\" 插入 \ 字符:

1 [root@localhost ~]# echo -e "abc\\123"
2 abc\123
3 [root@localhost ~]# 

4.14 改变输出字符串的颜色,改变输出字符串的背景色:

命令格式:echo -e "\033[F;BmTEST\033[0m",以 \033[ 开始,以 \033[0m 结束,m 在颜色设置后,可以单独改变字符串颜色或者背景色,也可以都改变;字符串颜色和背景色中间用 ; 隔开,不分前后。

“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47;
 F        B
30    40    黑色
31    41    红色
32    42    绿色
33    43    黄色
34    44    蓝色
35    45    紫红色
36    46    青蓝色
37    47    白色

以上颜色设置都属于ANSI控制码;ANSI控制码中不仅有控制颜色的,还有一条提供其他功能的控制码
常用的ANSI控制码如下:
\033[0m 关闭所有属性,也就是此控制码前面的控制码将会失效,此控制码中的0可以互联
\033[1m 设置输出字符串高亮度显示
\033[4m 设置输出字符串有下划线
\033[5m 设置输出字符串闪烁
\033[7m 设置输出字符串返显,撞色显示,显示位白底黑字,或者黑底白字
\033[8m 设置输出字符串消隐,字符颜色将会与背景颜色相同
\033[30-37m 设置输出字符串颜色
\033[40-47m 设置输出背景颜色
\033[k 清除从光标到行尾的内容

注意:多个控制码之间用 ; 分号隔开。

 

posted @ 2019-10-16 14:40  网络小白-lzg  阅读(5242)  评论(0编辑  收藏  举报