- 主题:问个重定向问题grep da * > greplog2 1>&2
grep da * > greplog2 1>&2
应该是 把1输出到文件 然后把1用2的文件操作符替换
为啥会greplog2 啥也没有
--
FROM 106.38.48.*
https://www.jb51.net/article/106373.htm那么我们同样从左到右地来分析2>&1 >/dev/null:
2>&1,将错误输出绑定到标准输出上。由于此时的标准输出是默认值,也就是输出到屏幕,所以错误输出会输出到屏幕。
按照你的分析 这个的解释就不对了啊
【 在 ArchLinux 的大作中提到: 】
: 你这个相当于执行了
: fd = open("greplog2")
: dup2(fd,1)
: ...................
--
FROM 106.38.48.*
>/dev/null,就是让1指向/dev/null,从而变成 1->/dev/null, 2->stdout
这个不是同时改变 1 2 。 我理解错了
------------
2>&1 >/dev/null 的过程是这样的:
没重定向的时候,是 1->stdout, 2->stderr
2>&1,就是让2指向1指向的文件,从而变成 1,2->stdout,关闭stderr
>/dev/null,就是让1指向/dev/null,从而变成 1->/dev/null, 2->stdout
最终结果就是程序的标准输出输出到/dev/null,标准错误输出输出到标准输出。
【 在 ArchLinux 的大作中提到: 】
: 2>&1 >/dev/null 的过程是这样的:
: 没重定向的时候,是 1->stdout, 2->stderr
: 2>&1,就是让2指向1指向的文件,从而变成 1,2->stdout,关闭stderr
: ...................
--
FROM 106.38.48.*
grep da * > greplog2 1>&2
这个理解过程
1 --> greplog2
然后 1--> 2
两个有矛盾 以最后为准 所以 greplog2 是空的?
【 在 ArchLinux 的大作中提到: 】
: 2>&1 >/dev/null 的过程是这样的:
: 没重定向的时候,是 1->stdout, 2->stderr
: 2>&1,就是让2指向1指向的文件,从而变成 1,2->stdout,关闭stderr
: ...................
--
FROM 106.38.48.*
这个解释好!!
【 在 ArchLinux 的大作中提到: 】
: 2>&1 >/dev/null 的过程是这样的:
: 没重定向的时候,是 1->stdout, 2->stderr
: 2>&1,就是让2指向1指向的文件,从而变成 1,2->stdout,关闭stderr
: ...................
--
FROM 106.38.48.*