stderr 永久转移到 /dev/tty12

stderr 永久转移到 /dev/tty12

我想将 stderr 永久重定向到 /dev/tty12,这样当我在 tty1 中执行某些操作时,错误消息就不会触动我的神经。

重定向应该通过 init.d 或 ~/.bashrc 或 ~./bash_profile。仅一次。

可以做到吗?如何做到?

答案1

这似乎是一个非常糟糕的想法,而且我怀疑系统是否提供了实现此方法的方法。

每当创建一个进程时,调用进程都会确定其 stdin、stdout 和 stderr 的指向位置。必须有一种通用方法来覆盖它——而且它会破坏任何明确重定向 stderr 的机制。

例如,如果您输入:

some_command >some_command.out 2>some_command.err

的 stderr应该some_command转到some_command.err,还是/dev/tty12

我能想到的最接近的事情就是调用一个重定向了 stderr 的 shell:

bash -l 2>/dev/tty12

在我的(简短)实验中(重定向到文件而不是 tty),这会导致 shell 无法交互。添加-i会强制它进行交互 - 但 shell 提示符显然会打印到 stderr。

当然,您可以将 stderr 重定向到单个命令(假设您没有使用cshtcsh):

some_command 2>some_command.err

你也可以定义一个 shell 函数来为你做这些事情:

e() { "$@" 2>/dev/tty12 ; }

然后,对于每个想要重定向 stderr 的命令,只需e在命令前面添加:

e some_command

答案2

许多 shell 将其交互提示写入 stderr,因此如果您将 shell 的 stderr 重定向到 ,则与 shell 交互时可能会遇到麻烦/dev/tty12。此外,错误消息很重要。为什么要忽略它们?

相关内容