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
[root@localhost ~]#
以上可见 ifconfig 命令执行输出结果文本格式改变,不便于读写,如果想要按照 ifconfig 命令原格式输出,可加 " " 双引号:
1 [root@localhost ~]# echo "`ifconfig`"
2 ens192: flags=4163
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
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
12 inet 127.0.0.1 netmask 255.0.0.0
13 inet6 ::1 prefixlen 128 scopeid 0x10
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 B30 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 清除从光标到行尾的内容
注意:多个控制码之间用 ; 分号隔开。