将所有stderr记录到文件和控制台
有大量线程讨论如何为脚本或cmdline(主要涉及管道,重定向,tee)执行此操作。 我没有找到的是一种解决方案,可以设置一次,然后在全局范围内工作,不需要操作单个脚本或向每个命令行添加内容。将所有stderr记录到文件和控制台
我想达到的目标是一样的东西在 How do I write stderr to a file while using "tee" with a pipe?
顶端回答所描述的不是它可以配置bash命令,使所有标准错误输出记录到文件中,同时仍然将其写入安慰?什么我可以添加到.bashrc,并因此每次我登录时自动设置?
软件:猛砸4.2.24(1)-release下(x86_64-PC-Linux的GNU),xterm中,Ubuntu的12.04
尝试在@ 0xC0000022L以前的解决方案(把它放在你的.bash_profile
)这种变化:
exec 2> >(tee log.file > /dev/tty)
需要注意几个问题:
你在命令行中键入的提示和任何打印到stderr,因此会在你的文件中记录。
-
可能有一个问题,换行符终止命令不显示在您的终端;我在我的Linux主机上观察它,但不是在我的Mac OS X笔记本电脑上。也许别人可以解释和/或解决这个问题。例如,如果我输入“回声标准输出”,我看到以下内容:
$ echo stdoutstdout $
附加到'/ dev/tty'以避免丢失换行符(我不知道为什么)。 'exec 2>>(tee -a log.file >>/dev/tty)'您还需要使用'-a'附加到日志文件。 – 2012-07-06 18:38:44
heureka!注意:该文件可能会写入一些延迟。在我的第一次快速测试中,只有在关闭会话后才被刷新。如果我发现任何问题,我会报告回来。谢谢! – 2012-07-07 20:24:58
你是对的,道歉。我所描述的方法只适用于连接管道,而不是为了您想要的目的。我很茫然。删除了我的答案。 – 0xC0000022L 2012-07-06 17:30:23
我不知道如何做只有'stderr',但我知道如何做所有输出显示。这对你有用吗? – cha0site 2012-07-06 18:05:38