首页新闻找找看学习计划

1>&2,2>&1的形象理解

0
悬赏园豆:10 [待解决问题]

最近在学习linux的过程对

1>&2,2>&1

的理解不是很清楚,始终不知道具体用法和使用场景到底是什么?希望能得到解答,感谢!!!

7haoyu.cn的主页 7haoyu.cn | 初学一级 | 园豆:138
提问于:2019-08-01 14:06
< >
分享
所有回答(1)
0

1 跟 2 都是文件描述符,1 代表标准输出(STDOUT),2 代表标准错误输出(STDERR)。>& 的作用是把一个文件描述符指向到另一文件描述符。

例如,我有个程序:foo。我希望把 foo 的所有输出存储到文件中,那么我可以这么做:

$ foo 1>&foo-out.log 2>&1

那么这里的意思就是,先把 1 (STDOUT)重定向到 foo-out.log 这个文件,然后把 2(STDERR)重定向到 1。这样,foo 的全部输出就都被我们存储到文件中去了。

另一种使用场景就是利用管道符(|)传递所有的输出,因为 | 的作用是将前一个命令的 STDOUT 对接到下一个命令的 STDIN 上,所以,前一个命令的 STDERR 就无法通过 | 传递,为了解决这个问题,可以这样做:

$ foo 2>&1 | less
不如隐茶去 | 园豆:524 (小虾三级) | 2019-08-01 15:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册