是否有一个文件名可以分配给一个变量(即不是一个神奇的内置 shell 令牌,比如&1
),让我重定向到stdout
?
我最终想要做的是在 cron 脚本中运行这样的东西:
LOG=/tmp/some_file
...
some_command 2>&1 >> $LOG
echo "blah" >> $LOG
...
/dev/null
方便的是,当我确定没有任何事情会失败(或者,至少没有我关心的事情!)时,我可以通过重定向来关闭日志噪音,而无需重写整个脚本。是的,关闭日志记录并不是最佳实践——但是一旦这个脚本工作,就没有多少可以想象的错误了,并且不希望使用没有人想要读取的兆字节日志信息来破坏磁盘。
如果 5 年后出现意外故障,仍然可以通过拨动开关再次打开日志记录。
另一方面,在编写和调试脚本时,需要从 shell 手动调用它,如果它可以将输出转储到控制台,那就太好了。这样我就不需要tail
手动记录日志文件。
换句话说,我正在寻找的是/proc/self/fd/0
我可以分配给 bash-talk的东西LOG
。碰巧,/proc/self/fd/0
在我的 Linux 机器上工作得很好,但我想知道 bash 中是否还没有内置这样的东西(这通常是可取的)。