【shell 编程大全】内容格式化以及多样化输出

news2024/9/22 21:23:29

内容格式化以及多样化输出

1. 前倾回顾

本章节我们一起来学习下,shell中内容格式化,以及多样输出。但是在学习之前,我们先来看看上个章节【shell 变量的定义以及使用】 我们都学习到了什么知识

shell 变量的定义以及使用

  • 变量分类
  • 变量定义
  • 类型变量定义
  • 移除变量
  • 单引号以及双引号区分
  • 命令变量
  • 全局变量
  • 变量作用范围
  • 内置变量

2. 内容格式化

2.1 重定向

我们可以通过重定向的形式将命令中的内容输出到文件中,但是输出的格式大致分为2种

  • 覆盖性
  • 追加性

覆盖方式

以符号> 表示将内容直接覆盖

[root@localhost day04]# ll | grep test002
[root@localhost day04]# echo 1111 > test002.md
[root@localhost day04]# cat test002.md 
1111
[root@localhost day04]# echo 222 > test002.md 
[root@localhost day04]# cat test002.md 
222
[root@localhost day04]# 

追加方式

以符号>> 表示将内容直接追加

[root@localhost day04]# cat test002.md 
222
[root@localhost day04]# echo 333 >> test002.md 
[root@localhost day04]# cat test002.md 
222
333
[root@localhost day04]# 

2.2 管道符

使用符号| 表示管道符,将左侧命令的结果,传递给右侧的命令来使用

例如

[root@localhost day04]# env | grep -wi home
HOME=/root

2.3 后台执行

什么叫后台执行呢? 比如命令sleep 3. 此命令一直会阻塞其余命令执行。所以我们想让其在后台执行,那应该怎么做呢。

命令尾部 添加符号& 表示此命令后台执行

例如

[root@localhost day04]# sleep 4 &
[1] 2484
[root@localhost day04]# 

2.4 信息符号

什么叫信息符号呢?? 表示正确的信息,错误的信息 以及所有的消息

  • 正确的信息 1>>
  • 错误的信息 2>>
  • 错误以及正确的信息 2>&1

案例1

[root@localhost day04]# cat test002.md 1>> normalFile
[root@localhost day04]# cat normalFile 
222
333
[root@localhost day04]# sdfdsf 2>> errFile
[root@localhost day04]# cat errFile 
-bash: sdfdsf: command not found
[root@localhost day04]# 

案例2

/bin/bash ./ceshi.sh 1>> ceshi_info 2>> ceshi_err

[root@localhost day04]# cat ceshi.sh 
#!/bin/bash

echo "下一条是错误的命令"

sdfsdfds
[root@localhost day04]# /bin/bash ./ceshi.sh 1>> ceshi_info 2>> ceshi_err
[root@localhost day04]# cat ceshi_info
下一条是错误的命令
[root@localhost day04]# cat ceshi_err 
./ceshi.sh: line 5: sdfsdfds: command not found
[root@localhost day04]# 

案例3

[root@localhost ~]# /bin/bash ceshi.sh >> ceshi-all 2>&1
[root@localhost ~]# cat ceshi-all
下一条错误命令
ceshi.sh:行5: dsfsafsafdsa: 未找到命令

3. 输入格式化

什么叫输入的格式化呢,其实就是可以多行输入,输入啥就是就是啥。 可以像在文本种一样在命令行种输入

3.1 EOF原理

eof

[root@localhost day04]# cat << eof
>  sfsdf sf s
> s fdds s
>       sdfsdfs
> eof
 sfsdf sf s
s fdds s
      sdfsdfs
[root@localhost day04]# 

3.2 cat 实践

实现多行文本的输出

在这里插入图片描述

cat > normalfile << eof 将eof中内容赋值给cat, cat将内容以覆盖的形式保存到文件normalfile中

[root@localhost day04]# cat > normalfile << eof
>   这是一个请假条
> 一个很好的请教条
> 这个请假条就是为了请假的
> eof
[root@localhost day04]# cat normalfile
  这是一个请假条
一个很好的请教条
这个请假条就是为了请假的

3.3 tee 实践

tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中,tee命令可以重定向标准输出到多个文件。要注意的是:在使用管道线时,前一个命令的标准错误输出不会被tee读取。

命令格式

样式1:只输出到标准输出
	tee
样式2:输出到标准输出的同时,保存到文件file中
	tee file
样式3:输出到标准输出的同时,追加到文件file中。如果文件不存在则创建;如果文件存在则追加。
	tee -a file
	tee host2 <<- EOF ... EOF
样式4: 输出到标准输出两次。
	tee -
样式5:输出到标准输出两次,同时保存到file1和file2中。
	tee file1 file2 -

案例

输出到命令行的同时 && 输出到文件中

[root@localhost day04]# echo test-tee | tee
test-tee
[root@localhost day04]# echo test-tee | tee test003.md
test-tee
[root@localhost day04]# cat test003.md 
test-tee
[root@localhost day04]# 

相同的内容 多次输出

[root@localhost day04]# echo test-tee | tee
test-tee
[root@localhost day04]# echo test-tee | tee -
test-tee
test-tee
[root@localhost day04]# echo test-tee | tee - -
test-tee
test-tee
test-tee
[root@localhost day04]# 

4. 格式化输出

4.1 echo 解读

格式

OPTIONS:
-n	不要在最后自动换行
-e	若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

转义字符
\a		发出警告声;
\b		删除前一个字符;
\c		最后不加上换行符号;
\f		换行但光标仍旧停留在原来的位置;
\n		换行且光标移至行首;
\r		光标移至行首,但不换行;
\t		插入tab;
\v		与\f相同;
\		插入\字符;
\0nnn	打印nnn(八进制)所代表的ASCII字符;  备注:数字0  不要理解成字母o
\xNN  	打印NN(十六进制)所代表的ASCII字符;

不换行输出

[root@localhost day04]# echo -n 11; echo 22
1122
[root@localhost day04]# 

转义

[root@localhost day04]# echo -e "aa\nbb"
aa
bb
[root@localhost day04]# echo "aa\nbb"
aa\nbb
[root@localhost day04]# 

4.2 颜色输出

格式

格式如下:
	echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
	echo -e "\033[41;36m 显示的内容 \033[0m"

在这里插入图片描述

4.3 颜色分类

色彩绿
字体色3031323334353637
背景色4041424344454647

4.4 printf格式化

虽然我们能够通过 echo的方式实现信息某种程度的格式化输出,但是很多信息的输出偏重于手工的干预,效率太慢。我们需要一种功能更强大、效率更高的格式化手段。
– printf

语法格式

查看帮助
[root@localhost ~]# help printf
printf: printf [-v var] 格式 [参数]

在这里插入图片描述

```bash
格式化替换符
    %s 		字符串
    %d,%i 	十进制整数
    %f 		浮点格式
    %c 		ASCII字符,即显示对应参数的第一个字符
    %b 		相对应的参数中包含转义字符时,可以使用此替换符进行替换,对应的转义字符会被转义
    %o 		八进制值
    %u 		不带正负号的十进制值
    %x 		十六进制值(a-f)
    %X 		十六进制值(A-F)
    %% 		表示%本身

虽然上述参数很多 但是其实我们自己用到的并不多。%s, %d, %i, %f, $$

格式化字符解释
–		将字段里已格式化的值向左对齐
空格	   在正值前置一个空格,在负值前置一个负号
+		总是在数值之前放置一个正号或负号,即便是正值也是
#		下列形式选择其一:
			%o有一个前置的o;					%x与%X分别前置的0x与0X;
			%e,%E与%f总是在结果中有一个小数点;  %g与%G为没有结尾的零。
0		以零填补输出,而非空白.这仅发生在字段宽度大于转换后的情况

案例1:添加换行

[root@localhost day04]# echo "test1"
test1
[root@localhost day04]# printf "test1"
test1[root@localhost day04]# 
[root@localhost day04]# printf "test1\n"
test1
[root@localhost day04]# 

案例2:替换符号

[root@localhost day04]# printf "姓名:%s, 年龄:%d, 身高:%f\n" lihh 20 180.1
姓名:lihh, 年龄:20, 身高:180.100000
[root@localhost day04]# 

上述符号%s, %d, %f 都素hi待替换的占位符。

案例3:显示%f 小数点个数

[root@localhost day04]# printf "姓名:%s, 年龄:%d, 身高:%.1f\n" lihh 20 180.1
姓名:lihh, 年龄:20, 身高:180.1
[root@localhost day04]# 

案例4:显示指定宽度 并左对齐

[root@localhost day04]# printf "姓名:%-10s, 年龄:%-10d, 身高:%-10.1f\n" lihh 20 180.1
姓名:lihh      , 年龄:20        , 身高:180.1     
[root@localhost day04]# 

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

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

相关文章

SpringBoot设置和读取配置文件(1)

SpringBoot配置文件是用来保存SpringBoot项目当中所有重要的数据的&#xff0c;比如说数据库连接信息&#xff0c;数据库的启动端口&#xff0c;如果端口被占用了&#xff0c;那么就可以随时修改&#xff1b; 1)比如说我们之前再写JDBC的代码的时候&#xff0c;要去写链接字符串…

C 字符串

在 C 语言中&#xff0c;字符串实际上是使用空字符 \0 结尾的一维字符数组。因此&#xff0c;\0 是用于标记字符串的结束。空字符&#xff08;Null character&#xff09;又称结束符&#xff0c;缩写 NUL&#xff0c;是一个数值为 0 的控制字符&#xff0c;\0 是转义字符&#…

SNI生效条件 - 补充nginx-host绕过实例复现中SNI绕过的先决条件

文章目录1.前置环境搭建2.测试SNI生效条件(时间)3. 证书对SNI的影响3.1 双方使用同一个证书&#xff1a;3.2 双方使用不同的证书与私钥4. 端口号区分测试4.1 端口号区分&#xff0c;证书区分&#xff1a;4.2 端口号区分,证书不区分&#xff1a;5.总结SNI运行机制6. SNI机制绕过…

Docker-安装Jenkins-使用jenkins发版Java项目

文章目录0.前言环境背景1.操作流程1.1前期准备工作1.1.1环境变量的配置1.2使用流水线的方式进行发版1.2.1新建流水线任务1.2.2流水线操作工具tools步骤stages步骤1:拉取代码编译步骤2:发送文件并启动0.前言 学海无涯&#xff0c;旅“途”漫漫&#xff0c;“途”中小记&#xff…

从0到1一步一步玩转openEuler--12 openEuler用户管理

文章目录12.1 创建用户12.1.1 useradd命令12.1.2 用户信息文件12.1.3 创建用户实例12.2 修改用户账号12.2.1 修改密码12.2.2 修改用户shell设置12.2.3 修改主目录12.2.4 修改UID12.2.5 修改账号的有效期12.3 删除用户12.4 管理员账户授权在Linux中&#xff0c;每个普通用户都有…

【Java 面试合集】怎么声明一个类不会被继承,以及应用场景

怎么声明一个类不会被继承&#xff0c;以及应用场景1. 概述 今天的Java 面试合集又来了。今天我们复习的问题是:怎么声明一个类&#xff0c;不可以被继承 2. 验证 public final class TestMath { }通过上述截图 我们可以看到&#xff0c;被关键字final 修饰过的类&#xff0c;…

EOC第六章《块与中枢派发》

文章目录第37条&#xff1a;理解block这一概念第38条&#xff1a;为常用的块类型创建typedef第39条&#xff1a;用handler块降低代码分散程度第41条&#xff1a;多用派发队列&#xff0c;少用同步锁方案一&#xff1a;使用串行同步队列来将读写操作都安排到同一个队列里&#x…

02 OpenCV图像通道处理

1 通道提取与合并 在数字图像处理中&#xff0c;图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。 RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道&#xff0c;每个通道表示相应颜色的亮度。这种方式是最常…

【QT 5 相关实验-仪表盘-学习笔记-表盘组件练习与使用总结】

【QT 5 相关实验-仪表盘-学习笔记-表盘组件练习与使用总结】1、概述2、实验环境3、参考资料-致谢4、自我提升实验效果5、代码练习-学习后拆解&#xff08;1&#xff09;头文件部分&#xff08;2&#xff09;绘制事件绘制表盘代码&#xff08;3) 每一块部分绘制6、代码移植提升类…

Spring Security in Action 第十一章 SpringSecurity前后端分离实战

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;以实战为线索&#xff0c;逐步深入SpringSecurity相关知识相关知识&#xff0c;打造完整的SpringSecurity学习步骤&#xff0c;提升工程化编码能力和思维能力&#xff0c;写出高质量代码。希望大家都能够从中有所收获&#…

nginx正向代理的配置和使用

nginx正向代理的配置和使用 nginx正向代理的配置和使用nginx正向代理的配置和使用安装包准备下载nginx安装包下载正向代理模块的包版本与模块对照表部署nginx服务上传nginx包和正向模块包解压,改名安装nginx配置正向代理创建nginx用户检查nginx配置并启动nginx服务所在服务器验…

微服务02 Docker

Docker实用篇0.学习目标1.初识Docker1.1.什么是Docker微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&#xff0…

实战绕过WTS-WAF的SQL注入

实战绕过WTS-WAF的SQL注入1.前言2.测试流程2.1.发现漏洞2.1.1.正常页面2.1.2.WAF警告2.1.3.非正常页面2.2.判断字段数2.2.1.非正常页面2.2.2.正常页面2.3.判断回显位2.4.信息收集2.4.1.数据库版本2.4.2.数据库名2.5.判断数据库表2.5.1.WAF告警2.5.2.获取表2.5.3.burp suite测试…

龙曲良 Tensorflow —— tensorflow高级操作(自用)

目录 一、合并与分割 1.1 tf.concat (合并) 1.2 tf.stack &#xff08;增加新维度&#xff09; 1.3 tf.unstack &#xff08;一个一个拆分&#xff09; 1.4 tf.split &#xff08;均分拆分&#xff09; 二、数据统计 2.1 tf.norm&#xff08;默认二范数&#xff09; 2…

WebRTC(一):三种架构和基本原理

文章目录一、三种架构二、为什么SFU最为常用&#xff1f;一、三种架构 webrtc大致可以分为三种架构&#xff1a; MESH mesh架构需要所有参与连接的peer简历和所有其他peer的媒体的连接&#xff0c;如图一。 该架构需要n-1个上下行&#xff0c;以此带来的带宽消耗&#xff08…

家政服务小程序实战教程02-创建模型应用

我们在上一篇中介绍了数据源的设计及创建方法&#xff0c;本篇我们就根据我们创建好的数据源来设计功能。 按我们的需求分析&#xff0c;系统管理员来审核数据&#xff0c;要想审核数据需要给管理员提供一个管理后台。微搭中的管理后台是通过模型应用来解决的。 登录控制台&a…

我用python/C++调用ChatGPT自制了一个聊天机器人

目录1 ChatGPT完整版2 Python/C调用ChatGPT2.1 获取API秘钥2.2 测试API功能2.3 设计简单UI3 聊天问答1 ChatGPT完整版 2015年&#xff0c;OpenAI由马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得蒂尔等硅谷科技大亨创立&#xff0c;公…

chatGPT都可以干什么呢?来一睹风采 (送账号)

文章目录1. 写代码2. 写文案3. 写剧本4. 写歌诗5. 写报告6. 查公式7. 写对联8. 写文章9. 做表格10. 做计划11. 等等1. 写代码 2. 写文案 3. 写剧本 4. 写歌诗 5. 写报告 这妥妥的翻译文&#xff0c;数据完全不对。 6. 查公式 傅里叶变换的时域性质有如下几点&#xff1a; 对…

JAVA集合专题4 —— Map

目录Map接口实现类的特点Map接口的常见方法Map六大遍历方式Map练习1code编程练习2code编程练习3思路codeMap接口实现类的特点 Map与Collection并列存在&#xff0c;是Map集合体系的顶级接口Map的有些子实现存储数据是有序的(LinkedHashMap)&#xff0c;有些子实现存储数据是无…

【量化交易】 量化因子 动量类因子

量化因子 - 风险类因子计算 5日乖离率 BIAS5 &#xff08;收盘价-收盘价的N日简单平均&#xff09;/ 收盘价的N日简单平均*100&#xff0c;在此n取5 60日变动速率&#xff08;Price Rate of Change&#xff09; ROC60 ①AX今天的收盘价—20天前的收盘价 ②BX60天前的收盘价 ③…