динамически генерируемый лог-файл в screenrc, показанный в hardstatus

8

Я хочу использовать комбинацию даты и времени при запуске в качестве имени файла для файла журнала экрана GNU. В screenrc, если я поставлю

logfile '~/log/screen_%H_%m%d%Y_%0c-%t.%n'

Я получаю динамически сгенерированный файл, например

screen_nanna13_06062012_08:03-bash.0

Теперь я хочу, чтобы на экране отображалось это имя файла в строке hardstatus. Я не могу использовать

hardstatus string '~/log/screen_%H_%m%d%Y_%0c-%t.%n'

потому что заполнители обновляются при изменении времени.

Решения, которые я могу предложить, включают в себя bash-код, выполняемый перед запуском экрана, но это не очень хорошо, потому что отдельные окна экрана должны получать свой собственный динамический лог-файл.

Есть ли механизм замены переменных на экране?

thias
источник

Ответы:

1

Я нашел решение, используя backtickкоманду экрана :

backtick 1 0 0 date +%d%b%Y_%k:%M
logfile '~/log/%H_%1`-%t.%n'
hardstatus string '~/log/%H_%1`-%t.%n'

использует команду даты UNIX для загрузки текущей даты / времени в переменную% 1`. Единственная проблема заключается в том, что дата не изменяется в имени файла журнала в случае, если позднее во время сеанса создается новое окно (но для меня это даже особенность, поскольку она позволяет лучше идентифицировать соответствующий файл журнала).

thias
источник