Linux数据流重定向

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

如果我们要执行一个命令,它通常是这样的:

 

标准输入、输出、错误
stdin标准输入0
stdout标准输出1
stderr标准错误输出2

 

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

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

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

标准输入(stdin)

我们使用ll命令后会发现屏幕上显示出了文件信息

我们将屏幕中的信息重定向到一个文件中,因此屏幕中不会再显示任何信息(这股数据流已经重定向另一个目的地)

 查看重定向到的目标文件

我么发现我们可以使用重定向来把本来显示在屏幕上的数据流换个目标存放/显示信息

>:以覆盖的方式将正确的数据输出到指定的文件或设备上

>>:以累加的方式将正确的数据输出到指定的文件或设备上

标准错误输出(stderr)

我们通过上文可以知道

>:覆盖重定向(把文件内容清空后再将数据写入,即覆盖原内容)

>>:追加重定向(在文件内容结尾追加写入数据,即不覆盖原内容)

而>与>>默认代表的是1>和1>>(标准输入),所以2>和2>>代表的就是标准错误输出

2>:以覆盖的方式将错误的数据输出到指定的文件或设备上

2>>:以累加的方式将错误的数据输出到指定的文件或设备上

举个几个例子来理解吧

使用一般账号查找/home下的.bashrc文件是否存在

显示的有一个正确信息(查找到的路径)与错误信息(权限被拒绝了) 

使用标准输出后会发现错误信息没有被重定向

 所以我们在标准输出后还需要标准错误输出,此时屏幕不会有任何信息

 显示正确信息,丢弃错误信息

 

但是当我们需要把正确数据与错误数据都写入一个文件,就需要特殊写法了

这两种写法都是可以的 

 

补充:这种写法虽然可以,但是由于两股数据同时写入一个文件,有没有使用特殊语法,此时两股数据可能会交叉写入该文件,造成次序混乱

 

标准输入(stdin)

标准输入就是将原本需要由键盘输入的数据,改由文件内容来替换

<理解

我们使用标准输出来建立文件并输入文本(>加在cat后面,catfile文件会被主动建立),输入完成后使用Ctrl+d来结束输入

利用标准输入<来代替键盘输入达到复制粘贴的作用

<<理解

<<表示的是结束的输入字符

当文件中的内容输入到关键字(结束输入字符)时,就会结束此次输入而不必去按下Ctrl+d

总结

使用命令输出重定向的常见场景

  • 屏幕的输出信息很重要,而且我们需要将它保存下来的时候
  • 后台执行的程序,不希望它干扰屏幕正常的输出结果时
  • 一些系统的计划任务命令(列如写在/etc/crontab中的文件)的执行结果,希望它可以存下来时
  • 一些执行命令的可能已知错误信息时,想以2> /dev/null来将它丢弃时
  • 错误信息与正确信息需要分别输出时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

魏大橙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值