Linux系统运维/Bash/5-5-数据流重定向

本文详细介绍了数据流重定向的概念,包括标准输入、标准输出及标准错误输出的使用方法,并通过实例展示了如何利用这些概念来控制命令的输出,以及如何进行条件判断。

什么是数据流重导向

什么是数据流重导向啊?这得要由命令的运行结果谈起!一般来说,如果你要运行一个命令,通常他会是这样的:

standardoutput 与standard error output

简单的说:

标准输出指的是『命令运行所回传的正确的信息』

而标准错误输出可理解为『 命令运行失败后,所回传的错误信息』

1.    标准输入  (stdin) :代码为 0 ,使用< 或 << ;

2.    标准输出  (stdout):代码为 1 ,使用> 或 >> ;

3.    标准错误输出(stderr):代码为 2 ,使用2> 或 2>> ;

1>:以覆盖的方法将『正确的数据』输出到指定的文件或装置上;

1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;

2>:以覆盖的方法将『错误的数据』输出到指定的文件或装置上;

2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;

/dev/null垃圾桶黑洞装置与特殊写法

 

standard input : < 与 <<

将原本需要由键盘输入的数据,改由文件内容来取代

利用 cat 命令来创建一个文件的简单流程

[root@www ~]# cat > catfile

testing

cat file test

<==这里按下 [ctrl]+d 来离开

 

[root@www ~]# cat catfile

testing

cat file test

 [root@www ~]# cat > catfile << "eof"

> This is a test.

> OK now stop

> eof  <==输入这关键词,立刻就结束而不需要输入 [ctrl]+d

 

[root@www ~]# cat catfile

This is a test.

OK now stop     <==只有这两行,不会存在关键词那一行!

1.    屏幕输出的信息很重要,而且我们需要将他存下来的时候;

2.    背景运行中的程序,不希望他干扰屏幕正常的输出结果时;

3.    一些系统的例行命令 (例如写在 /etc/crontab 中的文件) 的运行结果,希望他可以存下来时;

4.    一些运行命令的可能已知错误信息时,想以『2> /dev/null 』将他丢掉时;

5.    错误信息与正确信息需要分别输出时。

命令运行的判断依据: ; ,&&, ||

 

cmd; cmd (不考虑命令相关性的连续命令下达)

 [root@www ~]# sync; sync; shutdown -h now

 

$?(命令回传值) 与 && 或 ||

两个 & 之间是没有空格的!那个 | 则是 [Shift]+[\] 的按键结果。

命令下达情况

说明

cmd1 && cmd2

1. 若 cmd1 运行完毕且正确运行($?=0),则开始运行 cmd2。
2. 若 cmd1 运行完毕且为错误 ($?≠0),则 cmd2 不运行。

cmd1 || cmd2

1. 若 cmd1 运行完毕且正确运行($?=0),则 cmd2 不运行。
2. 若 cmd1 运行完毕且为错误 ($?≠0),则开始运行 cmd2。

 

范例三:我不清楚 /tmp/abc 是否存在,但就是要创建 /tmp/abc/hehe 文件

[root@www ~]# ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe

整个流程图示如下:



由于命令是一个接着一个去运行的,因此,如果真要使用判断,那么这个 && 与 || 的顺序就不能搞错

command1 && command2 ||command3一般来说, command2 与command3 会放置肯定可以运行成功的命令

 

内容概要:本文系统讲解了openEuler内核模块开发的全链路技术体系,涵盖架构原理、环境搭建、代码实现、编译调试、安全加固与生产落地。深入剖析openEuler内核的用户态/内核态隔离机制、模块动态加载原理、国密SM3签名认证、跨架构适配(x86_64/aarch64)等核心技术,通过HelloKernel实例演示模块生命周期管理,并详细阐述Makefile工程化编译、日志调试、Oops异常分析、KGDB源码级调试等关键技能。进一步覆盖内核参数传递、设备文件交互、内存管理、并发同步、中断与定时器等核心功能开发,最后结合系统监控模块综合项目,实现从理论到生产级落地的完整闭环。; 适合人群:具备Linux系统基础和C语言编程能力,从事操作系统、驱动开发或内核安全相关工作的研发人员,尤其是面向国产化平台开发的技术工程师;适合工作2年以上的中级开发者向高级进阶。; 使用场景及目标:①掌握openEuler内核模块在鲲鹏架构下的编译、签名与部署流程;②理解并实现内核级功能扩展如设备驱动、系统监控、安全加固模块;③具备独立完成模块开发、调试、性能调优及多版本兼容的能力,满足政企、工业、云边端等生产环境要求;④符合国家信息安全等级保护与信创合规标准。; 阅读建议:学习过程中应严格匹配openEuler 24.03 LTS环境,结合官方SDK工具链进行实践操作,重点关注国密签名、版本适配与安全规范;建议按章节顺序推进,先掌握基础框架再深入调试与安全机制,最终通过综合项目整合全部技能,反复演练编译排错与异常定位流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值