分页: 1 / 1

2>&1 >&0 这些是啥意思?

发表于 : 2008-10-21 14:54
死亡阴影
首先是原文描述
n<&- 关闭输入文件描述符 n.
0<&-, <&- 关闭 stdin.
n>&- 关闭输出文件描述符 n.
1>&-, >&- 关闭 stdout.

子进程继承了打开的文件描述符. 这就是为什么管道可以工作. 如果想阻止 fd 被继承, 那么可
以关掉它.


exec 3>&1 # 保存当前 stdout 的"值".

ls -l 2>&1 >&3 3>&- | grep bad 3>&- # 对'grep'关闭 fd 3(但不关闭'ls').

exec 3>&-



我的测试如下:
ls -l 2>&1 >&3 3>&- | grep test #成功禁止了grep
ls -l 2>&1 >&3| grep test #成功禁止了grep
ls -l 2>&1 | grep test #成功禁止了grep
ls -l 2>&1 >&0 | grep test #禁止了grep ,0 1 2 3 都有显示,4就错误了

ls -l 2>&1- | grep test #啥也没
ls -l 2>&2- | grep test #grep出来了


:em20
没搞明白他们的逻辑关系,请问各位大大是怎么回事阿~~

Re: 2>&1 >&0 这些是啥意思?

发表于 : 2008-10-21 15:35
windwiny
这有什么用??


有需求的时候再去学这些东西


pg 1> /tmp/log.std # 标准输出 stdout改向
pg 2> /tmp/log.err # 标准错误 stderr改向
pg &> /tmp/log # 上面两个一起改向 stdout,stderr
pg >> /tmp/log # 标准输出改向追加
pg 1>> /tmp/log 2>&1 # 标准输出,错误改向追加

Re: 2>&1 >&0 这些是啥意思?

发表于 : 2008-10-21 20:22
死亡阴影
pg的使用没看懂... :em06
其实最大的问题在于
1>&1
2>&2
1>&1-
的&1,&1- 和前面的0 1 2是啥?

Re: 2>&1 >&0 这些是啥意思?

发表于 : 2008-10-21 21:23
c\nc
那些是FD,楼主要去查资料了,这里说不清楚的。

Re: 2>&1 >&0 这些是啥意思?

发表于 : 2008-10-21 21:36
yjcong
我在想当时, linus设计linux结构的时候, 有想到这些吗?还是后来补充上去的?

Re: 2>&1 >&0 这些是啥意思?

发表于 : 2008-10-25 11:27
死亡阴影
现在有一定的了解了,我会把我探索到的于大家分享