Linux 数据流重定向
标准输出(standard output)
指的是命令执行所回传的正确的信息,而标准错误输出(standard error output)
可以理解为命令执行失败后,所回传的错误信息。 一般情况下,不管正确还是错误信息数据默认的是输出到屏幕上,所以屏幕上是很混乱的。可以通过数据流重定向将stdout和stderr分别传送到其他的文件或者设备去,而分别传送所用的特殊字符如下所示:
标准输入(stdin):代码为
0
,使用<
或者<<
标准输出(stdout):代码为
1
,使用>
或者>>
标准错误输出(stderr):代码为
2
,使用>
或者>>
标准输出和标准错误输出
如果仅存在>
,则代表默认代码为1。
1>
:以覆盖
的方法将正确
的数据输出到指定的文件或者设备上1>>
:以累加
的方法将正确
的数据输出到指定的文件或者设备上2>
:以覆盖
的方法将错误
的数据输出到指定的文件或者设备上2>>
:以累加
的方法将错误
的数据输出到指定的文件或者设备上
示例1:将stdout和stderr分别存到不同的文件中去。
示例2:将错误的数据丢弃,屏幕上显示正确的数据
/dev/null垃圾黑洞设备
示例3:将正确和错误的数据全部写入一个文件
标准输入
<
意味着将原本需要由键盘输入的数据改由文件内容来替代。
示例1:利用cat
命令来创建一个文件的简单流程,了解一下什么是键盘输入
示例2:利用stdin
替代键盘的输入来创建新文件的流程
理解了<
后,再来看<<
。<<
:代表的是结束输入的意思
。举例来讲,我要用cat直接将输入的信息输出到catfile中,且当由键盘输入eof时,本次输入就结束,可以按照如下方式进行:
双向重定向tee
tee命令实现了手动跟踪命令的输出内容,同时又将输出的内容写入文件,确保之后可以用来参考。 例如:
总结,tee
可以让standard output转存一份到文件内并将同样的数据继续送到屏幕上去处理显示。这样,除了可以让我们同时分析一份数据并记录下来之外,还可以作为处理一份数据的中间暂存盘记录只用。
另:tee
在很多认证考试中有考察。
版权声明: 本文为 InfoQ 作者【王坤祥】的原创文章。
原文链接:【http://xie.infoq.cn/article/c4215cfdae4ca1c2dbbf5f606】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)