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"
  • 通过不断的加入控制选项,让文本显示的更加好看

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

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是元笙阿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值