这里有很多线程讨论如何为脚本或cmdline执行此操作(主要涉及管道,重定向,tee)。 我没有找到的是一个可以设置一次然后只是全局工作的解决方案,无需操作单个脚本或向每个命令行添加内容。
我想要实现的是在最佳答案中描述的内容 How do I write stderr to a file while using "tee" with a pipe?
是否可以配置bash会话以便将所有stderr输出记录到文件中,同时仍将其写入控制台?我可以添加到.bashrc中的东西,因此每次登录时都会自动设置?
软件:Bash 4.2.24(1)-release(x86_64-pc-linux-gnu),xterm,Ubuntu 12.04
答案 0 :(得分:0)
在@ 0xC0000022L之前的解决方案中尝试此变体(将其放在.bash_profile
中):
exec 2> >( tee log.file > /dev/tty )
有几点需要注意:
提示和您在命令行输入的任何内容都会打印到stderr,因此会记录在您的文件中。
换行符可能存在问题,终止未在终端中显示的命令;我在我的Linux主机上观察它,但在Mac OS X笔记本电脑上没有。也许其他人可以解释和/或解决问题。例如,如果我输入“echo stdout”,我会看到以下内容:
$ echo stdoutstdout
$