Shell:将stdout重定向到 devnull,将stderr重定向到stdout

Shell:将stdout重定向到 devnull,将stderr重定向到stdout,第1张

Shell:将stdout重定向到/ dev / null,将stderr重定向到stdout

你要

./script 2>&1 1>/dev/null | ./other-script

这里的顺序很重要。假设stdin(fd 0),stdout(fd 1)和stderr(fd 2)最初都连接到tty,因此

0: /dev/tty, 1: /dev/tty, 2: /dev/tty

首先要设置的是管道。other脚本的stdin连接到管道,而script的stdout连接到管道,因此到目前为止,脚本的文件描述符如下:

0: /dev/tty, 1: pipe, 2: /dev/tty

接下来,发生重定向,从左到右。

2>&1
使fd 2移至fd 1当前所在的位置,即管道。

0: /dev/tty, 1: pipe, 2: pipe

最后,

1>/dev/null
将fd1重定向到
/dev/null

0: /dev/tty, 1: /dev/null, 2: pipe

最终结果是,脚本的stdout被静默,并且其stderr通过管道发送,该管道最终在其他脚本的stdin中。

另请参见http://bash-
hackers.org/wiki/doku.php/howto/redirection_tutorial

还要注意,它

1>/dev/null
是的同义词,但比
>/dev/null



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5012252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存