【Linux上分之路】第十三篇:Linux数据流重定向

冲

Linux

数据流重定向

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他的地方

Linux命令执行数据流动

Linux数据流重定向数据传输过程

命令执行时,该命令可能会由文件读入数据,经过处理之后根据处理信息的正确与否来决定处理信息是标准输出还是标准错误输出

  • 标准输出:指的是命令执行所回传的正确的信息
  • 标准错误输出:指的是命令执行失败后所回传的错误的信息

标准输出和标准错误输出都是默认输出在屏幕上,可以通过数据重定向将标准输出和标准错误输出分别传输到其他的文件或设备上,分别传送所用的特殊字符可以分为标准输、标准输出、标准错误输出

  • 标准输入(stdin):代码为0,使用<或<<
  • 标准输出(stdout):代码为1,使用>或>>
  • 标准错误输出(stderr):代码为2,使用2>或2>>

重定向案列

Linux数据流重定向例子

重定向分析

  • 过程为该文件若不存在时,系统则会自动创建该文件
  • 当这个文件存在时,系统则会将该文件内的文件内容清空,然后在将命令执行的结果接入到该文件
  • 若重定向一个已经存在的文件,则该文件的内容则会被覆盖掉

符号>与>>的区别

  • >是将命令执行的执行结果写文件,若该文件已存在数据,则会清空原有数据,写入命令执行后得到的数据
  • >>也是将命令执行后的结构写入文件,若该文件已存在数据,则会原数据之上追加新数据

由此结合标准输出代码和标准错误输出代码可得知

  • 1>:以覆盖的方式将"正确的数据"输出到指定的文件或设备上
  • 1>>:以累加的方式将"正确的数据"输出到指定的文件或设备上
  • 2>:以覆盖的方式将"错误的数据"输出到指定的文件或设备上
  • 2>>:以累加的方式将"正确的数据"输出到指定的文件或设备上

命令输出重定向的原因

  1. 需要特定时候将屏幕的输出的信息保存下来
  2. 不希望后台执行的程序干扰到屏幕的正常输出结果
  3. 希望可以保存系统的计划任务命令时
  4. 将执行命令的错误信息丢掉
  5. 命令执行时的处理信息包括正确信息和错误信息需要分开处理时

多个命令的执行

Linux支持可以一次性执行多条命令,但是也可以多条命令可以根据彼此的相关性分为命令不相关的多命令执行,和命令相关性的执行;区别在于执行多个命令之间是否有相关关系

命令不相关的多命令执行

不考虑命令相关的连续命令执行时命令中间用分号(;)来隔开

cmd;cmd

Linux数据流重定向多重命令不相关

命令相关的多命令执行

即多条命令中间存在依赖性和相关性,而这个依赖性和相关性主要判断依据就是在于前一个命令执行的结果是否正确

$?命令返回值

表示为多命令执行时,前一个命令执行的结果为正确,在Linux下面会返回一个$?=0的值

&&、||

命令执行情况说明
cmd1 && cmd21、若cmd1执行完并且正确执行( ? = 0 ) , 则 开 始 执 行 c m d 2 < b r > 2 、 若 c m d 1 执 行 完 并 且 执 行 失 败 ( ?=0),则开始执行cmd2<br> 2、若cmd1执行完并且执行失败( ?=0)cmd2<br>2cmd1(?≠0),则cmd2不执行
cmd1 || cmd21、若cmd1执行完毕并且正确执行( ? = 0 ) , 则 c m d 2 不 执 行 < b r > 2 、 若 c m d 2 执 行 完 毕 并 且 执 行 失 败 ( ?=0),则cmd2不执行<br> 2、若cmd2执行完毕并且执行失败( ?=0)cmd2<br>2cmd2(?≠0),则开始执行cmd2

Linux数据流重定向多命令执行案列

当&&与||同时存在时根据Linux命令从左往右执行

Linux数据流重定向多命令执行案列

Linux数据流重定向多命令执行分析

Linux数据流重定向多命令执行过程

首先从结果可知haha.txt文件创建成功,ls为命令cmd1,mkdir为命令cmd2,touch为命令cmd3

  1. 第一次执行该多命令时,当/tmp/abc不存在时,ls /tmp/abc的命令返回值KaTeX parse error: Expected 'EOF', got '&' at position 49: …又因为cmd2与cmd3中间为&̲&,则cmd2成功执行时命令返…?=0时,cmd3才会执行,即haha.txt文件创建成功
  2. 第二次执行该多命令时,/tmp/abc目录已经存在,因为cmd1与cmd2中间为||,即cmd1命令返回值$?=0时,cmd2不执行,即往右执行找到cmd3,通过&&,cmd1执行成功时才执行cmd3,所以haha.txt创建

总结

数据流重定向通过>、2>、<之类的符号将输出的信息转到其他文件或设备上,连续的命令则需要&&、||符号来处理

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值