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

Ror*_*raΖ 6 bash stderr

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

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

gni*_*urf 7

处理问题的可怕方法:

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

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

  • 有时黑客是完成工作的唯一方法+1 (2认同)