标签:file 执行 提示 shell 标准输入 rect stdin std lin
今天我们来说说数据流重定向吧,我也是刚看完这段,想来总结下:
1. 标准输入 (stdin) :代码为 0 ,使用 < 或 <<
2. 标准输出 (stdout)\(standard output):代码为 1 ,使用 > 或 >>
3. 标准错误输出(stderr)\(standard error output):代码为 2 ,使用 2> 或 2>>
1> :以覆盖的方法将“正确的数据”输出到指定的文件或设备上;
1>>:以累加的方法将“正确的数据”输出到指定的文件或设备上;
2> :以覆盖的方法将“错误的数据”输出到指定的文件或设备上;
2>>:以累加的方法将“错误的数据”输出到指定的文件或设备上;
当我们在linux的shell里面执行一些指令的时候,指令执行完成后会有一些正确的或者错误的结果显示在屏幕上,以便我们去发现问题出在哪里?
比如:
[root@localhost ~ 07:52 #45]$cat /etc/crontab /etc/test
由于后面那个文件是不存在的,执行完成后屏幕上会有 cat: /etc/vbirdsay: No such file or directory的提示。那么我们应该要怎么处理这种情况,让shell里只出现正确的执行结果呢?
[root@localhost ~ 07:53 #45]$cat /etc/crontab /etc/test 2> /dev/null
这么操作的话在我们的屏幕上就只显示正确的执行结果了。
这里涉及到/dev/null,黑洞,为什么叫黑洞呢?顾名思义就是吞噬,你有啥不要的玩意都可以往这里头扔。是不是很强大呢。
想象一下,如果我知道错误讯息会发生,所以要将错误讯息忽略掉而不显示或储存呢? 这个时候黑洞设备 /dev/null 就很重要了!这个 /dev/null 可以吃掉任何导向这个设备的信息
这里有一种特殊的写法:2>&1 和 &> !
2>&1 : 2为错误输出 &1 - 等效于标准输出
如:还是以上面的命令为例。
[root@localhost ~ 07:57 #46]$cat /etc/crontab /etc/test >/dev/null 2>&1
这条命令执行完成后,是没有任何输出的。标准输出1是可以省略的,这里可以看出,2>&1的意思是:标准错误输出等效于标准输出。
写到这里,小白文,希望能帮到一些人。。。
标签:file 执行 提示 shell 标准输入 rect stdin std lin
原文地址:http://blog.51cto.com/13849422/2135788