如何将输出从 /dev/tty 重定向到 /dev/null?

如何将输出从 /dev/tty 重定向到 /dev/null?

hello我有一个包含以下代码的可执行脚本,

#!/bin/bash
echo "hello" > /dev/tty

我想将其输出重定向到/dev/null.

./hello > /dev/null 2>&1

不起作用,因为它仅重定向stdoutstderr

我找到了两个答案,声称这可以使用script命令来完成,但他们没有解释如何做。

https://unix.stackexchange.com/a/297237/421466

https://unix.stackexchange.com/a/296108/421466

或者有没有其他方法可以抑制其输出?

答案1

改变脚本

假设文件描述符 3 尚未使用:

#!/bin/bash
exec 3>/dev/tty
#exec 3>/dev/null
echo "hello" >&3

你打开fd 3 到/dev/tty/dev/null,轻松切换。然后全部替换> /dev/tty>&3.

不改变脚本

脚本之外的解决方案是创建一个挂载命名空间 ( man unshare),mount --bind /dev/null /dev/tty在其中执行,然后在那里运行未修改的脚本。

相关内容