数据流重定向(一)

来源:互联网 发布:苹果手机如何恢复数据 编辑:程序博客网 时间:2024/04/29 03:52

为什么要使用命令输出重定向?
屏幕输出的信息很重要,而且我们需要将它存下来的时候 .
后台执行中的程序,不希望它干扰屏幕正常的输出结果时 ;
一些系统的例行命令的执行结果,希望它可以存下来 ;
一些执行命令的可能已知错误信息时,想以 " 2>/dev/null "将它丢掉时 ;
错误信息与正确信息需要分别输出时 ;

[1]

数据流重定向(redirect)就是将某个命令执行后应该要出现在屏幕上的数据传输到其他的地方,例如文件或打印机.

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


`若接收数据的文件不存在,则系统创建一个新文件 .
`若以>输出到一个已存在的文件中,那个文件将会被覆盖掉 .
`若以>>输出到一个已存在的文件中,数据将会累加到已存在文件中 .


[2]
将错误信息忽略而不显示或存储 : 黑洞设备/dev/null 
如 : find /home -name .bashrc 2> /dev/null    (一般用户显示权限不够,会由错误信息输出屏幕,但是使用该语句则将错误过滤,屏幕中的内容仅仅是标准输出流输出的内容)


将正确与错误数据统一写入到一个文件中 :  使用符号 &
如 : find /home -name .bashrc > list 2>&1   (正确与错误的内容都将统一地写入名为list的文件中)   =>正确
       find /home -name .bashrc > list 2> list  (这样子看上去使用了标准输出和标准错误输出,但是数据可能交叉写入文件,造成次序混乱)    =>错误

使用cat命令进行键盘输入数据至文件 : cat > catfile    (catfile是不存在的文件)
数据流重定向(一) - DAWN - CGYDAWN
 注意:离开键盘输入在空行键入 ctrl + d 即可离开

用stdin替代键盘的输入以创建新文件的简单流程 :
如 : cat > catfile < ~/.bashrc       (将路径为~/.bashrc的文件的内容存进新创建文件catfile中)

通过键盘结束文件输入状态 :
如 : cat > catfile << "eof"         (当键入eof则结束文件输入状态)

自定义屏幕输出语句并屏蔽标准错误输出 :
如 :  ls /tmp/cgydawn 2> /dev/null && echo "file exists" || echo "file not exists"
: 将错误信息丢进/dev/null "吞掉",然后利用&&与||输出自定义语句
0 0
原创粉丝点击