当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请问1>&2 2>&1 <&m [n]>&m [n]<&- [n]>&-的作用和区别
帖子发表于 : 2011-03-31 18:40 

注册: 2010-11-27 22:20
帖子: 76
送出感谢: 0 次
接收感谢: 0 次
书是这么说的
1>&2 将命令的标注输出重定向到标准错误输出
2>&1 声明文件描述符2为文件描述符1的副本
<&m 从文件描述符m复制标准输入
[n]>&m 从文件描述符复制标准输入或者文件描述符n(如果命令中指定了n)
[n]<&- 关闭标准输入或者文件描述符n(如果指定了n)
[n]>&- 关闭标准输出或者文件描述符n(如果指定了n)

书中描述我看不明白……他也没有举具体的例子,请问哪个大侠可以帮忙通过例子来解释一下?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 请问1>&2 2>&1 <&m [n]>&m [n]<&- [n]>&-的作用和区别
帖子发表于 : 2011-04-07 17:24 

注册: 2010-11-27 22:20
帖子: 76
送出感谢: 0 次
接收感谢: 0 次
是不是太难了?还是这表示法根本不存在?


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 请问1>&2 2>&1 <&m [n]>&m [n]<&- [n]>&-的作用和区别
帖子发表于 : 2011-04-07 21:40 

注册: 2009-07-01 22:04
帖子: 919
送出感谢: 0 次
接收感谢: 13
自己去看,动手试试,真不明白再问。
http://www.cnblogs.com/chengmo/tag/shell/


_________________
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 请问1>&2 2>&1 <&m [n]>&m [n]<&- [n]>&-的作用和区别
帖子发表于 : 2011-04-19 23:18 

注册: 2011-04-07 21:47
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
其实很简单,首先默认情况下0,1,2是stdin, stdout, stderr的fd, 然后< > 分别是重定向输入及输出
使用时要确认当前的fd是指向哪里的,因为有可能0,1,2之前被重定向过了

eg: echo Hello >/dev/null 这里stdout指向了/dev/null所以没有输出
echo Hello 1>&2 这里stdout指向了stderr, 也没有输出,但在log文件里可以看到
printf "%v\n error"> testfile 2>&1 这里stdout指向了testfile, 之后stderr重定向到stdout的当前位置,也就是testfile
这里也可以直接用&>>testfile 将stdout及stderr都指向同一个文件testfile

可以自己指定文件描述符,比如
Swap Standard Output and Standard Error,通过指定fd 3实现
$ command 3>&2 2>&1 1>&3

至于关闭重定向那个就是字面意思了,比较简单


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Google [Bot] 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译