2

这里有很多线程讨论如何为脚本或 cmdline 执行此操作(主要涉及管道、重定向、三通)。我没有找到一种解决方案,它可以设置一次,然后在全局范围内工作,无需操作单个脚本或向每个命令行添加一些内容。

我想要实现的是类似于 如何在使用“tee”和管道时将标准错误写入文件的最佳答案中所述的内容?

是否可以配置 bash 会话,以便将所有 stderr 输出记录到文件中,同时仍将其写入控制台?我可以添加到 .bashrc 并因此在我每次登录时自动设置的东西?

软件:Bash 4.2.24(1)-release (x86_64-pc-linux-gnu)、xterm、Ubuntu 12.04

4

1 回答 1

0

在@0xC0000022L 以前的解决方案上尝试这个变体(把它放在你的.bash_profile):

exec 2> >( tee log.file > /dev/tty )

几个警告:

  1. 提示和您在命令行键入的任何内容都会打印到 stderr,因此将记录在您的文件中。

  2. 终止未显示在终端中的命令的换行符可能存在问题;我在我的 Linux 主机上观察到它,但在我的 Mac OS X 笔记本电脑上没有。也许其他人可以解释和/或解决问题。例如,如果我输入“echo stdout”,我会看到以下内容:

    $ echo stdoutstdout
    $
    
于 2012-07-06T18:01:15.680 回答