Linux下的数据流重定向小结

来源:互联网 发布:gts450 mac 最新驱动 编辑:程序博客网 时间:2024/04/30 05:24

1.数据流重定向的含义:

我们知道,在shell上,一个command的执行,可能会有输入数据,输出正确数据以及输出错误数据,相应地,数据写入的设备就有输入数据设备,输出正确数据的设备以及输出错误数据的设备。标准输入设备stdin,即键盘、标准正确输出stdout,即屏幕终端,标准错误输出stdout,即屏幕终端。而数据流重定向就是要将某个command这些stdin、stdout以及stderr,设定为指定的地方,例如指定的文件或者/dev/null等等

 

2.数据流重定向的方式:

           a)将stdin重定向:代码为0,使用<(也可以使用0<)

           b)将stdout重定向:代码为1,使用>或>>(也可以使用1>或1>>)

           c)将stderr重定向:代码为2,使用2>或2>>

Remarks:

           a)ls -l /home > ./newfile与ls -l /home 1> ./newfile是等价的

           b)1>与1>>的区别在于,1>表示是以覆盖的方式将正确数据的输出到指定的文件或者设备上;而1>>表示是以累加的方式将正确的数据输出到指定的文件或者设备上。2>与2>>的区别是类似的

           c)关于数据流重定向的几个特殊的应用场景:               

场景1:将find的查询结果正确的输出信息存入filename_1中,将错误的输出信息存入filename_2中find /home -name .bashrc 1> filename_1 2> filename_2场景2:将find的查询结果的正确或者错误的输出信息存入到同一个文件filename中,下面两种方式都可以实现find /home -name .bashrc 1> filename 2>&1   #2>&1之间无空格find /home -naem .bashrc &> filename

           d)/dev/null是垃圾桶黑洞设备,这个东西可以吃掉任何导向这个设备的信息
           e)值得注意的是,<<  不是输入重定向的意思,它是“结束输入”的意思。例如我们输入cat > filename << EOF之后,cat命令开始接收键盘的输入,当我们用键盘输入一些字符后,当输入EOF后,cat命令就终止接收键盘的输入了。这里面的EOF也可以是其他的字符,但大家习惯用EOF。也就是说<<可以定义一个终止输入的标记。

 

原创粉丝点击