你可以重定向STDERR进行整个Bash会话吗?

时间:2015-10-01 14:40:27

标签: bash stderr

关于为单个命令或脚本重定向CONFIG += sharedstderr,有很多问题。我想要的是将任何stderr消息从我的Bash会话重定向到日志文件。

我想要一个交互式bash会话,其中所有stdout都会重定向到一个文件。

3 个答案:

答案 0 :(得分:6)

处理问题的可怕方法:

oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(DestFolder).items
  • exec 3>&2 trap 'exec 2>>/path/to/your_file' DEBUG PROMPT_COMMAND='exec 2>&3' :我们先将fd 2复制到新的fd(此处为fd 3)
  • exec 3>&2:在执行每个命令之前(如果设置了shell选项trap 'exec 2>/dev/null' DEBUG,这是交互式shell中的默认值),则会执行extdebug陷阱:此处我们重定向DEBUG到文件stderr(确保您提供绝对路径)。
  • 在显示每个提示之前,Bash执行/path/to/your_file变量中的字符串:这里我们将fd2重定向到fd3(当fd3指向终端时,fd3是fd2的副本)。这是打印提示符所必需的。

我不认为这是一种强大或好的方法,但它可能会为你的目的做好准备。

答案 1 :(得分:0)

exec 2> elsewhere

或重定向调用命令。

答案 2 :(得分:-4)

不是一个确切的答案,但这是我使用的。它将在屏幕上显示STDERR并将所有STDOUT和STDERR记录到日志中:

eval $1 2>&1 >>~/max.log | tee --append ~/bash.log