免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9244 | 回复: 10
打印 上一主题 下一主题

关于>&2、2>&1等重定向的详细解释 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-28 16:33 |只看该作者 |倒序浏览
在POSIX shell中,命令的结果可以通过%>的形式来定义(其中%表示文件描述符:1为标准输出stdout、2为标准错误stderr)!系统默认%值是1,也就是1>,而1>可以简写为>,也就是默认为>。而stdout的默认目标是终端(这点不用验证吧)。另外,stderr的默认目标我个人认为也是终端,比如:
#abcddcba
sh: abcddcba: not found.
错误信息显示在终端上(对于telnet、dtterm等,那就说虚拟终端了)。

==============实验环境==============
#mkdir redtest
#cd redtest
#mkdir a4
#touch a1 a2 a3

==============简单试验==============
#ls >redout.lst (等同于ls 1>redout.lst,标准输出重定向)
系统先执行>redout.lst,生成一个空文件,然后系统执行ls,再把结果重定向到redout.lst。这时在终端看不到任何信息,但是#more redout.lst可以看到a1、a2、a3、a4和redout.lst。
#./ourgame 2>rederr.lst (标准错误重定向)
因为系统找不到执行脚本ourgame,产生错误,但并不是显示在终端上,而是把错误信息重定向到了rederr.lst。
#more rederr.lst
sh: ourgame: not found.
==============组合试验==============
#rm rederr.lst
#rm redout.lst
#vi conj
#!/usr/bin/sh
#Email:webmaster@myhpux.com
for FN in `ls`
do
if [[ -f $FN ]]
then
echo $FN
else
cp $FN $FN.new
fi
done
//conj的作用是执行以后产生标准输出(echo)和标准错误(cp)
#chmod 755 conj
看看一下命令的结果:
#./conj
a1 //stdout
a2 //stdout
a3 //stdout
cp: a4: is a directory. Need "-R" option.//stderr
conj //stdout
再试试重定向的结果:
(1)、输出重定向到文件a1,终端上只能看到标准错误:
#./conj >a1
#./conj 1>a1
#more a1
a1
a2
a3
conj
(2)、错误重定向到文件a1,终端上只能看到标准输出:
#./conj 2>a1
#more a1
cp: a4: is a directory. Need "-R" option.
(3)、把标准输出和标准错误都重定向到a1,终端上看不到任何信息:
#./conf >a1 2>&1 (等同于#./conf 1>a1 2>&1)
#more a1
a1
a2
a3
cp: a4: is a directory. Need "-R" option.
conj
//其中&的意思,可以看成是“The same as”、“与...一样”的意思。本例中就是2>和1>一样,都输出到a1中。
再看一个例子:
#./conj 2>&1 >a1
同样可以解释为2>和1>一样,但是这时1>是系统默认输出到终端,所以标准错误也输出到终端;然后,系统把标准输出重定向到文件a1。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-10-28 19:19 |只看该作者

关于>&2、2>&1等重定向的详细解释

顶一个!不错!!!

论坛徽章:
0
3 [报告]
发表于 2004-10-28 22:31 |只看该作者

关于>&2、2>&1等重定向的详细解释

以下是《UNIX环境高级编程》对 2>&1 的解释:

a.out > outfile 2>&1
    首先设置标准输出到outfile,然后执行dups将标准输出复制到描述符2(标准错误)上,其结果是将标准输出和标准错误设置为相同的文件,即描述符1和2指向相同的文件表项。而对于命令行
a.out 2>&1 >outfile
    由于首先执行dups,所以描述符2成为终端(假设命令是交互执行的),标准输出重定向到outfile。结果是描述符1指向outfile的文件表项,描述符2指向终端的文件表项。

论坛徽章:
0
4 [报告]
发表于 2004-10-29 09:10 |只看该作者

关于>&2、2>&1等重定向的详细解释

楼主,帮你顶一个!

论坛徽章:
0
5 [报告]
发表于 2004-10-29 09:31 |只看该作者

关于>&2、2>&1等重定向的详细解释

谢谢烈火兄和JACK兄.哈哈.我自己也来顶一下.希望对大家有帮助.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-10-29 11:39 |只看该作者

关于>&2、2>&1等重定向的详细解释

好文不顶,是犯罪呀!!!

论坛徽章:
0
7 [报告]
发表于 2004-10-29 11:45 |只看该作者

关于>&2、2>&1等重定向的详细解释

我看明白了,俩人串通的!互顶~~~

不顶白不顶~~~(下不为例)

论坛徽章:
0
8 [报告]
发表于 2004-10-29 11:49 |只看该作者

关于>&2、2>&1等重定向的详细解释

一定要定,不顶都不好意思了。

论坛徽章:
0
9 [报告]
发表于 2004-10-29 15:37 |只看该作者

关于>&2、2>&1等重定向的详细解释

原帖由 "xchen301" 发表:
我看明白了,俩人串通的!互顶~~~

不顶白不顶~~~(下不为例)

这你也看得出来,我服了你.

论坛徽章:
0
10 [报告]
发表于 2004-10-29 16:12 |只看该作者

关于>&2、2>&1等重定向的详细解释

顶一下,前不久刚看,巩固一下。哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP