小测试理解UNIX数据流流重定向/dev/null 2>&1
时间:2007-10-21 来源:deeperpurple
拿这位老兄的帖作为学习资源http://www.rainway.org/index.php/2004/10/28/unix-stdout/
UNIX有几种输入输出流,它们分别与几个数字有如下的对应关系:0-标准输入流(stdin),1-标准输出流(stdout),2-标准错误流(stderr)。
测试脚本如下:
#cat std.sh
#!/bin/sh
echo "stdout"
echo "stderr" >&2
开始测试,先从简单的来
# ./std.sh
stdout
stderr
###########在这里,终端屏幕上显示的实际是标准输出流“stdout”和标准错误流"stderr",因为脚本里第二句做了重定向。
# ./std.sh 2>/dev/null
stdout
###########这句就容易理解了,因为把标准错误流的结果重定向到/dev/null。
# ./std.sh >/dev/null
stderr
###########同上,因为标准输出流重定向到/dev/null,标准错误流还是要返回到屏幕。
下面我们搞复杂点,借用原文的测试,再加几个测试,就更容易理解了。
UNIX有几种输入输出流,它们分别与几个数字有如下的对应关系:0-标准输入流(stdin),1-标准输出流(stdout),2-标准错误流(stderr)。
测试脚本如下:
#cat std.sh
#!/bin/sh
echo "stdout"
echo "stderr" >&2
开始测试,先从简单的来
# ./std.sh
stdout
stderr
###########在这里,终端屏幕上显示的实际是标准输出流“stdout”和标准错误流"stderr",因为脚本里第二句做了重定向。
# ./std.sh 2>/dev/null
stdout
###########这句就容易理解了,因为把标准错误流的结果重定向到/dev/null。
# ./std.sh >/dev/null
stderr
###########同上,因为标准输出流重定向到/dev/null,标准错误流还是要返回到屏幕。
下面我们搞复杂点,借用原文的测试,再加几个测试,就更容易理解了。
#/bin/sh std.sh 2>&1 > /dev/null
stderr
#/bin.sh std.sh 2>&1 2>/dev/null
stdout
#/bin/sh std.sh 1>&2 > /dev/null
stderr
#/bin/sh std.sh 1>&2 2>/dev/null
stdout
#/bin/sh std.sh > /dev/null 2>&1
#/bin/sh std.sh > /dev/null 1>&2
stdout
stderr
相关阅读 更多 +