我想在启动时使用日期和时间的组合作为 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 代码,但这并不好,因为单独的屏幕窗口应该获得自己的动态日志文件。
屏幕中有变量替换机制吗?
我找到了使用 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` 变量中。唯一的问题是,如果稍后在会话期间创建新窗口,日志文件名称中的日期不会更改(但对我来说,这甚至是一个功能,因为它允许更好地识别相应的日志文件)。