当 stdout 和 stderr 都重定向到 /dev/null 时,GnuPG 如何输出到控制台

当 stdout 和 stderr 都重定向到 /dev/null 时,GnuPG 如何输出到控制台

例子 :

bash$ gpg --batch --edit-key alice quit >/dev/null 2>&1
Secret key is available.

pub  2048R/9F07612A  created: 2017-06-20  expires: never       usage: SCEA
                     trust: ultimate      validity: ultimate
sub  2048R/23B3A24B  created: 2017-06-20  expires: never       usage: SEA 
[ultimate] (1). alice (alice's key) <[email protected]>

我知道使用--batch就能完成这项工作。

但我的问题更多“GnuPG 是如何实现这一点的 '无论如何输出' 特征”

答案1

可能通过写信给/dev/tty或类似的方式,就是这样ssh

$ hi() { echo hello > /dev/tty; }
$ hi &>/dev/null 
hello

至少在 Linux 上,打开/dev/tty 打开进程的控制终端

相关内容