Shell——echo、printf及彩色打印

news2024/9/24 3:22:48

文章目录

  • printf
    • printf格式
    • 常用的转义字符
  • echo
    • echo打印的格式
    • echo打印的三种方式
    • echo支持的转义字符
  • 关于打印叹号(!)
  • 彩色输出

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自学Python】Python诞生

Python诞生 Python诞生教程 1989 年的圣诞节期间,吉多范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的解释程序,作为 ABC 语言的一种继承。 ABC 语言是由吉多参加设计的一种教学语言,就吉多本人看来,ABC 这种语…

如何使用 Java Stream API ,一行代码将 List 转换为 Map 类型

文章目录一句话场景语法测试关键语句截图Source Code控制台输出一句话 List<User> --> Map<User对象中欲作为key的字段的类型, User> List<User> userList getUserList(); Map<Integer, User> idAndUserMap userList.stream().collect(Collecto…

2022朝花夕拾-持续快速成长

2022年又过去了&#xff0c;学业繁忙好久没和大家聊天了。2020年终总结2020朝花夕拾-不务正业的大学生做了什么比赛&#xff1f;和2021年终总结2021朝花夕拾-我在校搞副业实现经济独立在此&#xff0c;幸好去年立了年度目标。如今在回忆这一年的收获时&#xff0c;也可以一项项…

通过SQLserver执行系统命令

前言 咋说呢&#xff0c;就是把&#xff0c;我最近找工作然后库库投校招的简历&#xff0c;然后呢&#xff0c;我接到了一个青藤云的笔试机会&#xff0c;哇&#xff01;我激动的不行&#xff0c;然后我什么都没有准备的上线进行一波答题&#xff0c;答完总结下来&#xff0c;…

使用python实现跨年烟花代码

朋友们&#xff0c;有多久没放烟花了&#xff1f;今年你所在的地方允许放烟花么&#xff1f;既然我们不能线下放&#xff0c;那么我们就在线上放个够吧&#xff08;还是那句话&#xff1a;你~有~对~象~了~嘛~&#xff09; 一下是动态图&#xff08;图片我使用的我上几次的背景图…

算法设计与分析复习02:分而治之算法

算法设计与分析复习02&#xff1a;分而治之算法 文章目录算法设计与分析复习02&#xff1a;分而治之算法复习重点分而治之算法全排列递归算法矩阵乘法的Strassen算法棋盘覆盖线性时间选择复习重点 分而治之算法 全排列递归算法 #include<vector> #include<iostream&g…

await如何优雅的捕获异常?

传统方式 try { const res await getUser(id) }catch(err){console.log(err) } await让我们使用异步方式开发的代码简便不少&#xff0c;但是每次使用如果都用try..catch来捕获异常反而埋没了它的优势。 [ err, user ] await to(UserModel.findById(1)); 如果我们使用await…

CSS var() 自定义的属性值和使用

声明全局 CSS 变量 :root{<自定义属性名>: <自定义属性值>; }自定义属性名必需以 -- 开头。 :root :root 这个 CSS 伪类匹配文档树的根元素。对于 HTML 来说&#xff0c;:root 表示 <html> 元素&#xff0c;除了优先级更高之外&#xff0c;与 html 选择器…

【Docker】构建自定义镜像

文章目录1. 镜像制作的两种方法2. Commit构建自定义镜像3. Dockerfile构建镜像4. 镜像的分层结构5. Dockerfile基础指令6. Java服务器镜像构建7. Nginx镜像构建8. Redis镜像构建9. 快速部署MySQL并初始化1. 镜像制作的两种方法 基于Docker Commit制作镜像基于Dockerfile制作镜…

WIKO+鸿蒙生态:海外品牌中国化的新范式

想要理解快速变化的科技行业&#xff0c;往往要锚定一些标杆型企业&#xff0c;它们的风吹草动&#xff0c;可能就是行业接下来的地动山摇。就像互联网绕不过BAT&#xff0c;手机行业的趋势也少不了鸿蒙的消息。最近&#xff0c;有一件鸿蒙生态的新闻是比较特别的。我们报道过很…

java反射基础

Java反射机制提供的功能 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时获取泛型信息 在运行时调用任意一个对象的成员变量和方法 在运行时处理注解 生成动态代理 Java反射优点和缺点 优点: …

Linux free命令详解,Linux查看内存使用情况

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 free一、常用操作二、字段解释1、free和available的区别&#xff1f;2、交换分区的作用&#xff1f;三、内存使用情况分析技巧四、原理&…

人脸识别检测项目实战

文章目录 一、项目介绍 二、环境配置 三、项目知识储备 导入图片灰度转换 修改图片尺寸的大小矩形检测框图绘制 人脸检测识别 多个人脸检测效果对人脸视频进行检测数据集录入训练数据人脸识别过程 项目介绍 人脸识别在现代化中应用较为广泛&#xff0c;比如人脸考勤系统等&…

Python爬虫——Scrapy 的基本使用

Scrapy 框架中创建项目、查看配置信息&#xff0c;以及运行爬虫程序都是通过指令完成。 常用指令如下所示&#xff1a; 指令格式说明startprojectscrapy startproject <项目名>创建新项目genspiderscrapy genspider <爬虫文件名> <访问的域名>新建爬虫文件…

torchnet package (1)

torchnet torchnet用于torch的代码复用和模块化编程框架,主要包含四个类 Dataset: 以不同的方式对数据进行预处理.Engine: 训练/测试机器学习方法Meter评估方法性能Log日志. Documentation torchnet的调用 local tnt require ‘torchnet’ tnt.Dataset() torchnet提供了多…

VueJs中的reactive函数

前言一个基本类型的数据,想要变成响应式数据,那么需要通过ref函数包裹,而如果是一个对象的话,那么需要使用reactive函数reactive可将对象变成响应式将一个对象类型的数据变为响应式,如果是基本数据类型,那用refconst 代理对象 reactive(被代理对象)接收一个对象(或数组),返回一…

一个DevOps/SRE/运维的2022年碎碎语

人们常说&#xff1a;情商高的人会说话。实际上他们的意思是对人说人话&#xff0c;对鬼说鬼话&#xff0c;这样的人才有前途。很长时间里&#xff0c;我一直以为我无法理解他们为什么要推崇心口不一。后来&#xff0c;我知道了。我不是不理解。我只是不服气。这样的”不服气“…

box-shadow 高阶玩法:纯 CSS 画蒙娜丽莎和粒子星空

想必写过 CSS 的同学都用过 box-shadow&#xff0c;它可以给元素设置阴影&#xff0c;增加立体效果。 比如说这样&#xff1a; 但它能做的可不只是阴影&#xff0c;还可以用来做出很多有趣的效果&#xff1a; 比如画蒙娜丽莎&#xff1a; 画星空&#xff1a; 这些效果都是 bo…

尚医通-医院查询接口-上传科室接口(十九)

目录 &#xff08;1&#xff09;医院查询接口-功能实现 &#xff08;2&#xff09;上传科室接口-功能实现 &#xff08;1&#xff09;医院查询接口-功能实现 接口文档&#xff1a; 4.4.查询医院 医院信息 4.4.1.提交地址 http://localhost/api/hosp/hospital/show 在ApiC…

《东晋门阀政治》

《东晋门阀政治》 关于作者 田余庆&#xff0c;北京大学历史系教授&#xff0c;国务院古 籍整理出版规划小组成员&#xff0c;是魏晋南北朝 政治史专家。他在学术界拥有重要的地位&#xff0c;参加编著的《中国史纲要》曾获国家 教委特等奖。著有《秦汉魏晋史探微》 《拓跋史…