screenrcで動的に生成されたログファイルはHardstatusに表示されます。

screenrcで動的に生成されたログファイルはHardstatusに表示されます。

GNU画面ログファイルのファイル名として、起動時に日付と時刻の組み合わせを使用したいと思います。 screenrcで次のように入力すると

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

次のように動的に生成されたファイルを取得します。

screen_nanna13_06062012_08:03-bash.0

これで、画面のハードステータスバーにそのファイル名が表示されます。利用できません

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

時間が変わるたびにプレースホルダが更新されるからです。

私が考えることができるソリューションには、画面が起動する前に実行されるbashコードが含まれていますが、個々の画面ウィンドウは独自の動的ログファイルを取得する必要があるため、これはお勧めできません。

画面に変数置換メカニズムがありますか?

ベストアンサー1

screenコマンドを使用して解決策を見つけました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変数にロードします。唯一の問題は、セッション中に後で新しいウィンドウが作成されると、ログファイル名の日付が変更されないことです(しかし、私はこれがそのログファイルをよりよく識別できるようにするので、機能でもあります)。

おすすめ記事