Shell——echo、printf及彩色打印

printf

printf格式

printf “格式化字符串” 变量

printf的使用方法与C语言一样,并且不需要括号和逗号进行分隔:

printf "%-10s %-5d\n" hello_world 

打印结果:

hello_world

打印字符串时,如果字符串中间有空格,或有特殊符号,那么需要将其用双引号括起来:

printf "%-10s %-5d\n" "hello world"

打印结果:

hello world

常用的转义字符

转义字符 说明
\n 换行符
\t 水平制表符
\v 垂直制表符
\a 警告字符
\b 退格符
\f 进纸符
\r 回车
? 连续书写多个问号时使用
用于表示字符’
" 用于表示字符“
\\ 用于表示字符\
\ddd 八进制数打印,其中ddd表示打印一个1~3个的八进制数字
\xdd 十六进制数打印,其中dd表示1~2个十六进制数字

echo

与printf不同的是,echo每次打印会自动换行

echo打印的格式

echo [可加选项] [打印内容]

选项 说明
-n 禁止自动换行
-e 允许使用转义字符打印
-E 禁止用\对字符进行转义

1)-n选项

[wjj@learning study]$ echo -n Hello World!
Hello World![wjj@learning study]$ 

因为取消了自动换行功能,因此打印结果与下一条命令在同一行。

2)-e选项

[wjj@learning study]$ echo -e "zhangsan\nlisi\nwangwu"
zhangsan
lisi
wangwu

-e选项允许echo使用上述转义符号进行打印。

3)-E选项

[wjj@learning study]$ echo -E "zhangsan\nlisi\nwangwu"
zhangsan\nlisi\nwangwu

-E选项取消了\的转义功能。


echo打印的三种方式

1)打印不加引号的内容

格式:echo 字符串

echo hello world 

2)打印双引号的内容

格式:echo "字符串"

echo "hello world"

3)打印单引号中的内容

格式echo ‘字符串’

echo 'hello world'

三种打印方式的区别

  • 不加引号的方式无法打印;,因为;在shell中作为命令分隔符
  • 双引号的方式支持解析特殊字符,如果不想解析特殊字符,需要加入转义字符\
  • 单引号的方式不支持一切特殊符号,所见即所得

echo支持的转义字符

echo支持的转义字符大多数与printf函数相同,部分有所区别,需要与前文表格进行对照。

转义字符 说明 备注(是否与printf函数相同)
\a 警告字符
\b 退格符
\c 抑制打印字符(不打印\c后面的字符) ×
\e 转义字符(示例见下文彩色打印) ×
\f 近纸符(换行尾对齐)
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\\ 字符‘\’
\0ddd 八进制数打印,其中ddd表示打印一个1~3个的八进制数字(与printf略有不同) ×
\xdd 十六进制数打印,其中dd表示1~2个十六进制数字

关于打印叹号(!)

shell中!作为一个特殊符号,对其进行打印时需要注意以下几个问题

1)printf和echo对!进行转义打印

[wjj@learning ~]$ printf "Hello World\!\n"
Hello World\!
[wjj@learning ~]$ echo "Hello World\!"
Hello World\!

!进行转义后再打印,打印不会报错,但是打印会出现\,这种情况只会在命令行输入命令时出现,使用脚本打印则能将!正常进行转义。

2)printf格式化输出

[wjj@learning ~]$ printf "%-s %-s %c\n" Hello World !
Hello World !

通过格式化输出,把!当作一个变量进行打印,打印结果正确。

3)echo不加引号打印

[wjj@learning ~]$ echo Hello World !
Hello World !

echo不加引号可以正确输出结果,但是该方法直接打印不利于编写脚本,故不推荐。

4)echo用‘’打印

[wjj@learning ~]$ echo 'Hello World!'
Hello World!

因为单引号的方式不支持一切特殊符号,所见即所得,所以可以正常打印,推荐使用该方法


彩色输出

通用格式:echo -e "\e[am 文本 \e[am"

其中a是对应的颜色ASCII码值,用来控制文本颜色背景颜色以及文本样式

文本颜色主要包括:

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

背景颜色主要包括:

重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

文本样式主要包括:

重置0,设置高亮=1,下划线=4,闪烁显示=5,反转显示=7,消隐=8,

示例1:打印红色字体:

echo -e "\e[31m red text \e[0m"

其中:

  • “\e[31m \e[0m”是标准格式
  • \e[31m是一个转义字符,31对应文本的红色
  • \e[0m是将文本重置,如果不重置将一直保持该格式

效果如下:

在这里插入图片描述

示例2:打印红色字体,黄色背景

echo -e "\e[43;31m red text \e[0m"

其中:

  • 43;31m分别对应背景颜色黄色和字体颜色黑色,二者前后的顺序并不固定,最终系统都是根据其ASCII码对应的值进行操作。

效果如下:
在这里插入图片描述

示例3:打印红色字体,黄色背景,加下划线

echo -e "\e[4;43;31m red text \e[0m"
  • 通过不断的加入控制选项,让文本显示的更加好看

效果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/why1472587/article/details/128503306