首页 > 编程笔记 > Linux笔记 阅读:13

Linux echo命令用法详解(附带实例)

在我们日常编辑脚本的过程中,经常需要给用户输出一些具有提示性的信息,或者将脚本执行结果显示给用户,又或者我们在脚本编辑过程中需要得知脚本执行状态。

在上述情况下,我们可以选择使用 echo 命令来实现脚本提示信息显示、脚本执行结果显示、脚本调试等工作。

echo 命令除了可以应用在脚本中,还可以在命令行中执行。接下来,我们先学习在命令行中执行 echo 命令,等到基础知识掌握之后再学习如何将 echo 命令写到脚本中。

echo 命令的格式如下:
[root@localhost~]# echo [选项][输出内容]
选项:
其实,echo 命令非常简单,命令的输出内容如果没有特殊含义,就将原内容输出到屏幕上;如果输出内容有特殊含义,就输出其含义,例如:
[root@localhost~]# echo "Mr. Shen Chao is a good man! "
Mr. Shen Chao is a good man!
#echo 命令后的字符串就会输出到屏幕上
[root@localhost~]#
在某些版本的 Linux 操作系统中,当以“!”为 echo 字符串结尾时,在“!”后要记得添加空格,否则会有报错提示。

在当前的 Rocky Linux 9.0 中并不需要在“!”后加入空格。但是请注意,“!”如果连续出现多次,就会存在一些特殊含义。例如,我们在历史命令中见到的“!!”就表示调用上一条历史命令:
[root@localhost~]# ls /root/
#首先,我们先执行一条命令
anaconda-ks.cfg
[root@localhost~]# echo "ABCD!!"
#在字符串中,出现了两个连续的 “!”
echo "ABCDls /root/"
ABCDls /root/

在这种情况下,两个连续的“!”调用了上一条命令 ls /root/ ,因此在输出结果中我们会看到,先将“!!”转换为上一条命令(ls /root/),再进行输出:
[root@localhost~]# echo -n "Mr. Shen Chao is a good man!"
Mr. Shen Chao is a good man![root@localhost~]#
#如果加入了 “-n” 选项,那么在输出内容结束后,不会换行,直接显示新行的提示符

在 echo 命令中如果使用了“-e”选项,就可以支持使用控制字符,如下表所示:

表 1 控制字符
控制字符 作用
\\ 输出本身
\a 输出警告音(就是滴的声音)
\b 退格键,即向左删除键
\c 取消输出行末的换行符。和“-n”选项一致
\e Esc 键
\f 换页符
\n 换行符
\r Enter键
\t 制表符,即Tab键
\v 垂直制表符
\0nnn 按照八进制 ASCII 码表输出字符。其中 0 为数字 0,nnn 是三位八进制数
\xhh 按照十六进制 ASCII 码表输出字符。其中hh是两位十六进制数

接下来说明“-e”选项,举例如下:
[root@localhost~]# echo -e "\\\a"
\
#输出 “\”,同时会在系统中播放警告音
在上面的例子中,echo 命令会输出“\”。如果不写为“\”,就会因为“\”具有特殊含义而不输出。

如果想要听到警告音,那么前提是有声音输出设备,首先在字符界面中是最容易听到的;其次通过 Xshell 远程连接的 Windows10 或 Windows11 操作系统也可以听到警告音,只是警告音的间隔时间相比字符界面中的略长,并且不同的操作系统会有不同的警告音;最后如果想要在图形化本地听到警告音,就需要对系统中的声音进行比较复杂的设置。

例如:
[root@localhost~]# echo -e "ab\bc"
ac
#在这个输出中,b键左侧有 “b”,因此输出时只有 ac

注意,若使用“b”作为字符串的最后一个字符,则删除不生效。此种情况下,在“b”后加入空格可以解决问题。例如:
[root@localhost~]# echo -e "a\tb\tc\nd\te\tf"
a    b    c
d    e    f
#因为加入了制表符 “t” 和换行符 “n”,所以会按照格式输出

[root@localhost~]# echo -e "\0141\t\0142\t\0143\n\0144\t\0145\t\0146"
a    b    c
d    e    f
#还是会输出上面的内容,不过会按照八进制ASCII码输出

也就是说,141 这个八进制数在 ASCII 码中代表小写的“a”,其他以此类推。
[root@localhost~]# echo -e "\x61\t\x62\t\x63\n\x64\t\x65\t\x66"
a    b    c
d    e    f
#按十六进制ASCII码同样可以输出

echo 命令还可以输出一些比较有意思的内容。例如:
[root@localhost~]# echo -e "\e[1;31m abcd \e[0m"
这条命令会把 abcd 按照红色进行输出。解释一下这个命令:
echo 命令能够识别的颜色如下:30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色。

例如:
echo -e "\e[5;41m abcd \e[0m"
在数字 1 前面加入 5,表示输出字体闪烁。在系统中,我们会发现一个失效的符号链接也是以这种方式显示的。在以后编写脚本的过程中,也可以使用这种方式输出一些警告性提示信息。

相关文章