在硬状态中显示的 screenrc 中动态生成的日志文件

thi*_*ias 8 gnu-screen

我想在启动时使用日期和时间的组合作为 GNU 屏幕日志文件的文件名。在 screenrc 中,如果我把

logfile '~/log/screen_%H_%m%d%Y_%0c-%t.%n'
Run Code Online (Sandbox Code Playgroud)

我得到一个动态生成的文件,例如

screen_nanna13_06062012_08:03-bash.0
Run Code Online (Sandbox Code Playgroud)

现在我希望 screen 在硬件状态栏中显示这个文件名。我不能使用

hardstatus string '~/log/screen_%H_%m%d%Y_%0c-%t.%n'
Run Code Online (Sandbox Code Playgroud)

因为只要时间改变,占位符就会更新。

我可以提出的解决方案涉及在屏幕启动之前执行的 bash 代码,但这并不好,因为单独的屏幕窗口应该获得自己的动态日志文件。

屏幕中有变量替换机制吗?

thi*_*ias 1

我找到了使用 screenbacktick命令的解决方案:

backtick 1 0 0 date +%d%b%Y_%k:%M
logfile '~/log/%H_%1`-%t.%n'
hardstatus string '~/log/%H_%1`-%t.%n'
Run Code Online (Sandbox Code Playgroud)

使用 UNIX date 命令将当前日期/时间加载到 %1` 变量中。唯一的问题是,如果稍后在会话期间创建新窗口,日志文件名称中的日期不会更改(但对我来说,这甚至是一个功能,因为它允许更好地识别相应的日志文件)。